注册 登录
编程论坛 C语言论坛

萌新,大佬指点一下,找不出错误

小萌新求帮助 发布于 2021-10-27 20:52, 1321 次点击
#include<stdio.h>
#include<math.h>
int main()
{
    int a[3][2];int b[2][3];
    int i,j;
    for (i=0;i<=2;i++)
            {
             for (j=0;j<=1;j++)
                scanf("%d ",&a[i][j]);
            }
    for (i=0;i<=2;i++)
        {
            for (j=0;j<=1;j++)
                {
               
                printf("%8d",a[i][j]);
                }
            printf("\n");
        }
    a[i][j]=b[j][i];printf("\n");
    for (i=0;i<=1;i++)
        {
            for (j=0;j<=2;j++)
                {
               
                printf("%8d",a[i][j]);
                }
            printf("\n");
        }

}
1 回复
#2
自由而无用2021-10-27 21:38
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    int a[3][2];
    int b[2][3];
    int i, j;

    for (i = 0; i <= 2; i++)
        for (j = 0; j <= 1; j++)
#define V_DBG
#ifndef V_DBG
            /* scanf("%d ",&a[i][j]); */
#else
            //set value->a
            a[i][j] = i * 10 + j;
#endif
    //print->a
    for (i = 0; i <= 2; i++)
        for (j = 0; j <= 1; j++)
            printf("a[%d][%d] = %d\t", i, j, a[i][j]);
    puts("");
    //dup a->b
    memcpy(b, a, sizeof(a));
    //print->b
    for (i = 0, argv[0] = (char *)&b; i < 2 * 3; i++)
        printf("b[%d] = %d\t", i, ((int *)argv[0])[i]);
            
    return 0;
}


output sample:

a[0][0] = 0    a[0][1] = 1    a[1][0] = 10    a[1][1] = 11    a[2][0] = 20    a[2][1] = 21   
b[0] = 0    b[1] = 1    b[2] = 10        b[3] = 11        b[4] = 20        b[5] = 21

[此贴子已经被作者于2021-10-27 21:42编辑过]

#3
apull2021-10-27 23:20
我猜你是打算把数组a行列对调复制到数组b,修改了下你的代码。

程序代码:

#include<stdio.h>
#include<math.h>
int main()
{
    int a[3][2];int b[2][3];
    int i,j;
    for (i=0;i<=2;i++)
    {
         for (j=0;j<=1;j++)
            scanf("%d",&a[i][j]);
    }
    for (i=0;i<=2;i++)
    {
        for (j=0;j<=1;j++)
        {
            printf("%8d",a[i][j]);
        }
        printf("\n");
    }
        
    //a[i][j]=b[j][i]; 此时i=3,j=2,i,j都已越界。
    printf("\n");
   
    for (i=0;i<=2;i++)
    {
        for (j=0;j<=1;j++)
        {
            b[j][i]=a[i][j];
        }
    }
   
    for (i=0;i<=1;i++)
    {
        for (j=0;j<=2;j++)
        {
            printf("%8d",b[i][j]);  //输出b
        }
        printf("\n");
    }

}


[此贴子已经被作者于2021-10-27 23:22编辑过]

1