C语言float溢出.Floating point error: Domain

来源:百度知道 编辑:UC知道 时间:2024/06/23 17:58:39
题目:
1.设计一个结构型,存放职工的编号、姓名、是否退休(已退休为'y'或'Y',未退休为'n'或'N')和工资.编一个程序,输入20名职工的上述信息,统计并输退休职工的人数、工资总额和平均工资.(本题要求用志向接工型的指针变量来处理结构型数据的成员)

平台: TC2.0

出现错误:程序是输入10个职工的,我输入到第5个就结束了程序,显示
Floating point error: Domain.

代码:
#include<ctype.h>
#define N 10
struct zg
{
int bh;
char xm[6];
char ty;
float gz;
} yy[10],*p=yy;
void main()
{
int i,y_i=0,n_i=0;
float sum_y,sum_n,gz_m;

sum_y=sum_n=0;
for(;p<yy+N;p++)
{
gz_m=0.00;
scanf("%d",&p->bh);
scanf("%s",p->xm);
scanf("%c",&p->ty);
scanf("%f",&gz_m);
p->gz=gz_m;
if(toupper(p->ty)=='Y')
{
y_i++;
sum_y+=p->gz;
}
else
{
n_i++;
sum_n+=p->gz;
}
}

将scanf("%c",&p->ty);改为scanf("%s",&p->ty);

主函数for循环中修改为:
for(;p<yy+N;p++)
{
gz_m=0.00;
scanf("%d ",&p->bh);
scanf("%s ",p->xm);
scanf("%c ",&p->ty);
scanf("%f",&gz_m);
getchar();
......
}
在执行的时候将一个人的信息写完(中间空格),然后回车再写下一个人得信息。
getchar()的作用是接受键盘输入的回车。

在scanf("%c",&p->ty);前面加一条语句getchar() ;

没有错呀。。。