该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
简答题】
实验任务:学生成绩统计
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)统计各分数段的学生人数及所占的百分比。(0-59 60-74 75-84 85-100)
实验要求:
1. 将以上三个功能的函数存储在文件chengji.c 文件中,将函数的声明存储在chengji.h头文件中;
3. 要求有良好的输入输出人机交互设计,程序尽量具有容错能力。
相关提示:数组作为函数参数的定义方法:
主调函数中定义一维数组 inta[30]; 作为实参;
函数定义: int func(int a[]) 表示形参为一维数组。
注意:如果被调函数中对作为形参的数组中的数据值进行了改变,则主调函数的数组实参值被改变了,因为数组名是内存地址。
#include
int main()
{
int s[30];
int i, m = 0;
for (i = 0; i < 30;i++) {
scanf_s("%d", &s[i]);
m++;
if (s[i] < 0)
break;
}
int count1 = 0;
printf(" 不及格学生名单:");
for (i = 0; i < m -1; i++) {
if (s[i] < 60) {
printf("%d ", i);
count1++;
}
}
printf("\n 不及格人数为:%d\n", count1);
double average;
int count2 = 0 , sum =0;
for (i = 0; i < m -1; i++) {
sum+= s[i];
}
average= sum * 1.0 / m;
printf(" 成绩在全班平均分及平均分之上的学生名单:");
for (i = 0; i < m -1; i++) {
if (s[i] >=average)
printf("%d ", i);
count2++;
}
printf("\n 成绩在全班平均分及平均分之上的学生人数为:%d\n", count2);
int A=0, B=0, C=0, D=0;
double a, b, c, d;
for (i = 0; i < m -1; i++) {
if (s[i] >= 85&& s[i] <= 100)
A++;
if (s[i] >= 75&& s[i] <= 84)
B++;
if (s[i] >= 60&& s[i] <= 74)
C++;
if (s[i] <= 59)
D++;
}
a= A * 1.0 / m;
b= B * 1.0 / m;
c= C * 1.0 / m;
d= D * 1.0 / m;
printf(" 85-100分数段的学生人数及所占的百分比为:%lf\n 75-84分数段的学生人数及所占的百分比为:%lf\n 60-74分数段的学生人数及所占的百分比为:%lf\n 0-60分数段的学生人数及所占的百分比为:%lf\n", a, b, c, d);
return 0;
}