早教吧 育儿知识 作业答案 考试题库 百科 知识分享

函数编程练习学生成绩统计(一维数组)从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:(1)统计不及格人数并打印不

题目详情
函数编程练习
学生成绩统计(一维数组)
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下:
分数段 学生人数 图形
<60 3(10%) ***
60-69 8(…) ********
70-79 7(…) *******
80-89 8(…) ********
>=90 4(…) ****

会的帮一下,记得用函数!
谢谢,不过不用结构更好
▼优质解答
答案和解析
这回改了一下,把结构去掉了。
#include
#include
#define NUM 30
char student_name[NUM][10];
int student_flag[NUM];
int student_grade[NUM];
int totle=0;
void UnderLine();/*统计不及格人数并打印不及格学生名单*/
void UpLine();/*统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单*/
void Figure();/*以直方图方式统计各分数段的学生人数及所占的百分比*/
int main()
{
int i=0;
int choice;
printf("输入学生姓名和成绩(中间用空格隔开):\n");
for(i=0;i {
scanf("%s",student_name[i]);
scanf("%d",&student_grade[i]);
if(student_grade[i]==-1)
break;
}
totle=i;
printf("选择功能:\n【0】退出\n【1】统计不及格人数并打印不及格学生名单\n");
printf("【2】统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单\n");
printf("【3】以直方图方式统计各分数段的学生人数及所占的百分比\n");
while(1)
{
scanf("%d",&choice);
switch(choice)
{
case 0:
exit(0);
break;
case 1:
UnderLine();
printf("请选择:");
break;
case 2:
UpLine();
printf("请选择:");
break;
case 3:
Figure();
printf("请选择:");
break;
}
}
return 0;
}
void UnderLine()
{
int i,cnt=0;
for(i=0;i {
if(student_grade[i]<60)
{
cnt++;
student_flag[i]=1;
}
}
printf("不及格人数:\t%d\n【名单及分数】\n",cnt);
for(i=0;i {
if(student_flag[i]==1)
printf("%s\t%d\n",student_name[i],student_grade[i]);
}

}
void UpLine()
{
int i,cnt=0;
double avg=0;
for(i=0;i avg+=student_grade[i];
avg/=totle;
printf("平均分:\t%.2f\n",avg);
for(i=0;i {
if(student_grade[i]>=avg){
student_flag[i]=2;
cnt++;
}
}
printf("在全班平均分及平均分之上的学生人数:\t%d\n【名单及分数】\n",cnt);
for(i=0;i {
if(student_flag[i]==2)
printf("%s\t%d\n",student_name[i],student_grade[i]);
}
}
void Figure()
{
int cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0;
int i;
for(i=0;i {
if(student_grade[i]<60)
{
student_flag[i]=1;
cnt1++;
}
else if(student_grade[i]>=60&&student_grade[i]<70)
{
student_flag[i]=2;
cnt2++;
}
else if(student_grade[i]>=70&&student_grade[i]<80)
{
student_flag[i]=3;
cnt3++;
}
else if(student_grade[i]>=80&&student_grade[i]<90)
{
student_flag[i]=4;
cnt4++;
}
else if(student_grade[i]>=90)
{
student_flag[i]=5;
cnt5++;
}
}
printf("分数段\t学生人数\t图形\n");
printf("<60\t%d(%.2f%%)\t",cnt1,(double)100*cnt1/totle);
for(i=0;i printf("\n");
printf("60-69\t%d(%.2f%%)\t",cnt2,(double)100*cnt2/totle);
for(i=0;i printf("\n");
printf("70-79\t%d(%.2f%%)\t",cnt3,(double)100*cnt3/totle);
for(i=0;i printf("\n");
printf("80-89\t%d(%.2f%%)\t",cnt4,(double)100*cnt4/totle);
for(i=0;i printf("\n");
printf(">=90\t%d(%.2f%%)\t",cnt5,(double)100*cnt5/totle);
for(i=0;i printf("\n");
}
看了 函数编程练习学生成绩统计(一...的网友还看了以下: