这是我写的输入m行n列的矩阵代码,列如当m=2,n=3时,输入1 2 3 4 5 6 ,它无法输出一个2行3列的矩阵(调试结果显示在程序输入6之后,循环结构又返回j=0);可是当m,n均大于2或者均等于2时,这个程序是可以输出一个矩阵的,请教各位这是为啥
#include<stdio.h>
#define m 2
#define n 3
main(){
char ch[m][n]={1};
int i=0,j=0;
printf("请输入一个%d行%d列的矩阵:\n",m,n);
**for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",ch[i][j]);
}**
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%4d",ch[i][j]);
}
printf("\n");
}
scanf("%d",ch[i][j]);
改为
scanf("%d",&ch[i][j]);
#include<stdio.h>
#define m 2
#define n 3
main(){
int ch[m][n]={1};
int i=0,j=0;
printf("请输入一个%d行%d列的矩阵:\n",m,n);
**for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&ch[i][j]);
}**
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%4d",ch[i][j]);
}
printf("\n");
}
首先数据类型要匹配,%d格式化是对应int型的
其次输入要取地址,要加&
具体看修改过的代码。
仅供参考!谢谢!
#include<stdio.h>
#define m 2
#define n 3
int main()
{
int ch[m][n];
int i = 0, j = 0;
printf("请输入一个%d行%d列的矩阵:\n", m, n);
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &ch[i][j]);
}
}
putchar('\n');
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%-4d", ch[i][j]);
}
printf("\n");
}
}
类型错了,char输出不是%d