c语言数组 .arr,5.C语言数组

  • Post author:
  • Post category:其他


==============

数组

==============

数组

1.一维数组

2.数组排序

3.二维数组

一、什么是数组?

把具有相同类型的数据集合在一个连续的空间中。

二、一维数组

1.如何定义一维数组

用一个下标定位的数组。

2.一维数组的下标

从0开始,数组长度-1;

3.一维数组的赋值

4.越界访问

练习:

1》对一个长度为5的整型数组赋初值,并输出数组元素。

int arr[5] = {1,2,3,4,5};

// printf(“数组元素为:\n”);

// for (int i=0; i<5; i++) {

// printf(“%d “,arr[i]);

// }

2》对一个长度为5的浮点型数组赋值,并逆序输出数组元素。

float arr[5];

// printf(“请输入5个小数:”);

// for (int i=0; i<5; i++) {

// scanf(“%f”,&arr[i]);

// }

//

// printf(“数组元素为:”);

// for (int i=4; i>=0; i–) {

// printf(“%.2f “,arr[i]);

// }

3》求5个同学的总成绩、平均成绩、最高成绩、最低成绩。

float score[5],sum=0,avg,max,min;

// printf(“请输入5个成绩:\n”);

// //循环遍历数组

// for (int i=0; i<5; i++) {

// printf(“请输入第%d个成绩:”,i+1);

// scanf(“%f”,&score[i]);//输入成绩

// sum+=score[i]; //求出总成绩

// }

// avg=sum/5; //求出平均成绩

// max=min=score[0]; //将第一个成绩赋值给最大最小的变量、

// //遍历数组

// for (int i=1; i<5; i++) {

// //比较求出最大值

// if (max

// max=score[i];

// }

// //比较求出最小值

// if (min>score[i]) {

// min=score[i];

// }

// }

// //输出最终结果

// printf(“总成绩为:%.2f\n平均成绩为:%.2f\n最高成绩为:%.2f\n最低成绩为:%.2f\n”,sum,avg,max,min);

4》输入10个数,打印出所有低于平均数的数。

// int arr[10],sum=0;

// float avg;

// printf(“请输入10个整数:”);

// for (int i=0; i<10; i++) {

// scanf(“%d”,&arr[i]);

// sum+=arr[i];

// }

// avg = sum/10.0;

// for (int i=0; i<10; i++) {

// if (arr[i]

// printf(“%d “,arr[i]);

// }

// }

5》对一个长度为5的整型数组赋值,并将数组中的元素逆序

int arr[5];

printf(“请输入5个整数:”);

for (int i=0; i<5; i++) {

scanf(“%d”,&arr[i]);

}

//遍历数组:只遍历一半,因为数组元素前后都要交换。

for (int i=0; i<5/2; i++) {

//交换前后元素

int t = arr[i];

arr[i]=arr[5-1-i]; // 5 2 3 4 1

arr[5-1-i]=t;

}

printf(“数组元素如下:”);

for (int i=0; i<5; i++) {

printf(“%d “,arr[i]);

}

}

存放并输出。

三、数组排序

1.选择法

1.选择法

int arr[5]={8,6,13,5,3};

for (int i=0; i<5-1; i++) {

for (int j=i+1;j<5;j++){

if (arr[i]>arr[j]) {

int t=arr[i];

arr[i]=arr[j];

arr[j]=t;

}

}

}

for (int i=0; i<5; i++) {

printf(“%d “,arr[i]);

}

2.冒泡法

// 冒泡法

int arr[5]={1,2,0,2,5};

//从后往前

for (int i=1; i<5; i++) { //控制比较次数

//遍历数组

for (int j=5; j>=i; j–) {

if (arr[j]

int t=arr[j];

arr[j]=arr[j-1];

arr[j-1]=t;

}

}

}

//从前往后

/* for (int i=0; i<4; i++) {//控制比较次数

for (int j=0; j<5-1-i; j++) {//从前往后遍历

if (arr[j]>arr[j+1]) {

//交换

int t= arr[j];

arr[j]=arr[j+1];

arr[j+1]=t;

}

}

}

*/

printf(“数组元素如下 :”);

for (int i=0; i<5; i++) {

printf(“%d “,arr[i]);

}

}

练习:

1》输入5个学生的成绩,由高到低排序后输出

四、二维数组

1.如何定义二维数组

2.二维数组的下标

3.二维数组的赋值

练习:

1》对一个长度为3行2列的整型数组赋初值,并输出数组元素。

2》对一个长度为2行3列的浮点型数组赋值,并逆序输出数组元素。

3》分别求出两个班10个同学(每个班5个同学)的总成绩、平均成绩、最高成绩、最低成绩。

4》定义一个3行3列的整型数组并赋值,求出对角线的元素之和。

5》定义一个3行3列的整型数组并赋值,输出下列图形:

123 147 987 963

456 258 654 852

789 369 321 741