簡體   English   中英

while 循環(和 for 循環)上的 scanf 錯誤,永遠掃描

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM