【问题标题】:Keep prompting the the user until valid value provided-while loop c programming不断提示用户,直到提供有效值-while 循环 c 编程
【发布时间】:2018-08-07 19:44:29
【问题描述】:

我正在学习 c 编程初学者。在 while 循环阶段,我正在尝试使用 while 循环程序验证用户输入,根据我的预期工作得很好,除了一件事是每当用户输入无效值循环自行终止并且我试图保持询问用户,直到从用户那里获取有效值。这是我正在处理的代码。有人可以指导我完成这个吗?

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int num;
    int sum;
    bool flag = 0;

    printf("Enter the value GREATER than 20 and LESS than 25: ");
    scanf("%d", &num);

    while ( num > 20 && num < 25 ) {
        sum += num;
        num++;
    }
    if ( num < 20 || num > 25){
        flag = 0;
        printf("Invalid\n");
    }
    else
        printf("sum of your number is : %d \n", sum);
    return 0;
}

【问题讨论】:

  • 你需要在循环中移动scanf
  • @FiddlingBits 这是一个开始,但随后 num 在未初始化时用于比较。必须将其设为do-while-loop
  • 另外,sum +=num 是个问题,因为 sum 未初始化。

标签: c


【解决方案1】:

您需要在 while 循环中使用 scanf 通过不断询问从用户那里获取正确的值。一旦你得到正确的值,你就不需要 if 条件来检查值的正确性,因为 while 循环只有在得到正确的值后才会退出。

#include <stdio.h>

    int main(int argc, char const *argv[])
    {
    int num = 0;
    int sum = 0;
    bool flag = 0;

    printf("Enter the value GREATER than 20 and LESS than 25: ");
    scanf("%d", &num);

    while ( num < 20 || num >25 )
    {
    printf("Invalid number,Enter the value GREATER than 20 and LESS than 25: ");
    scanf("%d", &num);
    }

while (  num <= 25 )
     { 
         sum += num;
          num++; 
    }


        printf("sum of your number is : %d \n", sum);
    return 0;
    }

【讨论】:

  • 它没有给出数字的总和。
  • 它的作用是什么?
  • 如果我在循环中添加 sum+= 并在循环外添加数字,则不会只有 0。
  • scanf 不能用于此。尝试输入11 abc 24 使用fgetssscanf
  • 如果数字>20和
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 2015-05-15
  • 2020-03-28
  • 2018-04-02
  • 2016-06-06
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多