标题:floating point error:domain. null pointer assignment
只看楼主
sangyufeiwan
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-10-20
结帖率:100%
 问题点数:0 回复次数:2 
floating point error:domain. null pointer assignment
void main()
{ struct zhigong
     {char bianhao[3];
      char name[10];
      char retire;
      float salary;
     };
  struct zhigong ren[3],*p;
  int i,j=0;
  float sum=0.0;
  p=ren;
  for(i=0;i<3;i++)
    { scanf("%s",(p+i)->bianhao);
      scanf("%s",(p+i)->name);
      scanf("%c",(p+i)->retire);
      scanf("%f",(p+i)->salary);
    }
  for(i=0;i<3;i++)
     if((p+i)->retire=='y')
       {j++;sum+=(p+i)->salary;}
  printf("%d,%f,%f\n",j,sum,sum/j);
  _turboFloat();
}
功能:设计一个结构型,存放职工的编号,姓名,是否退休(已退休为‘y’,未退休为‘n’)和工资。编程,输入3名职工(仅仅是做实验,人数不在多,在于测试程序)的上述信息,统计并输出未退休员工的人数,工资总额和平均工资。(本题要求用指向结构型的指针变量来处理结构型数据的成员)
我输入的数据:073 zhao n 240.00
              123 qian n 360.00
              001 sun  y  560.00
alt+r运行后输入到360.00回车程序就结束运行,alt+f5会看到“floating point error:domain.  null pointer assignment”的错误提示。
搜索更多相关主题的帖子: assignment pointer domain floating 
2008-11-19 19:37
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
得分:0 
scanf("%c",(p+i)->retire);由格式c会接收前面的一个空格,而不是想输入的字符,使得字符流的接收顺序完全乱掉,并在输入没有达到预期时就提前出了循环体,这就是为什么输入了一部分跳出了,而且后面两句接收的语法也有错误.
改正为:
for(i=0;i<3;i++)
    { scanf("%s",(p+i)->bianhao);
      scanf("%s",(p+i)->name);
      getchar();
      scanf("%c",&((p+i)->retire));
      scanf("%f",&((p+i)->salary));
    }
2008-11-19 20:44
sangyufeiwan
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-10-20
得分:0 
回复 第2楼 debroa723 的帖子
多谢斑竹的回答,谢谢了
2008-11-25 19:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-245221-1-1.html




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

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