| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 326 人关注过本帖
标题:c语言结构体
只看楼主 加入收藏
妙公子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
c语言结构体
输入三个学生的名字,数学和英语成绩,算出平均分,并且按平均分低到高输出,下面的程序哪里错了,怎么改正,希望回答者能把测试运行正确的代码贴上来,谢谢

程序代码:
#include<stdio.h>
void main()
{struct student {char name[10];
    int math,eng;
    double aver;} s[3];

 int i;

 for(i=0;i<3;i++){
  scanf("%s%d%d",s[i].name,&s[i].math,&s[i].eng);
  s[i].aver=(s[i].math+s[i].eng)/2.0;

 }
int tmp;
    for(i=1;i<3;i++)
  if(s[i].aver>s[i+1].aver){
  s[tmp]=s[i];
  s[i]=s[i+1];
  s[i+1]=s[tmp];
  }

 printf("%s %d %d %.1lf\n",s[i].name,s[i].math,s[i].eng,s[i].aver);
}
搜索更多相关主题的帖子: c语言结构体 
2009-08-16 01:18
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
你的程序都运行不过还怎么知道错在哪?
下面是改好的,可以运行,你对比一下就知道哪不对了。

#include<stdio.h>
void main()
{struct student {char name[10];
    int math,eng;
    double aver;} s[3],tmp;
int i,j;
for(i=0;i<3;i++)
 {
  scanf("%s%d%d",s[i].name,&s[i].math,&s[i].eng);
  s[i].aver=(s[i].math+s[i].eng)/2.0;
 }
 
for(i=0;i<2;i++)
  for(j=i;j<3;j++)
    if(s[i].aver>s[j].aver)
      {
       tmp=s[i];
       s[i]=s[j];
       s[j]=tmp;
      }
 for(i=0;i<3;i++)
  printf("%s %d %d %.1lf\n",s[i].name,s[i].math,s[i].eng,s[i].aver);
}

努力—前进—变老—退休—入土
2009-08-16 09:53
wfwf123
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-3-27
收藏
得分:0 
变量temp没有初始化,排序算法不正确。
2009-08-16 10:08
dealwithme
Rank: 2
等 级:论坛游民
帖 子:8
专家分:30
注 册:2009-7-9
收藏
得分:0 
#include<stdio.h>
#include <io.h>
void main()
{typedef struct student {char name[10];
    int math,eng;
    double aver;}std;
    std s[3];
    std tmp;
int i,j;
/*flag是数组是否按顺序排列的标志*/
int flag=0;
for(i=0;i<3;i++){
 printf("please enter the information of the student\n");
  scanf("%s%d%d",s[i].name,&s[i].math,&s[i].eng);
  fflush(stdin);
  s[i].aver=(s[i].math+s[i].eng)/2.0;
}
    for(i=2;i>=0&&!flag;i--)
    {
     flag=1;
     for(j=0;j<i;j++)
     {
      if(s[j].aver>s[j+1].aver)
      {
       tmp=s[j];
       s[j]=s[j+1];
       s[j+1]=tmp;
       flag=0;
      }
     }
    }
for(i=0;i<3;i++)
printf("%s %d %d %.1lf\n",s[i].name,s[i].math,s[i].eng,s[i].aver);
}
这个程序能够运行通过,结果正确
2009-08-16 11:01
快速回复:c语言结构体
数据加载中...
 
   



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

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