Chinaunix首页 | 论坛 | 博客
  • 博客访问: 63489
  • 博文数量: 30
  • 博客积分: 1456
  • 博客等级: 上尉
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-08 22:31
文章分类

全部博文(30)

文章存档

2011年(1)

2008年(29)

我的朋友
最近访客

分类: LINUX

2008-08-14 13:03:32

/*******************************************************
 * 1、定义一个结构体数组,存放10个学生的学号姓名三门课成绩
 * 2、从键盘输入10学生的内容
 * 3、输出单门课成绩最高的学生学号、姓名、及该门课程的成绩
 * 4、输出三门的平均分最高的学生学号、姓名及平均分
 * 5、将10个学生按照平均分从高到低排序,格式如下:
 * number name math Chinese English average
 * 103 tom 90 100 95
 * 101 alice 50 80 80
 * ****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#define N 3

typedef struct node
{
  int num;
  char name[20];
  float math;
  float chinese;
  float english;
  float avg;
}STU;

int
main(void)
{
  STU student[N];
  STU temp;
  int i,j,n,m;
  int sum;
  int len;
  int iMath;
  int iChinese;
  int iEnglish;
  float mathMax=0;
  float chineseMax=0;
  float englishMax=0;
  bool status;

  for(i=0;i<N;i++)
  {
    printf("Input %d student's num:",i+1);
    scanf("%d",&student[i].num);
    getchar();
    printf("Input %d student's name:",i+1);
    fgets(student[i].name,20,stdin);
    len=strlen(student[i].name);
    student[i].name[len-1]='\0';
    printf("input %d student's math core\n",i+1);
    scanf("%f",&student[i].math);
    printf("input %d student's chinese core\n",i+1);
    scanf("%f",&student[i].chinese);
    printf("input %d student's english core\n",i+1);
    scanf("%f",&student[i].english);
    student[i].avg=(student[i].math+student[i].chinese+student[i].english)/3;
  }
  
  for(i=0;i<N;i++)
  {
    if(student[i].math>mathMax)
    {
      mathMax=student[i].math;
      iMath=i;
    }
    if(student[i].chinese>chineseMax)
    {
      chineseMax=student[i].chinese;
      iChinese=i;
    }
    if(student[i].english>englishMax)
    {
      englishMax=student[i].english;
      iEnglish=i;
    }
  }
  printf("Highest Math score:%d->%s->%.2f\n",student[iMath].num,student[iMath].name,\
         mathMax);//student[iMath].math);
  printf("Highest Chinese score:%d->%s->%.2f\n",student[iChinese].num,student[iChinese].name,\
         chineseMax);//student[iChinese].chinese);
  printf("Highest English score:%d->%s->%.2f\n",student[iEnglish].num,student[iEnglish].name,\
         englishMax);//student[iEnglish].english);


  for(i=1;i<N;i++)
  {
    status=true;

    for(j=0;j<N-i;j++)
    {
      if(student[j].avg<student[j+1].avg)
      {
    status=false;
    temp.num=student[j].num;
    strcpy(temp.name,student[j].name);
    temp.math=student[j].math;
    temp.chinese=student[j].chinese;
        temp.english=student[j].english;
     temp.avg=student[j].avg;

    student[j].num=student[j+1].num;
    strcpy(student[j].name,student[j+1].name);
    student[j].math=student[j+1].math;
    student[j].chinese=student[j+1].chinese;
    student[j].english=student[j+1].english;
    student[j].avg=student[j+1].avg;
    student[j].avg=student[j+1].avg;

    student[j+1].num=temp.num;
    strcpy(student[j+1].name,temp.name);
    student[j+1].math=temp.math;
    student[j+1].chinese=temp.chinese;
    student[j+1].english=temp.english;
    student[j+1].avg=temp.avg;
      }
    }
    if(status==true)
      break;
  }

  printf("number\tname\tmath\tChiese\tEnglish\taverage\n");
  for(i=0;i<N;i++)
  {
    printf("%d\t",student[i].num);
    printf("%s\t",student[i].name);
    printf("%.2f\t",student[i].math);
    printf("%.2f\t",student[i].chinese);
    printf("%.2f\t",student[i].english);
    printf("%.2f\n",student[i].avg);
  }
  return 0;

}

阅读(372) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~