在C或C ++中循环执行多个输入

时间:2012-04-19 00:11:52

标签: c++

以下是我正在使用的代码片段,虽然我的输入需要4个值,直到用户键入正确的值,它应该继续询问,同样的任何输入 提前致谢

#include<stdio.h>
#include<math.h>

int
main(int argc, char *argv[])
{
        int days;
        float peny;

        do{
                printf("Enter Number of days: ");
                scanf("%d", &days);
        }
        while ((days != 28) || (days != 29) ||(days != 30) ||(days != 31));
        printf("Number of days are %d", days);


}

4 个答案:

答案 0 :(得分:5)

想想你的循环条件是什么。它将保持循环,而任何这些单独的条件仍然是真的,或换句话说,循环直到所有这些条件同时为假。这可能吗?

答案 1 :(得分:2)

而((天&LT; 28)||(天&GT; 31)); //即。而日子是非法的,因为低或太高

答案 2 :(得分:2)

条件

(((days != 28) || (days != 29) ||(days != 30) ||(days != 31)))
do-while循环中的

始终为真,因为天数的值不能同时为28,29,30,31。或者运算符可以更改为和:

while ((days != 28) && (days != 29) && (days != 30) && (days != 31));

答案 3 :(得分:1)

始终从scanf()测试返回状态;如果它没有告诉你1,它就会失败,可能是因为用户键入了a而不是31

考虑计算连续失败的次数(如果计数过高则挽救),这样用户就不会感到沮丧。

考虑使用fgets()来读取输入,并使用sscanf()来解析它;它通常更容易管理。

考虑将C ++用于C ++,将C用于C;你展示的是一个C程序而不是一个C ++程序(虽然它确实可以用C ++编译,除非我的眼睛欺骗我)。一般来说,语言非常不同。

在最终printf()的末尾添加换行符。