c语言。20个人,5门课程,计算每个人的平均成绩及每门课的平均成绩,输出不及格学生名单,成绩排序,

c语言。20个人,5门课程,计算每个人的平均成绩及每门课的平均成绩,输出不及格学生名单,成绩排序,使用数组实现,学号输出

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

struct stu

{int id;

 int cj[5];

 int zf;

};

int main()

{int i,j,k;

struct stu a[21]={0},b;

 srand(time(NULL));

 for(i=0;i<20;i++)

 {a[i].id=i+1;

  for(j=0;j<5;j++)

  {a[i].cj[j]=rand()%61+40;

   a[i].zf+=a[i].cj[j];

   a[20].cj[j]+=a[i].cj[j];

  }

  a[20].zf+=a[i].zf;

 }

 for(i=0;i<19;i++)

for(j=0;j<19-i;j++)

if(a[j].zf<a[j+1].zf)

{b=a[j];a[j]=a[j+1];a[j+1]=b;}

 printf("    学号 学科1 学科2 学科3 学科4 学科5 平均分\n");

 for(i=0;i<20;i++)

 printf("%7d%6d%6d%6d%6d%6d%7.1f\n",a[i].id,a[i].cj[0],a[i].cj[1],a[i].cj[2],a[i].cj[3],a[i].cj[4],a[i].zf/5.0);

 i=20;

 printf("%7s%6.1f%6.1f%6.1f%6.1f%6.1f%7.1f\n","平均分",a[i].cj[0]/20.0,a[i].cj[1]/20.0,a[i].cj[2]/20.0,a[i].cj[3]/20.0,a[i].cj[4]/20.0,a[i].zf/100.0);

 printf("不及格学生学号:");

 for(i=0;i<20;i++)

 {k=0;

  for(j=0;j<5;j++)

 if(a[i].cj[j]<60)k=1;

  if(k)printf("%3d",a[i].id);

 }

 printf("\n");

 return 0;

}

追问

功能都能实现吧

追答

都有图了,不是一目了然了吗?

追问

好的,谢谢你了

追答

满意请采纳。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-07-02
#include<stdio.h>

int main()
{
float stu[10][5];
float a[10];
int i,j;
float sum,ave;
for (i=0; i<10; i++) {
printf("输入第%d个学生的成绩:",i+1);
for (j=0; j<5; j++) {
scanf("%f",&stu[i][j]);
}
}
for (i=0; i<10; i++) {
sum=0;
for (j=0; j<5; j++) {
sum=sum+stu[i][j];
}
printf("第%d个学生的平均分:%.2f\n",i+1,ave=sum/5);
a[i]=ave;
}
for (i=0; i<5; i++) {
sum=0;
for (j=0; j<10; j++) {
sum=sum+stu[j][i];
}
printf("第%d科成绩平均分:%.2f\n",i+1,ave=sum/10);
}
ave=0;
for (i=0; i<10; i++) {
ave=ave+a[i];
}
ave=ave/10;
sum=0;
for (i=0; i<10; i++) {
sum=sum+(a[i]-ave)*(a[i]-ave);
}
printf("平均方差:%f\n",sum/10);
return 0;
}

输入输出数据测试:
输入第1个学生的成绩:44 66 33 55 22

输入第2个学生的成绩:88 44 88 34 66

输入第3个学生的成绩:24 77 44 88 33

输入第4个学生的成绩:56 33 56 67 78

输入第5个学生的成绩:54 44 23 55 66

输入第6个学生的成绩:23 45 54 22 16

输入第7个学生的成绩:55 88 77 55 99

输入第8个学生的成绩:77 57 98 76 98

输入第9个学生的成绩:77 86 47 84 87

输入第10个学生的成绩:100 100 100 99 99

第1个学生的平均分:44.00

第2个学生的平均分:64.00

第3个学生的平均分:53.20

第4个学生的平均分:58.00

第5个学生的平均分:48.40

第6个学生的平均分:32.00

第7个学生的平均分:74.80

第8个学生的平均分:81.20

第9个学生的平均分:76.20

第10个学生的平均分:99.60

第1科成绩平均分:59.80

第2科成绩平均分:64.00

第3科成绩平均分:62.00

第4科成绩平均分:63.50

第5科成绩平均分:66.40

平均方差:364.128357
第2个回答  2017-07-01
#include <iostream>
int main()
{
double Average[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
for (int i=0;i<20;i++)
{
for(int i1=0;i1<5;i1++)
{
int point[5]={0,0,0,0,0};
scanf("%d",point[i1]);
int count+=point[i1];

}
double Average[i]=count/5;

}
for(int i=0;i<20 ;i++)
{
if(Average[i]<60)
{
printf("bujige:\n");
printf("%lf\n",Average[i]);
}
}
for(int i=0;i<20 ;i++)
{
if(Average[i]<Average[i+1])
{
double t=Average[i];
Average[i+1]=Average[i];
Average[i+1]=t;
}
for(int i1=1;i1<21 ;i1++)
{
if(Average[i1]< Average[i1+i])
{
break;
}
else
{
continue;
}
}
break;

}
}
第3个回答  推荐于2017-07-02
五门课成绩是分开存放还是存放五门课的总分?
如果是分开存放的话可以定义一个包含20个元素的结构体数组
结构体中存储五门课程成绩
如果是存储总分的话一般数组即可完成

如果代码不想自己写的话
我可以有偿代劳追问

分开,可以给我写一下吗?

追答

可以,有偿代劳

追问

想要什么偿?

追答

支付宝10元帮你搞定

本回答被网友采纳
相似回答