求一个C语言结构体编程例子。

程序要求是这样的:用结构体存储三个学生的成绩,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,然后按照平均分的降序排列,如下图... 程序要求是这样的:用结构体存储三个学生的成绩,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,然后按照平均分的降序排列,如下图所示:

请输入第1学生的资料:
学号为:009
姓名是:张三
第1门成绩是:98
第2门成绩是:67
第3门成绩是:87

请输入第2学生的资料:
学号为:005
姓名是:李四
第1门成绩是:92
第2门成绩是:87
第3门成绩是:80

请输入第3学生的资料:
学号为:016
姓名是:王五
第1门成绩是:88
第2门成绩是:90
第3门成绩是:67

学号 姓名 语文 数学 英语 平均分
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
009 张三 98 67 87 84
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
005 李四 92 87 80 86.33
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
016 王五 88 90 67 81.66

就是实现上面的功能,望懂的大虾不吝赐教,不胜感激。
最后还要排序哦,下面的大虾,你好像还没有把平均分排序吧?
展开
 我来答
百度网友9c1b57b
推荐于2017-12-16 · TA获得超过746个赞
知道小有建树答主
回答量:298
采纳率:100%
帮助的人:308万
展开全部

排序你可以用最简单的冒泡或者选择排序,以平均分为标准

#include<stdio.h>

typedef struct student

{

 int num;

 char name[20];

 int Score1;

 int Score2;

 int Score3;

 float average;

}student;

student st[3];

void CreateStudent(student st[])

{

 int i,j;

    float Average;

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

 {

  printf("请输入学生%d的资料:\n",i+1);

     printf("学号为:");

  scanf("%d",&st[i].num);

  printf("姓名是:");

  scanf("%s",&st[i].name);

  printf("第1门成绩是:");

  scanf("%d",&st[i].Score1);

  printf("第2门成绩是:");

  scanf("%d",&st[i].Score2);

  printf("第3门成绩是:");

  scanf("%d",&st[i].Score3);

  printf("\n");

  st[i].average = (st[i].Score1+st[i].Score2+st[i].Score3)/3;

 }

}

void SortStudent(student st[],int nLength)

{

 int i, j, max;

 student temp;

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

 {

  max = i;

  for(j=i+1; j<nLength; j++)

  {

   if(st[j].average > st[max].average)

    max = j;

  }

  if(max != i)

  {

   temp = st[i];

   st[i] = st[max];

   st[max] = temp;

  }

 }

}

int main()

{

 int j;

 CreateStudent(st);

 SortStudent(st,3);

    printf("学号\t姓名\t语文\t数学\t英语\t平均分\n");

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

   {

       printf("%d",st[j].num);

    printf("\t%s",st[j].name);

       printf("\t%d",st[j].Score1);

       printf("\t%d",st[j].Score2);

       printf("\t%d",st[j].Score3);

    printf("\t%2f",st[j].average);

       printf("\n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");

   }

}

张_哲_薰
2010-09-23 · 超过24用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:54.7万
展开全部

#include<stdio.h>

struct student

{

 int num;

 char name[20];

 int Score1;

 int Score2;

 int Score3;

 

}student[2];

int main()

{

 int i,j;

 int Average;

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

 {

  printf("请输入学生%d的资料:\n",i+1);

  printf("学号为:");

  scanf("%d",&student[i].num);

  printf("姓名是:");

  scanf("%s",&student[i].name);

  printf("第1门成绩是:");

  scanf("%d",&student[i].Score1);

  printf("第2门成绩是:");

  scanf("%d",&student[i].Score2);

  printf("第3门成绩是:");

  scanf("%d",&student[i].Score3);

  printf("\n\n");

 }

 

 printf("学号\t姓名\t语文\t数学\t英语\t平均分\n");

 

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

 {

  Average=(student[j].Score1+student[j].Score2+student[j].Score3)/3;

  printf("%d",student[j].num);

  printf("\t%s",student[j].name);

  printf("\t%d",student[j].Score1);

  printf("\t%d",student[j].Score2);

  printf("\t%d",student[j].Score3);

  printf("\t%d",Average);

  printf("\n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");

  

 }

 

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式