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