如何防止将小数读入成整数? 关于第5周编程练习第7题

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