一、实验内容
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 100 int main() { int score[N],n,i,sum,max,min,grade,x; double average; printf("请输入学生的数量。 "); scanf("%d",&n); sum=0; for(i=1;i<=n;i++) { printf("请输入第%d个学生的成绩。 ",i); scanf("%d",&score[i]); sum=sum+score[i]; } average=(double)sum/n; printf("平均成绩为%.2lf ",average); max=score[1]; min=score[1]; for(i=1;i<=n;i++) if(score[i]>max) max=score[i]; if(score[i]<min) min=score[i]; } for(i=1;i<=n;i++) { if(score[i]==max) printf("第%d名学生成绩为最高分。 ",i); } for(i=1;i<=n;i++) { if(score[i]==min) printf("第%d名学生成绩为最低分。 ",i); } printf("输入你查询的成绩。 ",i); scanf("%d",&grade); x=0; for(i=1;i<=n;i++) { if(score[i]==grade) { printf("得这个成绩的学生是%d ",i); x++; } } printf("共有%d名学生。 ",x); return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> #define N 11 int main() { int numbers[N]={1,2,3,4,5,6,7,8,9,10},number,i,n; printf("请输入一个数,插入到数组中。 "); scanf("%d",&number); for(i=0;i<N-1;i++) { if(number<=numbers[i]) { for(n=N-1;n>=i;n--) { numbers[n+1]=numbers[n]; } numbers[i]=number; break; } } while(1)
{
numbers[N-1]=number;
}
for(i=0;i<=10;i++) { printf("%d ",numbers[i]); } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> #define N 10 int main() { int match[N]={6,2,5,5,4,5,6,3,7,6}; int a,b,c,sum; for(a=0;a<=9;a++) for(b=0;b<=9;b++) { c=a+b; if(c>9) break; sum=match[a]+match[b]+match[c]; if(sum==12) printf("%d+%d=%d ",a,b,c); } return 0; }
附加题
输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…
#include<stdio.h> int main() { int numbers[10]={0},a,b,i; char number; printf("请输入一行任意长的数字。 "); while(number!=' ') { scanf("%c",&number); numbers[number-'0']++; } for(i=0;i<10;i++) printf("%d出现了%d次。 ",i,numbers[i]); return 0; }
二、知识点总结
1.#define标识符,替换列表(替换列表可以是数,字符串,标点符号,运算符,标识符,关键字,字符常量。注意替换列表可以为空),典型的使用方法用宏观定义或自己习惯的C语言用法习惯。
2.使用#define声明多行函数与声明单行函数没有本质区别。
3.一维数组定义方式:数据类型 数组名[数组长度],数组的特点:数组中的每一个元素都属于同一种数据类型;数组一旦创建,不能改变大小;数组中的元素在内存中是连续依次排列的。数组:有序数列的集合,用数组名标识;元素:属同一数据类型,用数组名和下标确定。
4.一维数组的使用,数组必须先定义,后使用;只能逐个引用数组元素,不能一次引用整个数组;每个数组元素是一个数组类型的变量。数组元素表示形式:数组名[下标](下标从0开始),引用时下标允许是int型变量或表达式。
三、实验总结(实验中遇到的问题及解决方法)
1.第一道题使用标识符和一维数组,思路大致为先输入学生的数量,再输入成绩,求和求平均值,再求最大最小值,最后按照要求输入想要查询的成绩,以及得分者。编程过程中注意循环,输入输出,大括号的使用。
2.第二道题在一组数组中插入数字,首先声明替换列表,当输入的数字插入时,要从第一个数开始做比较,找到位置后,后边的数要依次后移一位,就相当于numbers[n+1]=numbers[n],合理的使用循环。
3.第三道题数组实现火柴棍等式,使用一维数组,利用循环,求三个数所需的火柴棍数量,做判断输出。
4.附加题要求输入一行数字,判断各数字各出现了几次,利用for(i=0;i<10;i++)的循环,再输出,重要的是编程的思路,想清楚符合和不符合的情况。