[英]scanf error on while loop (and for loop), scanning forever
我是 C 編程和編寫代碼的新手,以確定 M 測試用例的質因數分解。 如果我一次只掃描一次,該功能本身就可以工作,但是當我嘗試多次掃描時,它會失敗。
我不知道為什么 scanf() 循環有問題。
int main(void) {
int n, j = 0, m, print = 0;
int i = 2, counter = 0;
scanf("%d", & m);
while (j < m) {
scanf("%d", & n); //This scan is buggy and only works for the first time
while (n != 1) {
if (n % i == 0) {
while (n % i == 0) {
n = n / i;
counter++;
}
printf("%i ^ %i, ", i, counter);
}
counter = 0;
i++;
}
printf("\n");
j++;
}
return 0;
}
並不是說您的scanf
行有問題,而是您沒有在每個外部while
循環開始時重置i
的值。 因此,在第一次運行該循環時, i
從值2
開始,但在后續運行中,它將從上次運行結束后剩余的值開始。
要解決這個問題,只需添加行i = 2;
在您的scanf("%d", &n);
之前(或之后scanf("%d", &n);
線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.