| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 960 人关注过本帖
标题:各位帮我看下,为什么这个程序只能输入学号和姓名,不能输入成绩。
只看楼主 加入收藏
wxmlianying
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-25
收藏
 问题点数:0 回复次数:8 
各位帮我看下,为什么这个程序只能输入学号和姓名,不能输入成绩。
#include<stdio.h>
#define n 10
struct student
{char num[6];
 char name[8];
 float score[4];
 float avr;
 }stu[n];

void main()
{int i,j,maxi;
char x;
 float sum, max,average;
 for(i=0;i<n;i++)
 {printf("input score of student %d:\n",i+1);
  printf("no.:");
  scanf("%s",stu[i].num);
  printf("name:");
  scanf("%s",stu[i].name);
  for(j=0;j<3;j++)
  {printf("score %d:",j+1);
   scanf("%f",&stu[i].score[j]);
  }
}
average=0;
max=0;
maxi=0;
for(i=0;i<n;i++)
{sum=0;
 for(j=0;j<3;j++)
   sum+=stu[i].score[j];
 stu[i].avr=sum/3.0;
 average+=stu[i].avr;
 if(sum>max)
 {max=sum;
  maxi=i;
  }
 }
average/=n;
x=getchar();
printf("x=%c",x);
if(x='D')
{printf("no.      name           score1     score2     score3     average\n");
for(i=0;i<n;i++)
 {printf("%5s%10s",stu[i].num,stu[i].name);
  for(j=0;j<3;j++)
  printf("%9.2f",stu[i].score[j]);
printf("          %8.2f\n",stu[i].avr);}}
if(x='B')
{printf("average=%5.2f\n",average);}
if(x='C')
{printf("the highest score is:student%s,%s.\n",stu[i].num,stu[i].name);
printf("his score are: %6.2f,%6.2f,%6.2f,avreage: %5.2f.\n",stu[maxi].score[0],
stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);}
}

[[it] 本帖最后由 wxmlianying 于 2008-12-10 10:44 编辑 [/it]]
搜索更多相关主题的帖子: 输入 姓名 学号 
2008-12-10 10:32
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
if(x='D')--->if(x=='D')
if(x='B')--->
if(x='C')--->
2008-12-10 11:07
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
另外:x=getchar();  之前要加一个getchar();  接收scanf()留下的垃圾字符。
2008-12-10 11:33
wxmlianying
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-25
收藏
得分:0 
试过你说的方法,可是还是说声明的语法错误
2008-12-11 09:45
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
我试了一下,你这应该是编译器的问题。解决的方法有2种:

1、如果您继续使用现在的编译器,建议另设一个变量,先用这个变量完成成绩的输入,然后再把它赋值给结构体中的变量。

2、换一种编译器。

其它的关于运算结果之类的没有测试。
2008-12-11 09:52
wxmlianying
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-25
收藏
得分:0 
这程序下面还有一段是
  if(X=='A')
   {printf("sum=",sum);}
   可运行却说声明的语法错误,错误在if前面的括号
2008-12-11 10:10
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
就你现在在一楼所帖的代码,在我的编译器上运行过之后,没有错误。并可以计算出结果。
2008-12-11 10:12
wxmlianying
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-25
收藏
得分:0 
你用的是那中编译?
 我用的TurBO C2.0

[[it] 本帖最后由 wxmlianying 于 2008-12-11 10:36 编辑 [/it]]
2008-12-11 10:31
wxmlianying
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-25
收藏
得分:0 
以下是引用广陵绝唱在2008-12-11 10:12的发言:

就你现在在一楼所帖的代码,在我的编译器上运行过之后,没有错误。并可以计算出结果。


  我现在知道原因了,我用了VC6.0试了试,能显示结果。可是TurBO C2.0不是和VC6.0是一样的功能吗?

[[it] 本帖最后由 wxmlianying 于 2008-12-11 10:44 编辑 [/it]]
2008-12-11 10:40
快速回复:各位帮我看下,为什么这个程序只能输入学号和姓名,不能输入成绩。
数据加载中...
 
   



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

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