循环程序问题

时间:2013-03-15 03:48:32

标签: c while-loop sentinel

对于我试图编写的程序,我必须创建一个程序,要求用户输入一个数字并计算输入的所有数字的总和,直到用户输入-1来停止循环。但是,我无法打印-1或将其添加到总数中,但我正在努力。

#include <stdio.h>

int main ()
{
    int x, total;

    total = 0;
    x = 0;

    while (x <= -2 || x >= 0)
    {

        printf("Please enter a number: ");
        scanf("%d", &x);

        printf("You entered %d \n", x);

        totalSum = total + x;
        printf("total is %d \n", total);

    }

    printf("Have a nice day :) \n");
    printf("total is %d \n", total);

    return 0;
}

关于如何在不打印或添加总数的情况下将循环停止在-1的任何建议?

2 个答案:

答案 0 :(得分:2)

您可以在循环开始时检查输入是否等于-1,如果是,则退出而不是计算:

while(1) {
    printf("Please enter a number: ");
    scanf("%d", &x);      

    if (-1 == x)
      break;

     ...
 }

答案 1 :(得分:0)

我很抱歉,但当我看到仅由条件中断驱动的while(1)循环时,我只是畏缩。怎么样:

printf("Please enter a number: ");
while(scanf("%d", &x) == 1 && x != -1)
{
    // do work

    printf("Please enter a number: ");
}

这种方法的一个缺点是打印是重复的,但我相信拥有while条件的pro实际上驱动循环比弥补它更多。另一个好处是,此处还会检查scanf,以确保它正确读取下一个值。