C:二维数组转换,将第一行与第二行换位置,第二行与第四行换位置,如此对调,如果是初始化的数组就不出错

#include<stdio.h>
void main(void)
{
/*int b[5][5],i,k,j=4;
int a[5][5]={
0,11,12,7,9,
1,9,7,4,5,
20,13,18,3,1,
14,5,6,8,2,
15,9,17,4,1
};*/ //定义变量,初始化数组
int a[5][5],b[5][5],i,k,j=4; //定义变量,数组
printf("输入要转换的二维数组:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]); //给二维数组a赋值
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%-5d",a[i][j]);
printf("\n"); //输出需要转换的二维数组a
}
for(i=0;i<5;i++)
{
for(k=0;k<5;k++)
{
b[j][k]=a[i][k];
}
j--;
} //完成数组转换b
printf("输出矩阵:b=\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%-5d",b[i][j]); //输出b
printf("\n");
}
}

输出需要转换的二维数组a 之后,必须有j--使j的值减1才行,你少了这一句指令
修改后已测试
#include<stdio.h>
void main(void)
{
/*int b[5][5],i,k,j=4;
int a[5][5]={
0,11,12,7,9,
1,9,7,4,5,
20,13,18,3,1,
14,5,6,8,2,
15,9,17,4,1
};*/ //定义变量,初始化数组
int a[5][5],b[5][5],i,k,j=4; //定义变量,数组
printf("输入要转换的二维数组:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]); //给二维数组a赋值
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%-5d",a[i][j]);
printf("\n"); //输出需要转换的二维数组a
}

j--; //你少了这个,在上面执行完后,j=5,必须-1才能执行下面的代码

for(i=0;i<5;i++)
{
for(k=0;k<5;k++)
{
b[j][k]=a[i][k];
}
j--;
} //完成数组转换b
printf("输出矩阵:b=\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%-5d",b[i][j]); //输出b
printf("\n");
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答