我有一个看起来微不足道的问题,但我自己解决了这个问题。这是我的简单代码:
#include <cstdio>
int main(int argc, char *argv[]){
int z;
scanf("%d", &z);
for(int i = 0; i < z; ++i){
double x0, x1;
scanf("%lf %lf", &x0, &x1);
printf("%lf %lf", x0, x1);
printf("\n");
}
return 0;
}
当我在下面提供节目输入时:
4
1 7
4 2
7 1
−21 −3
我收到了这个输出:
1.000000 7.000000
4.000000 2.000000
7.000000 1.000000
7.000000 1.000000
看起来最后一行根本就没有读过。不过,我确实在其他数据集上测试了我的程序,我做了一些有趣的观察:
1)程序在Ubuntu(在我和朋友的计算机上检查)或ideone上执行时会出现此问题。
2)程序在Windows(我的电脑和朋友)上没有问题。
3)错误可能是由负值引起的,但并非由所有负值引起。
4)使用iostream而不是cstdio并不能解决问题。