这不是占坑:这不是占坑:这不是占坑:重要的事情说三遍!!!
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
# include<stdio.h> # define N 9999 int main() { int a,b,d,i,sum=0,max,min,m=0,e=0; double average; int sore[N]; printf("请输入人数 "); scanf("%d",&b); for(i=0;i<b;i++) { printf("输入学生成绩 "); scanf("%d",&sore[i]); sum=sum+sore[i]; } average=(double)sum/b; printf("平均数为%.2f ",average); max=sore[0]; min=sore[0]; for(i=0;i<b;i++) { if(sore[i]>=max) { e=i+1; } } for(i=0;i<b;i++) { if(min>=sore[i]) { m=i+1; } } printf("最大分数的学生为%d ",e); printf("最小分数的学生为%d ",m); printf("输入一个分数,输出他是谁 "); scanf("%d",&d); for(i=0;i<b;i++) { if(sore[i]==d) { printf("他是%d ",i+1); break; } } return 0; }
3.用数组实现火柴棍等式
# include <stdio.h> int main() { int a,b,sum; int match[10]={6,2,5,5,4,5,6,3,7,6}; for(a=0;a<=9;a++) { for(b=0;b<=9;b++) { sum=a+b; if(sum>9) { break; } if(match[a]+match[b]+match[sum]==12) { printf("%d+%d=%d ",a,b,sum); } } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
# include<stdio.h> # define N 10 int main() { int a,b,c,d,e,i; int shu[N]={1,3,5,7,9,11,13,15,17}; printf("输入一个数1,3,5,7,9,11,13,15,17 "); scanf("%d",&a); for(i=0;i<N;i++) { if(shu[i]>=a) { b=i; printf("%d ",b); break; } if(a>shu[N-1]) { shu[N-1]=a; } } for(i=b,c=N-1;i<=c;c--) { shu[c]=shu[c-1]; } shu[b]=a; for(i=0;i<N;i++) { printf("%d ",shu[i]); } return 0; }
附加题
输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…
# include<stdio.h> int main() { int a,b,shu[10]={0}; char e; printf("输入一串数 "); do{ scanf("%c",&e); b=e-48; shu[b]++; }while(e!=' '); for(a=0;a<10;a++) { printf("这个数%d,共有%d个 ",a,shu[a]); } return 0; }
知识点总结:
1.数组和变量一样应该先定义后使用,数组和变量一样有整型,字符型,浮点型等,使用数组需要定义一个数组名和数组元素的个数,
2.数组必须遵循标识符命名规则,数组是有顺序的,有数组的下标变量,从零开始 格式数组名[下标]
3.有数组就有循环, 不赋值的数组为随机数, #define符号常量可以在开始应用,
4.常量变达式用方括号括起来,注意下标不要越界,
实验总结:
1.附加题不会瞄了一眼,
2.对于有些题看见是就是一脸懵连思路都没有,没办法,有的时候只能放下,过一段时间说不定会有新思路,
3.第一题运行不来时返回去检查居然发现
scanf("%d",&sore[i]);这里写错了,非常简单的错误,找了半天才看见,
4.在第二题中数组退一位想半天才想出来,在草稿纸上写了半天,