==============
数组
==============
数组
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