对于非整数输入整数不会停止

时间:2016-11-18 12:42:16

标签: c

我有一个程序,我在其中输入整数,直到输入非整数的东西。代码需要打印满足以下条件的整数:

integer "abcde": "a > b, b < c, c > d, d < e" or "a < b, b > c, c < d, d > e"
example: 343, 4624, 6231209

我写过这个,它适用于大多数整数,但不知何故它对一些人来说不起作用。

#include <stdio.h>
int main()
{
    int a;
    while (scanf("%d", &a))
    {
        int a1 = a;
        int cifra = 0, cifra1 = 0, cifra2 = 0;
        while (a1 > 0)
        {
            cifra = a1 % 10;
            cifra1 = (a1 / 10) % 10;
            cifra2 = (a1 / 100) % 10;
            a1 = a1 / 10;

            if (cifra == cifra1 || cifra1 == cifra2)
            {
                break;
            }

            if ((cifra < cifra1 && cifra1 > cifra2) || (cifra > cifra1 && cifra1 < cifra2)) {

                printf("%d\n", a);
                break;

            }
            else
            {
                break;
            }
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

自己解决了

#include <stdio.h>
int main()
{
int a;
int cifra = 0, cifra1 = 0, cifra2 = 0;
int a1;
while(scanf("%d", &a))
{


    int a1 = a;
    while(a1 > 0){
            if(a1 <= 9)
    {
        break;
    }
    cifra = a1 % 10;
    cifra1 = (a1 / 10) % 10;
    cifra2 = (a1 / 100) % 10;

    if((cifra > cifra1 || cifra1 > cifra)&&cifra2 == 0)
    {
        printf("%d\n", a);
        break;
    }

    if((cifra < cifra1&&cifra1 > cifra2) || (cifra > cifra1&&cifra1 < cifra2))
    {
        a1 = a1 / 10;;

    }
    else
    {

        break;
    }



    }



}

return 0;
}