C语言数组与函数——第六周数组
初试数组
如何写一个程序计算用户输入的数字的平均数?
方法一:不需要记录输入的每一个数
#includeint main(int argc, char **argv) { int x; double sum = 0; int count=0; double avg = 0; scanf("%d",&x); while(x!=-1){ sum += x; count++; scanf("%d",&x); } if(count>0){ printf("%f\n",avg=sum/count); } return 0; }
如何写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数?
问题:如何记录很多数? 数组
#includeint main(int argc, char **argv) { int x; double sum = 0; int count=0; double avg = 0; int number[100];//定义数组 scanf("%d",&x); while(x!=-1){ number[count] = x;//对数组中的元素赋值 sum += x; count++; scanf("%d",&x); } if(count>0){ printf("平均数:%f\n",avg=sum/count); int i; for(i=0;i ){ if(number[i] > avg){//使用数组中的元素 printf("%d\n",number[i]); } }//遍历数组 } return 0; }
不足:count会不会超过number可以使用的最大下标
定义数组
方法
<类型> 变量名称[元素数量];
int grades[100];
double weight[20];
元素数量必须是整数
特点
其中所有的元素具有相同的数据类型
一旦创建,不能改变大小
数组中的元素在内存中是连续依次排序的
单元
数组的每个单元就是数组类型的一个变量
使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数,有效下标[0,数组的大小-1]
segmentation fault数组越界
数组例子:统计个数
写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束
#includeint main(int argc, char **argv) { int x; int count[10]; int i; for(i=0;i<10;i++){ count[i] = 0; }//数组初始化 scanf("%d",&x); while(x!=-1){ if(x>=0 && x<=9){ count[x]++; } scanf("%d",&x); } for(i=0;i<10;i++){ printf("%d:出现了%d\n",i,count[i]); } return 0; }
优化
#includeint main(int argc, char **argv) { const int number = 10;//数组的大小 int x; int count[number];//定义数组 int i; for(i=0;i ){ count[i] = 0; }//数组初始化 scanf("%d",&x); while(x!=-1){ if(x>=0 && x<=9){ count[x]++;//数组参与运算 } scanf("%d",&x); } for(i=0;i ){ printf("%d:出现了%d\n",i,count[i]); }//遍历数组输出 return 0; }