首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

结构体有关问题

2012-04-06 
结构体问题#include stdio.h#defineN5structstudent{intxuehaocharxingming[20]floatcchngfloatjavac

结构体问题
#include <stdio.h>
#define   N   5
struct   student
{
int   xuehao;
char   xingming[20];
float   cchng;
float   javacheng;
}stu[N];
void   main()
{
void   ave(struct   student   *ps);
struct   student   *ps;
int   i;
ps=stu;
for(i=0;i <N;i++,ps++)
{
scanf( "%d,%s,%f,%f ",&ps-> xuehao,ps-> xingming,&ps-> cchng,&ps-> javacheng);
}
ave(stu);

}
void   ave(struct   student   *ps)
{
int   k;
float   sum,a;
for(k=0;k <N;k++,ps++)
{  
sum=ps-> cchng+ps-> javacheng;
a=sum/2;
printf( "%f ",a);
}
求这个float   cchng;
float   javacheng;成绩的平均数。本个人的
为什么老点0呢?
是不是什么地方写错了。
请高人指点1.2


[解决办法]
问题在于这里:
scanf( "%d,%s,%f,%f ",&ps-> xuehao,ps-> xingming,&ps-> cchng,&ps-> javacheng);
你输入整数, 实数都没有问题, 输入 ', '也没有问题, 关键在于输入的字符串, 我试过运行楼主的代码, 我估计楼主在输入数据的时候和我刚开始一样, 在输入完姓名之后就输入一个 ', '号, 然后输入实数, 这时就有问题了
因为在用scanf输入字符串的时候字符串是以回车,制表符或是空格为结束符号的, 所以在你输入完字符串之后再输入 ', '号和后面的实数也是被当作字符输入了, 也就是说ps-> cchng和ps-> javacheng根本就没有得到赋值. 所以结果当然是0.

热点排行