0
#include<stdio.h>
int main(){
 int i=0,j=0;
 char a[5][2];
 for(i=0;i<5;i++){
  for(j=0;j<2;j++){
   scanf("%c",&a[i][j]);
  }
 }
 for(i=0;i<5;i++){
  for(j=0;j<2;j++){
   printf("\n %c \n",a[i][j]);
   printf("\t");
  }
  printf("\n");
 }
 return 0;
}

i / p:gu sd ec

出力がありません。

私は2D配列で簡単なプログラムを試していました。出力を取得できず、入力は5 * 2文字ではなく、4*2文字しか使用していません。

4

3 に答える 3

1

私のコードを貼り付けて、%c の前にスペースを 1 つ空けてください。

   #include<stdio.h>
    int main(){
     int i=0,j=0;
     char a[5][2];
     for(i=0;i<5;i++){
      for(j=0;j<2;j++){
       scanf(" %c",&a[i][j]);
      }
     }
     for(i=0;i<5;i++){
      for(j=0;j<2;j++){
       printf("\n %c \n",a[i][j]);
       printf("\t");
      }
      printf("\n");
     }
     return 0;
    }
于 2013-03-10T08:24:22.780 に答える
0

入力スペースも char と見なされます。そのため、4*2 入力のみが使用されているように見えます。スペースなしで入力すると、5*2 char を入力できるようになります。

于 2013-03-10T08:27:05.740 に答える
-3

その理由は、scanf( "%c" ) で使用したデータ型です。

Table、NewLine、Space はすべて使用可能な文字であるためです。したがって、次のようなものを挿入すると:

 a \n

a[0][0] は 'a' になり、a[0][1] は '\n' になります。

この結論は、次のコードを使用してテストすると検証できます。

#include<stdio.h>                                                                                                                           
int main(){
  int i=0,j=0;
  int a[5][2];
  for(i=0;i<5;i++){
    for(j=0;j<2;j++){
      printf("i=%d,j=%d:\n",i,j);
      scanf("%d",&a[i][j]);
    }
  }
  for(i=0;i<5;i++){
    for(j=0;j<2;j++){
      printf("\n %d \n",a[i][j]);
      printf("\t");
    }
    printf("\n");
  }
  return 0;
}
于 2013-03-10T08:25:53.760 に答える