程序应接受stdin上的输入值,直到达到EOF。保证输入格式良好并包含至少一个有效浮点值。
示例输入:
3.1415
7.11
-15.7
预期产出:
3 3 4
7 7 8
-16 -16 -15
Done.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
for(;;)
{
float b;
scanf("%f", &b);
printf("%g %g %g\n",floor(b), round(b), ceil(b));
int i=0;
int result = scanf("%d", &i);
if( result == EOF)
{
printf("Done.\n");
exit(0);
}
}
return 0;
}
我的程序只运行一次。之后输出0 1 1
答案 0 :(得分:0)
我认为你的第二个scanf
是问题,就像其他人已经告诉你的那样。这样做怎么样? getchar()
调用似乎更可靠地获得了EOF。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (void) {
float b;
for (;;) {
scanf("%f",&b);
printf("%g %g %g\n",floor(b),round(b),ceil(b));
if (getchar() == EOF)
break;
}
return 0;
}
答案 1 :(得分:0)
如果您希望使用scanf
,可以使用返回值来检测错误/ EOF输入:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
int result = 0;
for(;;)
{
float b;
result = scanf(" %f", &b);
if(result == EOF)
break;
printf("%g %g %g\n",floor(b), round(b), ceil(b));
}
printf("Done");
return 0;
}
同时查看this question也很有帮助。