| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:学生成绩单制作,还有一个错误,谁帮我改改。。
取消只看楼主 加入收藏
琴瑟在御yr
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
学生成绩单制作,还有一个错误,谁帮我改改。。
学生成绩单制作
1)定义一个结构体数据,存放10个学生的学号、姓名、三门课程的成绩;
2)从键盘输入10个学生的以上内容;
3)输出单门课程成绩最高的学生的学号、姓名以及该门课程的成绩;
4)输出三门课程的平均分数最高的学生的学号、姓名及其平均分;
5)将10个学生按照平均分数从高到底进行排序,输出结果,格式如下所示:

number        name        math        Chinese        English        average
103            tom            90        90            100              95
101            alice            90        80            70              80



#include <stdio.h>
#define N 3       //三门课
struct Student
{
 int number;      //学号
 char name[20];   //姓名
 float math;      //三门课
 float chinese;
 float English;
 float average;   //平均分
};
int main()
{
int i,n,k;
float t;
  void input(struct Student stu[]);
  struct Student max(struct Student stu[]);
  void print(struct Student stu);
  struct Student stu[N],*p=stu;
  input(p);
  print(max(p));
 
  for(i=0;i<9;i++)
    if(stu[i].math>stu[i+1].math)
  {t=stu[i].math;stu[i].math=stu[i+1].math;stu[i+1].math=t;}
 for(n=0;n<9;n++)
      if(stu[n].chinese>stu[n+1].chinese)
  {t=stu[n].chinese;stu[n].chinese=stu[n+1].chinese;stu[n+1].chinese=t;}
 for(k=0;k<9;k++)
    if(stu[k].English>stu[k+1].English)
  {t=stu[k].English;stu[k].English=stu[k+1].English;stu[k+1].English=t;}
    printf("\n单门课成绩最高的学生是:\n");
printf("%d%s%6.2f",stu[i].number,stu[i].name,stu[i].math,stu[n].chinese,stu[k].English);

  void sort(struct student stu[]);
  sort(stu);
   printf("平均分由高到低排序:");
for(i=0;i<N;i++)
printf("number:%d\n name:%s\n math:%f\n chinese:%f\n English:%f\n average :%6.2f\n",
stu [i].number,stu [i].name,stu [i].math,stu [i].chinese,stu [i].English ,stu[i].average);
printf("\n");
return 0;
}

void input(struct Student stu[])
{int i;
 printf("输入十个学生的信息:number、name、match、Chinese、English、average:\n");
 for(i=0;i<10;i++)
{scanf("%d %s %f %f %f",&stu[i].number,&stu[i].name,
         &stu[i].math,&stu[i].chinese,&stu[i].English);
  stu[i].average=(stu[i].math+stu[i].chinese+stu[i].English)/3.0f;
}
}

struct Student max(struct Student stu[])
{int i,m=0;
  for(i=0;i<N;i++)
     if(stu[i].average>stu[m].average) m=i;
  return stu[m];
}
void print(struct Student stu)
{
printf("\n平均成绩最高的学生是:\n");
 printf("number:%d\nname:%s\naverage:%6.2f\n",stu.number,stu.name,stu.average);
}


struct Student max_score(struct Student stu[])
{
int i,n,k;
float t;
 for(i=0;i<9;i++)
    if(stu[i].math>stu[i+1].math)
  {t=stu[i].math;stu[i].math=stu[i+1].math;stu[i+1].math=t;}
 for(n=0;n<9;n++)
      if(stu[n].chinese>stu[n+1].chinese)
  {t=stu[n].chinese;stu[n].chinese=stu[n+1].chinese;stu[n+1].chinese=t;}
 for(k=0;k<9;k++)
    if(stu[k].English>stu[k+1].English)
  {t=stu[k].English;stu[k].English=stu[k+1].English;stu[k+1].English=t;}
    printf("\n单门课成绩最高的学生是:\n");
printf("%d%s%6.2f",stu[i].number,stu[i].name,stu[i].math,stu[n].chinese,stu[k].English);
}

void sort(struct Student stu[])
{
  struct Student temp;
  int i,j,k;
  for(i=0;i<N-1;i++)
  {
  k=i;
      for(j=i+1;j<N;j++)
        if(stu[j].average>stu[k].average)
          k=j;
        temp=stu[k];stu[k]=stu[i];stu[i]=temp;
  }
}
搜索更多相关主题的帖子: English Chinese 成绩单 number 结构体 
2013-06-25 23:34
琴瑟在御yr
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-25
收藏
得分:0 
2013-06-25 23:35
快速回复:学生成绩单制作,还有一个错误,谁帮我改改。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014675 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved