c语言用while输入n个成绩,输出他们的等级划分,并统计人数
- 资格考试
- 2022-11-23 07:56:30
C语音~~输入N位学生的成绩,统计各分数段人数,统计结果存入数组,并输出
数组在定义的时候是要定义大小的。我理解的你的意思是:先输入要统计的学生的数目N,也既是定义一个大小为N的数组,有一个偷懒的方法就是你预先定义一个很大的数组,远超过你能使用的极限,比如你可能统计100人的成绩,你可以预先定义一个大小为1000的数组来存储成绩,这样就可以用for循环了,只是在输入成绩的时候你要有一个判断来告诉程序你的输入结束,比如当你输入的成绩超过100时判定输入结束。但是这样的定义浪费了内存。 更好的方法是动态建立一个数组,我用C++实现,下面是程序,你看看 #includec语言编程,输入n个学生的成绩,以输入-1表示输入结束,输出学生的人数,总分(不显示小数)及平均值(...
#include
#include
intmain()
{
inti=0;//学生人数计数器
floatn;
doublesum=0;
printf("请依次输入学生成绩以-1结束:\n");
while(n!=-1)
{
scanf("%f",&n);
sum=sum+n;
i++;
}//当i==-1时sum-1且i+1所以下边总分要是i-1,总分为sum+1;时间不够没改到很好见谅
printf("学生人数:%d\n",i-1);
printf("总分:%.0f\n",sum+1);//
printf("平均分:%.2f\n",(sum+1)/(i-1));
return0;
}
c语言求助 输入n个学生的考试成绩,求出其中最高分、最低分以及超过平均分的人数(使用动态分配)
你想输入多少输入多少,我就输入4个分数测试。
#include
#include
typedefstructstud
{
intscore;
structstud*next;
}STD;
STD*insertScore(STD*stdHead,STD*stdTail);//录入成绩
voidprintfSTD(STD*stdHead);//打印链表数据
int*tjSTD(STD*stdHead);//统计返回[3]数组,分别表示最高分最低分超过平均分人数
intmain()
{
int*redata=NULL;
STD*stdHead=(STD*)malloc(sizeof(STD));
stdHead->next=NULL;
STD*stdTail=NULL;
do{
stdTail=insertScore(stdHead,stdTail);
}while(stdTail);
printfSTD(stdHead);
redata=tjSTD(stdHead);
printf("最高分:%d,最低分:%d,超过平均分的人数:%d\n",redata[0],redata[1],redata[2]);
return0;
}
voidprintfSTD(STD*stdHead)//打印数据
{
while(stdHead->next!=NULL)
{
printf("%d\n",stdHead->next->score);
stdHead=stdHead->next;
}
}
int*tjSTD(STD*stdHead)//统计返回[3]数组,分别表示最高分最低分超过平均分人数
{
intmax=-1,min=-1,sum=0,count=0,*reData;
floatave;
STD*stdHeadSave=stdHead;
reData=(int*)malloc(sizeof(int)*3);
while(stdHead->next!=NULL)
{
if(max==-1||maxnext->score)
max=stdHead->next->score;
if(min==-1||min>stdHead->next->score)
min=stdHead->next->score;
sum=sum+stdHead->next->score;
count++;
stdHead=stdHead->next;
}
ave=(float)sum/count;
printf("总人数:%d,平均分:%f\n",count,ave);
count=0;
stdHead=stdHeadSave;
while(stdHead->next!=NULL)
{
if(stdHead->next->score>ave)
count++;//大于平均分的人数
stdHead=stdHead->next;
}
reData[0]=max;reData[1]=min;reData[2]=count;
returnreData;
}
STD*insertScore(STD*stdHead,STD*stdTail)//录入成绩
{
intscore;
printf("输入成绩(输入-1结束录入):");
scanf("%d",&score);
if(score==-1)
returnNULL;
STD*stdNew=(STD*)malloc(sizeof(STD));
stdNew->score=score;
stdNew->next=NULL;
if(stdHead->next==NULL)
stdHead->next=stdNew;
else
stdTail->next=stdNew;
stdTail=stdNew;
returnstdTail;
}
c语言1)按成绩高低排序,输出排序后的成绩;2)统计并输出不及格成绩、人数;3)输出最高分、最低分?
根据题目中信息所示:仅输入一科目成绩;人数不作为参数输入;
现在假设:及格线为60分(题目未明确给出)
#include
//#include< cstring>
//#include
typedef struct {
int grade;
}student;
//选择排序
void selectSort(student stu[10],int n){
for(int i=0;i<=n;i++)
{int k=i;
for(int j=k+1;j<=n;j++){
if(stu[j].grade>stu[k].grade)
{k=j;
}}
int temp=stu[i].grade;
stu[i].grade=stu[k].grade;
stu[k].grade=temp;}}
//数据输出
void display(student stu[10],int n)
{
for(int j=0;j
printf("%d ",stu[j].grade);
printf("\n");}
//数据最大值与最小值
void poll_values(student stu[2],int n){
printf("%d %d",stu[0].grade,stu[n].grade);
printf("\n");
}
int main(){
student stu[10];
student fail[10];
student poll[2];
int n=0;//总人数
int m=0;//不及格人数
while(n<10){
scanf("%d",&stu[n].grade);
if(stu[n].grade<0){
break;
}
++n;}
selectSort(stu,n);
//--------------------------------------
for(int i=0;i
if(stu[i].grade<60){
fail[m]=stu[i];
++m;}
selectSort(fail,m);
display(stu,n);
display(fail,m);
poll[0]=stu[0];
poll[1]=stu[n-1];
display(poll,2);
//poll_values(stu,n)
return 0;
}
运行结果如下
输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计各等级成绩的个数
#include
main()
{
int n,i;
int A=0,B=0,C=0,D=0,E=0;//用来统计各阶段学生成绩的人数,初始值都为0;
float score;//定义成绩变量;
float ave=0;//定义平均成绩
float num=0;//定义全部成绩总和
scanf("%d",&n);//从键盘输入学生成绩的个数
for(i=1;i<=n;i++)
{
scanf("%f",&score);//输入每个学生的成绩,共有n个学生
num+=score;//计算总成绩
switch(score)//switch 语句来计算各个分数段的成绩个数
{
case score>=90&&score<=100:A++;
case score>=80&&score<=89:B++;
case score>=70&&score<=79:C++;
case score>=60&&score<=69:D++;
case score>=0&&score<=59:E++;
default:break;
}
}
ave=num/n;//计算平均成绩
printf("%f",ave);//输出平均成绩
printf("%d",A);//输出成绩在90-100的个数
printf("%d",B);//输出成绩在80-89的个数
printf("%d",C);//输出成绩在70-79的个数
printf("%d",D);//输出成绩在60-69的个数
printf("%d",E);//输出成绩在0-59的个数
}
扩展资料:
正整数,为大于0的整数,也是正数与整数的交集。正整数又可分为质数,1和合数。正整数可带正号(+),也可以不带。如:+1、+6、3、5,这些都是正整数。 0既不是正整数,也不是负整数(0是整数)。
以0为界限,将整数分为三大类:
1、正整数,即大于0的整数,如,1,2,3…
2、0既不是正整数,也不是负整数(0是整数)。
3、负整数,即小于0的整数,如,-1,-2,-3…
参考资料来源:百度百科-正整数
上一篇
一级消防工程师的报名流程是什么?
下一篇
计算机考试求答案!