【问题标题】:Loop program issue循环程序问题
【发布时间】:2013-03-15 03:48:31
【问题描述】:

对于我正在尝试编写的程序,我必须创建一个程序,要求用户输入一个数字并计算输入的所有数字的总和,直到用户输入 -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 的任何建议?

【问题讨论】:

    标签: c while-loop sentinel


    【解决方案1】:

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

    while(1) {
        printf("Please enter a number: ");
        scanf("%d", &x);      
    
        if (-1 == x)
          break;
    
         ...
     }
    

    【讨论】:

    • 哦,所以我需要添加条件来打破循环?谢谢你,分析它对我来说越来越清楚了。
    【解决方案2】:

    对不起,当我看到一个完全由条件中断驱动的while(1) 循环时,我只是畏缩。像这样的东西呢:

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

    这种方法的一个缺点是打印重复,但我相信使用 while 条件实际上驱动循环的优点远远超过了它的弥补。另一个好处是,此处还会检查 scanf 以确保它正确读取下一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      • 2022-01-05
      相关资源
      最近更新 更多