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/