有10个学生,每个学生数据包括学号,姓名、3门课程的成绩,从键盘输入10个学生的数据,要求输出学生3门课

 我来答
gaozi1012
推荐于2017-09-29 · TA获得超过182个赞
知道答主
回答量:62
采纳率:0%
帮助的人:33.9万
展开全部

代码如下:

#include <stdio.h>

#include <stdlib.h>

struct student {

 char stuNum[20]; //学生学号

 char stuName[20]; //学生姓名

 int stuscore[3]; //学生3门课成绩

};

int main() {

 int i, j;

 student stu[10];

 //为了简单,此处只输入前3个学生的数据。如果要输入10个学生数据,把for中3改成10即可

 for(i = 0; i < 3; i++) {

  printf("请输入第%d个学生学号:", i + 1);

  scanf("%s", stu[i].stuNum);

  printf("请输入第%d个学生姓名:", i + 1);

  scanf("%s", stu[i].stuName);

  printf("请输入第%d个学生的三门课程成绩:", i + 1);

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

   scanf("%d", &stu[i].stuscore[j]);

  printf("\n");

 }

 //输出,此处同样为了简略只输出3个。可以自己改成1个哦

 printf("前3个学生3门课成绩如下:\n");

 for(i = 0; i < 3; i++) {

  printf("第%d个学生3门课成绩为:", i + 1);

  printf("%4d%4d%4d\n", stu[i].stuscore[0], stu[i].stuscore[1], stu[i].stuscore[2]);

 }

}

截图如下:

追问
如果要计算平均值呢,而且输出要按照平均值从大到小输出怎么办?
追答
#include 
#include
#include

struct student {
char stuNum[20]; //学生学号
char stuName[20]; //学生姓名
float stuscore[3]; //学生3门课成绩
float aveScore; //平均成绩
};

//插入排序
void insertSort(student stu[], int N) {
int j, p;

student temp;
for(p = 1; p 0 && stu[j - 1].aveScore > temp.aveScore; j--)
stu[j] = stu[j - 1];
stu[j] = temp;
}
}

int main() {
int i, j;
student stu[10];

//为了简单,此处只输入前5个学生的数据。如果要输入10个学生数据,把for中5改成10即可
for(i = 0; i = 0; i--) {
printf("%s\t%3f\n", stu[i].stuNum, stu[i].aveScore);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式