C语言 二维数组输出

以下为我所编的程序,总觉得很奇怪。
假设输入一个4x4的字符数组(像矩阵一样排列)进去,再想把他原封不动的输出时就出现了问题,这样输出的字符就少了最后一排
输入:
****
....
*.*.
**.*
输出:
****
....
*.*.

程序如下:
#include<stdio.h>
int main()
{
int n,m;
char a[101][101];
scanf("%d%d",&n,&m);
for (i=0; i<n; i++)
for (j=0; j<m; j++)
scanf("%c",&a[i][j]);
for (i=0; i<n; i++)
for (j=0; j<m; j++)
printf("%c",a[i][j]);
}
如果输入3x5的话,输出的时候最后一排就会少几个字符,不知道是咋回事
以这种形式输入输出数字的时候都没问题,已跪
感谢各路大神
int n,m;这里应该改成int n,m,i,j;
漏写了

第1个回答  2014-04-16
#include<stdio.h>
#include<iostream.h>
int main()
{
int n,m;
int i,j;
char a[101][101];
scanf("%d%d",&n,&m);
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
cin>>a[i][j]; // scanf("%c",&a[i][j]);
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
printf("%c ",a[i][j]);
printf("\n");
}
return 1;
}

在输入a[i][j]上,我使用c++的输入输出控制流
第2个回答  2014-04-16
因为你输入的是字符 所以回车键他也会记录 这就是你少几个原因 敲了几次回车 空格都会记录进去

请采纳~~~追问

原来如此 怎么改动呢 LS的看不懂= =

追答

你在输入数组完后 再输入一个数做判断 正确就输出数组数据不就OK了。。。

本回答被提问者采纳
相似回答