int main(){
        int cardnum;
        int count = 0;
        do{
            printf("Enter your 16-digit Credit Card Number!\n");
            scanf(" %d", &cardnum);
            while(cardnum>0)
            {
                cardnum = cardnum / 10;
                count++;
            }
        }while( count != 16);
    }


所以我正在尝试制作一个程序,要求您插入CC的16位,如果您不输入16位,它将一直询问您,直到您这样做。

由于某种原因,我遇到了无限循环。
smb可以解释吗?

最佳答案

您不会在每次输入尝试时将count重置为0。

int main(){
        int cardnum;
        int count = 0;
        do{
            count = 0; /* Added this */
            printf("Enter your 16-digit Credit Card Number!\n");
            scanf(" %d", &cardnum);
            while(cardnum>0)
            {
                cardnum = cardnum / 10;
                count++;
            }
        }while( count != 16);
    }


[编辑:这是不正确的。]尽管,我认为您可以检查scanf()的返回值以了解读取的字符数。那可能更容易。

最后,是int无法容纳16位数字的问题。

关于c - C:如何使用while循环计算多个位数的位数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59016718/

10-15 00:35