- 老师答疑区
- 帖子详情
如何防止将小数读入成整数? 关于第5周编程练习第7题
扬帆启航5
发表于2017年05月30日
<p>题目内容:</p><p>从键盘任意输入两个符号各异的整数,直到输入的两个整数满足要求为止,然后打印这两个数。请通过测试找出下面这个程序存在的问题(不止一个问题哦),并改正。同时用下面给出的运行结果示例检查修改后的程序。</p><p>请教老师,这题我提交的代码以及网上其它代码在线能通过,但是自己测试发现一个现象,如果scanf时,第1个输入整数,第2个输入小数,会将小数读成整数通过,而题意明显是要求正确读入2个整数。 代码如下:</p><p>#include <stdio.h><br >int main()<br > {<br > int x1, x2, readOK;</p><p> readOK = 0;</p><p> while(readOK != 2)<br > {<br > printf("Input x1, x2:\n");<br > readOK = scanf("%d,%d", &x1, &x2);<br > // printf("x1=%d,x2=%d\n", x1, x2); //测试读入结果</p><p> if(readOK!=2) while (getchar() != '\n');<br > else if(x1 * x2 >= 0) readOK = 0;<br > }</p><p> printf("x1=%d,x2=%d\n", x1, x2);<br > return 0;<br > }</p><p><br ></p><p>下面是输入8,-3.4的结果,能通过测试,而按题意应该不通过,请老师指导如何防止这个程序将小数读成整数呢?</p><p> <img src="https://nos.netease.com/edu-image/10b6a812-f305-40cc-ba57-cdf8e3cd7526.png" /></p>