1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 50 int main() { int i,n,a,b,c,x,sum,max,min; int num[N]; double ping; printf("请输入一共有多少学生\n"); scanf("%d",&n); sum=0; for(i=0;i<n;i=i+1) { printf("请输入成绩\n"); scanf("%d",&num[i]); } for(i=0;i<n;i=i+1) { sum+=num[i]; } ping=(double)sum/n; printf("平均分是%.2lf\n",ping); max=num[0]; for(i=0;i<n;i=i+1) { if(num[i]>max) { max=num[i]; } } for(i=0;i<n;i=i+1) { if(num[i]==max) { a=i+1; printf("最高分是%d,是第%d个同学\n",max,a); } } min=num[0]; for(i=0;i<n;i=i+1) { if(num[i]<min) { min=num[i]; } } for(i=0;i<n;i++) { if(num[i]==min) { x=i+1; printf("最低分是%d,是第%d个同学\n",min,x); } } printf("输入一个成绩,说明是第几个学生的成绩\n"); scanf("%d",&x); for(i=0;i<n;i=i+1) { if(x==num[i]) { c=i+1; printf("是第%d个学生\n",c); } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
# include <stdio.h> # define N 11 int main () { int a,b,c,d,i; int scare [N]={1,3,5,7,9,11,13,15,17,19}; printf("请插入一个数字:\n"); scanf ("%d",&a); d=11; for (i=0;i<11;i++) { if (a<scare[i]) { d=i+1; printf("插入到%d位\n",d); break; } } for (i=d-1,c=N-1;i<=c;c--) { scare[c]=scare[c-1]; } scare[i]=a; for (i=0;i<N;i++) { printf(" %d",scare[i]); } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> int main() { int gen[10]={6,2,5,5,4,5,6,3,7,6},x,y,z; for(x=0;x<=9;x++) { for(y=0;y<=9;y++) { z=x+y; if(z>9) { break; } if(gen[x]+gen[y]+gen[z]==12) { printf("%d+%d=%d\n",x,y,z); } } } return 0; }
附加题
输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…
#include<stdio.h> int main() { int numbers[10]={0},i; char number; printf("请输入一行任意长的数字。\n"); while(number!=‘\n‘) { scanf("%c",&number); numbers[number-‘0‘]++; } for(i=0;i<10;i++) printf("%d出现了%d次。\n",i,numbers[i]); return 0; }
二、知识点总结
1 数组名中存放的是一个地址常量。
2 数组类型用于指出数组元素的数据类型。
3 数组名与变量名一样,必须遵循标识符命名规则。
三、实验总结(实验中遇到的问题及解决方法)
1 数组名中存放的是常量,也可以提前定义
2 动态赋值通常用循环结构实现
3 存贮单元如果要插入某个数,需要多一位空间
时间: 2024-08-07 07:30:18