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

我没有输出。

我在二维数组上尝试了一个简单的程序。我无法获得输出并且输入不占用 5*2 个字符,而是只占用 4*2 个字符。

4

3 回答 3

1

粘贴我的代码,在 %c 前留一个空格。

   #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

在您的输入空间也被视为字符,因为在您看来,只有 4*2 输入被采用。输入没有空格,您将能够输入 5*2 字符。

于 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 回答