簡體   English   中英

為什么我的程序循環次數太多?

[英]Why is my program looping too many times?

我是C的初學者,試圖創建一個程序並且我的主要功能有問題。

問題:

  1. 在詢問他們想要輸入多少個整數后,例如:4個數字,循環繼續5次,基本上接受5個數字。 它也只在第二個數字后打印“Next:”。

  2. 在我用於錯誤檢查的while循環中,在用戶輸入有效方法之后,例如:輸入1,它將打印出它是“無效選擇”並再次再次詢問。

碼:

#include <stdio.h>
#include<stdlib.h>
#include "a3defs.h"

int main() {
  StackType stk;
  StackType *stkPtr = &stk;

  //Will be used to check whether to use recursive or iterative
  int method = 0;
  int sum;
  int *sumPnt = &sum;

  //Will be used to create array for amount of ints:
  int numOfIntegers;

  //Array of ints:
  int *userInts;
  printf("How many integers would you like to enter? "); 
  scanf("%d", &numOfIntegers);
  userInts = (int*)calloc(numOfIntegers, sizeof(int)); //Create the array

  printf("Please enter %d numbers: \n", numOfIntegers);
  int i;
  for (i = 0; i < numOfIntegers; i++) {
    scanf("%d\n", &userInts[i]);
    printf("Next:");
  }

  while(1) {
    printf("Would you like to used iterative or recursive to sum?\n");
    printf("Enter 1 for iterative or 2 for recursive: ");
    scanf("%d\n", &method); 
    if (method == 1) {
      //found in loop.c
      sumIterative(stkPtr, numOfIntegers, userInts, sumPnt);
      break;
    } else if (method == 2) {
      //Found in loop.c
      sumRecursive(stkPtr, numOfIntegers, userInts, sumPnt);
      break;
    } else {
      printf("Invalid choice. Repeating... \n");
        continue;
    }
  } 

  printf("Your sum is: %d", *sumPnt);
    return 0;
}

問題1:

只需更換:

scanf("%d\n", &userInts[i]);

by scanf("%d", &userInts[i]);

替換scanf("%d\\n", &userInts[i]); with scanf("%d", &userInts[i]);

請參見約在scanf格式說明符輸入非空白字符。

它說:

任何不是空白字符(空格,換行符或制表符)或格式說明符的一部分(以%字符開頭)的字符都會導致該函數從流中讀取下一個字符,將其與此非空白字符進行比較如果它匹配,則將其丟棄,並且該函數將繼續使用格式的下一個字符。 如果字符不匹配,則函數失敗,返回並保留流的后續字符未讀。

並在格式字符串不以\\n結尾的所有printf語句之后添加fflush(stdout) 否則,只有在輸出下一個\\n后才會顯示輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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