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

如题所述

代码如下:

#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);
}
}

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答