留在while循环中

时间:2016-10-21 01:55:04

标签: c loops while-loop

#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中。 当我运行它时,它会保持在循环中并且不会给出任何输出。 如果我停止程序,它会给出正确的结果。 有什么问题?

1 个答案:

答案 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);