#include <stdio.h>
int main(void){
int iterations, counter;
double i = -1, j = 3, PI, calculate = 0;
printf("How many iterations?: ");
scanf("%d\n", &iterations);
counter = iterations;
while (counter > 0) {
calculate = calculate + (i/j);
i = i * (-1);
j += 2;
counter += -1;
}
PI = 4 * (1 + (calculate));
printf("PI = %f\n", PI);
return 0;
}
这个程序在C中。 当我运行它时,它会保持在循环中并且不会给出任何输出。 如果我停止程序,它会给出正确的结果。 有什么问题?
答案 0 :(得分:4)
更改scanf()
声明
scanf("%d\n", &iterations);
到这个
scanf("%d", &iterations);
它有什么不同?
在scanf()
格式字符串中放置任何空格使其读取并跳过输入中的所有空格。只要你一直按下输入('\n'
)或空格(' '
),它就会继续阅读,直到它到达非空白字符(或end of file
)
此外,如果您还检查scanf()
的返回值
if(scanf("%d", &iterations) == 1)
{
//continue...
}
else
{
//scan the number again
}
甚至更好,使用循环
while(scanf("%d", &iterations) != 1);