2016-05-15 122 views
-2

我正在處理的程序輸出該符號的直角三角形,其邊數等於該數字。它應該做的是終止,如果你輸入0,否則它應該再次要求一個新的輸入。該符號的直角三角形,邊數等於該數字

所以我的問題是如何讓它終止,如果你輸入0,否則要求另一個輸入?我知道我可能需要使用while循環。但是,我該如何改變它?

這裏是我的代碼:

#include <assert.h> 
#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    char s;   /*s is symbol (the input)*/ 
    int a, b, n; /*n is number of rows (the input)*/ 

    printf("Please type the symbol of the triangle:...\n"); /*Ask for symbol input*/ 
    scanf_s("%c", &s, 1); 
    printf("Please type a positive non-zero number between 5 and 35:...\n"); /*Ask for number of rows input*/ 
    scanf_s("%d", &n); 
    assert(n >= 5 && n <= 35); 

    for (a = 1; a <= n; a++) /*How many rows to display+create*/ 
    { 
     for (b = 1; b <= a; b++) 
     { 
      printf("%c", s); 
     } 
     printf("\n"); 
    } 
    system("PAUSE"); 
} 
+0

所以我的問題是,「如何在你輸入0結束,否則它會再次詢問新的輸入。」 我知道我可能需要while循環使用。但是,我如何改變它? –

+1

不要在評論中提問。相反,請將其包含在您的實際問題中。 – Laurel

回答

0

您可以使用循環來做到這一點。

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

#ifndef _MSC_VER 
/* passing extra arguments to scanf is not harmful */ 
#define scanf_s scanf 
#endif 

int main(void) 
{ 
    char s;   /*s is symbol (the input)*/ 
    int a, b, n; /*n is number of rows (the input)*/ 

    do { 
     printf("Please type the symbol of the triangle:...\n"); /*Ask for symbol  input*/ 
     scanf_s("%c", &s, 1); 
     printf("Please type a positive non-zero number between 5 and 35:...\n");  /*Ask for number of rows input*/ 
     scanf_s("%d", &n); 
     if(n >= 5 && n <= 35) 
     { 
      for (a = 1; a <= n; a++)/*How many rows to display+create*/ 
      { 
       for (b = 1; b <= a; b++) 
       { 
        printf("%c", s); 
       } 
       printf("\n"); 
      } 
     } 
     while ((a = getchar()) != '\n' && a != EOF); /* remove the newline character from standard input buffer */ 
    } while (n != 0); 
    system("PAUSE"); 
} 
+0

謝謝! 我們還沒有得知「while((a = getchar())!='\ n'&& a!= EOF);/*從標準輸入緩衝區中刪除換行符* /」 是否有任何「簡單「的方式來說呢? –

+0

@EricYeh我認爲這是一個簡單的方法。請定義「簡單」。 – MikeCAT

+0

因爲我們還沒有學過關於getchar和EOF作爲初學者,所以我想知道是否有另一種方法來做到這一點。 –