| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:学生成绩单制作,还有一个错误,谁帮我改改。。
只看楼主 加入收藏
琴瑟在御yr
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
学生成绩单制作,还有一个错误,谁帮我改改。。
学生成绩单制作
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
Han_FlyB
Rank: 6Rank: 6
等 级:侠之大者
帖 子:143
专家分:424
注 册:2013-3-25
收藏
得分:7 
头像不错,但是……你这个程序的风格格式不怎么样啊,比较难看
2013-06-26 13:52
a64924374
Rank: 2
等 级:论坛游民
帖 子:33
专家分:61
注 册:2013-3-11
收藏
得分:7 
你们老师这样教你写代码的?
2013-06-26 15:21
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:7 
唉,这代码规范的,本来不想看的,看在头像的份上。。。。。。
程序代码:
#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[]);
  //你的这里申明写错了
  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;
  }
} 
但愿你不是抠脚大汉,要不然我就剖腹自尽!!!!!


Edsger Dijkstra:算法+数据结构=程序
2013-06-27 00:26
快速回复:学生成绩单制作,还有一个错误,谁帮我改改。。
数据加载中...
 
   



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

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