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位数字的问题。