2016-08-04 10 views
1

私はパターンをCで印刷するように書いています。私の予想される答えは、私が得ているものとは非常に異なっています。私はコードをデバッグしましたが、エラーを見つけることができませんでした。エラーを見つけるのを手伝ってください。私のコードは以下の通りです。パターン印刷プログラムで間違った答えがあります

#include <stdio.h> 

int main() 
{ 
    //code 
    int T,i,j; 

    scanf("%d",&T); 

    while(T--) 
    { 
     char str[5]; 
     for(i=0;i<5;i++) 
     { 
      scanf("%c",&str[i]); 
     } 
     printf("\n"); 

     for(j=1;j<=5;j++) 
     { 
      for(i=0;i<5-j;i++) 
      { 
       printf("."); 
      } 
      for(i=0;i<j;i++) 
      { 
       printf("%c",str[i]); 
      } 
     } 
     printf("\n"); 
    } 
    return 0; 
} 

次のようにプログラムに入力される。
入力次のようにプログラムの

1 
geeks 

予想出力は次のとおり
期待出力:

....g 
...ge 
..gee 
.geek 
geeks 

プログラムの実際の出力は次のとおりです。
実際のアウトプットT:'\n'を消費する" %c"に変更

.... 
... 
g.. 
ge. 
gee 
+1

お知らせ。これは、あなたの最初のピリオドセットが ".... g"でないのはなぜですか? – Matthew

+0

'(j = 1; j <5;j++)' -->' for(j = 1; j <= 5; j ++) ' – LPs

+1

..と' scanf( " "%c"、&str [i]); ' - >' scanf( "%c"、&str [i]); ' – LPs

答えて

3

#include <stdio.h> 

int main() 
{ 
    //code 
    int T,i,j; 

    scanf("%d",&T); 

    while(T--) 
    { 
     char str[5]; 
     for(i=0;i<5;i++) 
     { 
      scanf(" %c",&str[i]); 
     } 
     printf("\n"); 

     for(j=1;j<=5;j++) 
     { 
      for(i=0;i<5-j;i++) 
      { 
       printf("."); 
      } 
      for(i=0;i<j;i++) 
      { 
       printf("%c",str[i]); 
      } 
      printf("\n"); 
     } 
    } 
    return 0; 
} 
  1. あなたの悪いコードを修正文字scanf書式指定子は、最初scanf
  2. によってstdinにループ必見ループの外5回を残しました、開始値が1のため、条件は<=に変更されました
  3. printf("\n");を外側forループの内側に移動しました。

INPUT

1 
geeks 

OUTPUT

....g 
...ge 
..gee 
.geek 
geeks 

他の試験

INPUT

2 
1234567890 

OUTPUT

....1 
...12 
..123 
.1234 
12345 

....6 
...67 
..678 
.6789 
67890 
+1

不確かで疑わしいコードでいっぱいの質問に対する正解です。 – user3078414

0

これはあなたの問題を解決することができます:あなたが単語「オタク」を読み始めるとき、あなたが実際にオタクを「『これ読んで、(』)」のスペースで始まっていることを

int main() 
{ 
//code 
int T,i,j; 
scanf("%d",&T); 
while(T--) 
{ 
    char str[5]; 
    for(i=0; i<5; i++) 
    { 
     scanf(" %c",&str[i]); //first modification 
    } 
    printf("\n"); 

    for(j=1; j<=5; j++) //second modification 
    { 
     for(i=0; i<=5-j; i++) 
     { 
      printf("."); 
     } 
     for(i=0; i<j; i++) 
     { 
      printf("%c",str[i]); 
     } 
    } 
    printf("\n"); 
} 
return 0; 
} 
関連する問題