读书人

结构体有关问题

发布时间: 2012-04-06 12:22:24 作者: rapoo

结构体问题
#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.

读书人网 >C语言

热点推荐