1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 100 int main() { int score[N] ,i,a,n,sum=0,max,min,I=0,L=0; float ave; printf("输入学生数为:(n<=100)"); scanf("%d",&n); printf("输入成绩: "); scanf("%d",&a); score[0]=a; sum+=a; max=score[0]; min=score[0]; for(i=1;i<n;i++) { printf("输入成绩: "); scanf("%d",&a); score[i]=a; sum+=a; if(score[i]>max) { max=score[i]; I=i; } if(score[i]<min) { min=score[i]; L=i; } } ave=(float)sum/n; printf("平均数为%.2f,最高分为%d,是第%d个",ave,max,I+1); for(i=I+1;i<n;i++) { if(score[i]==max) printf(",第%d个 ",i+1); } printf(" 最低分为%d,是第%d个",min,L+1); for(i=L+1;i<n;i++) { if(score[i]==min) printf(",第%d个 ",i+1); } printf(" 输入一个查询的成绩: "); scanf("%d",&a); for(i=0;i<n;i++) { if(score[i]==a) { printf(" 第%d个 ",i+1); } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> int main() { int xu[10]={3,5,7,9,11,13,15,17,19},a,i,l,y; printf("输入一个数"); scanf("%d",&a); for(i=0;i<10;i++) { if(a>=xu[8]) { xu[9]=a; break; } if(a<xu[i]) { for(l=9;l>i;l--) { xu[l]=xu[l-1]; } xu[i]=a; break; } } for(y=0;y<10;y++) { printf("%d ",xu[y]); } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> int main() { int match[10]={6,2,5,5,4,5,6,3,7,6},a,b,c; for(a=0;a<10;a++) { for(b=0;b<10;b++) { c=a+b; if(match[a]+match[b]+match[c]==12&&c<10) { printf("%d+%d=%d ",a,b,c); } } } return 0; }
知识点总结:
1.数组的特点:数组中的每一个元素都属于同一种数据类型;数组一旦创建,不能改变大小;数组中的元素在内存中是连续依次排列的。
2.一维数组的引用:数组必须先定义,后使用;只能逐个引用数组元素,不能一次引用整个数组;每个数组元素是一个数组类型的变量。
3.一维数组的赋值:数组不初始化,其元素值为随机数;只给部分数组元素赋初值,则其后的元素被初始化为0;当全部数组元素赋初值时,可不指定数组长度。
实验总结:1.数组名【 】,【】中不能为变量
2.数组下标从0开始
3.数组离不开循环,让数组里的元素全部输出必须借助循环