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

程序要求是这样的:用结构体存储三个学生的成绩,每个学生有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

就是实现上面的功能,望懂的大虾不吝赐教,不胜感激。
最后还要排序哦,下面的大虾,你好像还没有把平均分排序吧?

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

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

   }

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-23

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

  

 }

 

}

相似回答