早教吧作业答案频道 -->其他-->
函数编程练习学生成绩统计(一维数组)从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:(1)统计不及格人数并打印不
题目详情
函数编程练习
学生成绩统计(一维数组)
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下:
分数段 学生人数 图形
<60 3(10%) ***
60-69 8(…) ********
70-79 7(…) *******
80-89 8(…) ********
>=90 4(…) ****
会的帮一下,记得用函数!
谢谢,不过不用结构更好
学生成绩统计(一维数组)
从键盘输入一个班(全班最多不超过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");
}
#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/=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("60-69\t%d(%.2f%%)\t",cnt2,(double)100*cnt2/totle);
for(i=0;i
printf("70-79\t%d(%.2f%%)\t",cnt3,(double)100*cnt3/totle);
for(i=0;i
printf("80-89\t%d(%.2f%%)\t",cnt4,(double)100*cnt4/totle);
for(i=0;i
printf(">=90\t%d(%.2f%%)\t",cnt5,(double)100*cnt5/totle);
for(i=0;i
}
看了 函数编程练习学生成绩统计(一...的网友还看了以下:
如图所示,理想变压器的副线圈通过输电线接两个并联的支路,其中变阻器的总电阻值大于定值电阻的阻值,输 2020-04-08 …
输入输出接口是PNP、NPN型是什么意思,它和3极管PNP、NPN什么区别?我们说的输入输出接口是 2020-05-17 …
如图示甲离子运输过程,据图分析正确的是()A.脂肪酸分子与甲的运输方式相同B.该运输过程相当于放能 2020-06-16 …
有关物质进出细胞的方式判断正确的是()A.依据是否消耗能量判断,只要运输过程中耗能的就是主动运输B 2020-07-12 …
要发送的数据为1101011011.采用CRC的生成多项式是P(X)=(X的4次方)+X+11试求 2020-07-14 …
假设法解题某运输公司为商场运送1000个玻璃杯,双方商定每个玻璃杯运费为1元,如果打碎1个,运输公司 2020-11-07 …
1.有三个整数a,b,c,由键盘输入,输出其中最大的数.用伪代码写出该问题的算法.2.给定四个函数y 2020-11-20 …
1.一次投入总数的一半,赢则为总数的25%,输就输光投入的也就总数的50%.2.下一次投入为上一次盈 2020-12-12 …
A市准备将一批水果运往B市销售,有火车和汽车两种运输方式,运输总支出=运费+装卸费用+运输过程中的损 2020-12-29 …
图1是细胞膜的结构及物质的跨膜运输过程的示意图,其中的c过程是水分子通过的过程;图2是某种物质跨膜运 2021-01-05 …