1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 1000 int main() { int sum=0,a=1,b=1,c,d,e=0,i,max,min,score[N]; float average; i=0; printf("请输入学生的成绩,输入负数时退出 "); scanf("%d",&score[i]); e++; while(score[i]>=0) { sum=sum+score[i]; i++; printf("请输入学生的成绩,输入负数时退出 "); scanf("%d",&score[i]); e++; } average=(float)sum/i; printf("平均分为%.2f ",average); i=0; max=score[0]; min=score[0]; while(score[i]>=0&&i<=e) { if(score[i]>max) { max=score[i]; } if(score[i]<min) { min=score[i]; } i++; } i=0; while(score[i]>=0&&i<=e) { if(score[i]==max) { printf("最高分是第%d个学生 ",i+1); } if(score[i]==min) { printf("最低分是第%d个学生 ",i+1); } i++; } printf("最高分为%d 最低分为%d ",max,min); printf("请输入一个学生的成绩 "); scanf("%d",&c); for(i=0;i<N;i++) { if(score[i]==c) { d=i+1; printf("这是第%d个学生 ",d); } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> #define N 11 int main() { int a,b,c,d,i; int number[10]={2,4,6,8,10,12,14,16,18,20}; printf("请输入要插入的数 "); scanf("%d",&a); for(i=0;i<N;i++) { if(a<number[i]) { b=i; printf("插入到第%d位 ",b+1); break; } } if(a>=number[i]) { b=10; printf("插入到第%d位 ",b+1); } for(i=9;i>b-1;i--) { number[i+1]=number[i]; } number[b]=a; for(i=0;i<=10;i++) { printf("% d",number[i]); } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> #define N 10 int main() { int x,y,z,a,b,c,i; int number[10]={6,2,5,5,4,5,6,3,7,6}; for(x=0;x<=9;x++) { a=number[x]; for(y=0;y<=9;y++) { b=number[y]; for(z=0;z<=9;z++) { c=number[z]; if(z==x+y) { if(a+b+c==12) { printf("%d+%d=%d ",x,y,z); } } } } } return 0; }
知识点总结:
1.数组先定义后使用,最好用#define宏定义,只能逐个引用数组元素
2.数组的表示方式 数组名[下标] 下标是从零开始的
3.数组中的每一个元素都属于同一种数据类型
4.数组创建后不能改变大小,元素在内存中按顺序排列
实验总结:
1.输出学生成绩时对应数组下标要加一,因为下标是从零开始
2.输出最高分和最低分时,有可能有多个学生
3.在一个数组中插入数时,先将数组中的元素向前或向后移动