早教吧作业答案频道 -->其他-->
函数编程练习学生成绩统计(一维数组)从键盘输入一个班(全班最多不超过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
}
看了 函数编程练习学生成绩统计(一...的网友还看了以下:
把0、1、2、3、4、5、6、7、8、9这九个数字填入九宫格中,把每行每列以及每条对角线上的三个数 2020-04-05 …
3个数学问题(做好给30)①有下列各数:4、负3、0、负6分之1、0.3、负5%、负3又7分之1、 2020-05-21 …
小王上周五在股市内以收盘价(收市时的价格)每股25元买时某公司1000股,在接下来的一周交易日内, 2020-06-03 …
电管员负责签发防爆设备入井合格证,不合格的防爆设备严禁入井。 2020-06-07 …
将-七分之二,负七分之一,0,七分之一,七分之二,七分之三,七分之四,七分之五,七分之六,这九个数 2020-06-10 …
幂的运算,譬如像0.6的2分之一次方,0.6的负0.6次方,还有负0.6的0.5次方,负0.6的负 2020-06-27 …
初一题目初中把负一二负三四负五六负七八负九十填入九字格要满足每行没列每条对角线乘机都是负数 2020-07-12 …
比负1小,比负2大的数有哪些?各五个.比5分之1小,比负5分之1大的数:比0小,比负0.1大的数: 2020-07-30 …
小王上周五在股市内以收盘价(收市时的价格)每股25元买时某公司1000股,在接下来的一周交易日内,小 2020-11-06 …
在一原电池中,将银片插入0.1mol/l的硝酸银溶液中为正极,同时将硫化氢气体通入溶液中,至溶液硫化 2021-01-14 …