当前位置:首页 > 资格考试 > 正文

c语言用while输入n个成绩,输出他们的等级划分,并统计人数

C语音~~输入N位学生的成绩,统计各分数段人数,统计结果存入数组,并输出

数组在定义的时候是要定义大小的。我理解的你的意思是:先输入要统计的学生的数目N,也既是定义一个大小为N的数组,有一个偷懒的方法就是你预先定义一个很大的数组,远超过你能使用的极限,比如你可能统计100人的成绩,你可以预先定义一个大小为1000的数组来存储成绩,这样就可以用for循环了,只是在输入成绩的时候你要有一个判断来告诉程序你的输入结束,比如当你输入的成绩超过100时判定输入结束。但是这样的定义浪费了内存。 更好的方法是动态建立一个数组,我用C++实现,下面是程序,你看看 #include using namespace std; int main() { int i,

c语言编程,输入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…

参考资料来源:百度百科-正整数

展开全文阅读