代码无法输出2 * 3的矩阵

这是我写的输入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型的
其次输入要取地址,要加&

具体看修改过的代码。

仅供参考!谢谢!

img


#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