求C语言编程 从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束
分别实现下列功能:(1)统计不及格人数并打印不及格学生名单;(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;(3)以直方图方式统计各分数段的学生人...
分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下:
分数段 学生人数 图形
<60 3(10%) ***
60-69 8(…) ********
70-79 7(…) *******
80-89 8(…) ********
>=90 4(…) **** 展开
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下:
分数段 学生人数 图形
<60 3(10%) ***
60-69 8(…) ********
70-79 7(…) *******
80-89 8(…) ********
>=90 4(…) **** 展开
1个回答
展开全部
#include<stdio.h>
#define N 30
typedef struct student
{
char name[10];
int score;
}STU;
void main()
{
STU s[N];
int n=0;
int i;
int n1=0;
int n2=0;
int n3=0;
int n4=0;
int n5=0;
int n6=0;
int total=0;
float aver;
printf("请输入学生姓名与成绩:");
do
{
scanf("%s",&s[n].name);
scanf("%d",&s[n].score);
n++;
}while(s[n-1].score>=0);
n--;
for(i=0;i<n;i++)
{
total+=s[i].score;
if(s[i].score<60)
n1++;
else if(s[i].score<70)
n2++;
else if(s[i].score<80)
n3++;
else if(s[i].score<90)
n4++;
else
n5++;
}
printf("不及格人数为:%d,名单如下:\n",n1);
for(i=0;i<n;i++)
{
if(s[i].score<60)
printf("%s\t %d\n",s[i].name,s[i].score);
}
aver=(float)total/n;
for(i=0;i<n;i++)
{
if(s[i].score>aver)
n6++;
}
printf("平均分为:%.1f,分数在平均分以上的人数为:%d,名单如下:\n",aver,n6);
for(i=0;i<n;i++)
{
if(s[i].score>aver)
printf("%s\t %d\n",s[i].name,s[i].score);
}
printf("分数段\t学生人数\t图形\n");
printf("<60\t%d(%.1f%%)\t",n1,(float)n1*100/n);
for(i=0;i<n1;i++)
printf("*");
printf("\n");
printf("60~69\t%d(%.1f%%)\t",n2,(float)n2*100/n);
for(i=0;i<n2;i++)
printf("*");
printf("\n");
printf("70~79\t%d(%.1f%%)\t",n3,(float)n3*100/n);
for(i=0;i<n3;i++)
printf("*");
printf("\n");
printf("80~89\t%d(%.1f%%)\t",n4,(float)n4*100/n);
for(i=0;i<n4;i++)
printf("*");
printf("\n");
printf(">=90\t%d(%.1f%%)\t",n5,(float)n5*100/n);
for(i=0;i<n5;i++)
printf("*");
printf("\n");
}
#define N 30
typedef struct student
{
char name[10];
int score;
}STU;
void main()
{
STU s[N];
int n=0;
int i;
int n1=0;
int n2=0;
int n3=0;
int n4=0;
int n5=0;
int n6=0;
int total=0;
float aver;
printf("请输入学生姓名与成绩:");
do
{
scanf("%s",&s[n].name);
scanf("%d",&s[n].score);
n++;
}while(s[n-1].score>=0);
n--;
for(i=0;i<n;i++)
{
total+=s[i].score;
if(s[i].score<60)
n1++;
else if(s[i].score<70)
n2++;
else if(s[i].score<80)
n3++;
else if(s[i].score<90)
n4++;
else
n5++;
}
printf("不及格人数为:%d,名单如下:\n",n1);
for(i=0;i<n;i++)
{
if(s[i].score<60)
printf("%s\t %d\n",s[i].name,s[i].score);
}
aver=(float)total/n;
for(i=0;i<n;i++)
{
if(s[i].score>aver)
n6++;
}
printf("平均分为:%.1f,分数在平均分以上的人数为:%d,名单如下:\n",aver,n6);
for(i=0;i<n;i++)
{
if(s[i].score>aver)
printf("%s\t %d\n",s[i].name,s[i].score);
}
printf("分数段\t学生人数\t图形\n");
printf("<60\t%d(%.1f%%)\t",n1,(float)n1*100/n);
for(i=0;i<n1;i++)
printf("*");
printf("\n");
printf("60~69\t%d(%.1f%%)\t",n2,(float)n2*100/n);
for(i=0;i<n2;i++)
printf("*");
printf("\n");
printf("70~79\t%d(%.1f%%)\t",n3,(float)n3*100/n);
for(i=0;i<n3;i++)
printf("*");
printf("\n");
printf("80~89\t%d(%.1f%%)\t",n4,(float)n4*100/n);
for(i=0;i<n4;i++)
printf("*");
printf("\n");
printf(">=90\t%d(%.1f%%)\t",n5,(float)n5*100/n);
for(i=0;i<n5;i++)
printf("*");
printf("\n");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询