第八次实验
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include <stdio.h> #define N 10000 int main() { int a[N],s,d,sum=0,ren,max,min,f=0,g=0,h; float average; printf("请输入学生人数\n"); scanf("%d",&ren); for(s=0;s<ren;s++) { printf("请输入学生的分数:\n"); scanf("%d",&a[s]); } for(s=0;s<ren;s++) { sum+=a[s]; } average=(float)sum/ren; printf("平均分是%f\n",average); max=a[0]; for(s=0;s<ren;s++) { if(a[s]>max) { max=a[s]; f=s+1; } } printf("成绩最高为%d分,他是第%d个同学\n",max,f); min=a[0]; for(s=0;s<ren;s++) { if(a[s]<=min) { min=a[s]; g=s+1; } } printf("成绩最低为%d分,他是第%d个同学\n",min,g); printf("请输入一个学生的成绩:\n"); scanf("%d",&h); for(s=0;s<ren;s++) { if(h==a[s]) { g=s+1; printf("这是第%d个学生的成绩\n",g); } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include <stdio.h> #define N 11 int main() { int a,groupe[N]={1,3,5,7,9,11,13,15,17,26},s,d,b; printf("原数组为:1,3,5,7,9,11,13,15,17,26\n"); printf("请输入你要插入的数字:\n"); scanf("%d",&a); for(s=0;s<N-1;s++) { if(a<groupe[s]) { d=s; break; } } b=N-1; for(s=b;s>=d;s--) { groupe[s+1]=groupe[s]; } groupe[d]=a; printf("新的数组为:"); for(s=0;s<N;s++) { printf("%d ",groupe[s]); } return 0; }
3.用数组实现火柴棍等式
#include <stdio.h> int main() { int a,s,d,match[10]={6,2,5,5,4,5,6,3,7,6}; { for(a=0;a<=9;a++) { for(s=0;s<=9;s++) { for(d=0;d<=9;d++) { if(match[a]+match[s]+match[d]==12&&a+s==d) { printf("%d+%d=%d\n",a,s,d); } } } } } return 0; }
知识点总结:
1、为了更改方便,一般在主函数前定义#define N ** 这样便于改变N值
2、数组一般从a【0】开始
3、int a[0] a代表数组名(地址常量)
实验总结:
1、注意C不会做越界检查
2、数组名不能被赋初值