用C++编写程序,用自定义函数使给定的一个5*5的二维整型数组转至,即行列互换。(为什么输出结果时6是错误

#include<stdio.h>
#define M 5
#define N 5
void main()
{
int ti(int a);
int i,j;
int a[M][N]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int b[N][M];
b[N][M]=ti(a[M][N]);
printf("array a:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%5d",b[i][j]);
}
printf("\n");
}
}
int ti(int a)
{
int b;
b=a;
return(b);
}

b[N][M]=ti(a[M][N]);
在这块数组访问已经越界了,而且捏这个ti(int a)函数是用来干啥的,没看明白追问

因为不知道哪里错了所以才问的!

追答

b[N][M]=ti(a[M][N]);这个有问题
数组下标是从0开始的,最大下表应该是b[N-1][M-1],所以你这个是数组越界
还有ti函数一点意义都没有,只是返回一个数的副本,没必要再写个函数

追问

哦哦!知道了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-01-02
#include<stdio.h>
#define M 5
#define N 5
void main()
{
int ti(int a);
int i,j;
int a[M][N]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int b[N][M];
//b[N][M]=ti(a[M][N]);
printf("array a:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%5d",b[i][j]);
}
printf("\n");
}
}
/*int ti(int a)
{
int b;
b=a;
return(b);
}*/

不知道你那两段代码有什么用,注释掉后结果是正确的,思路没有问题。

追问

不知道怎么改好,才来问大神

追答

你删掉注释的内容再试试

用C++编写程序,用自定义函数使给定的一个5*5的二维整型数组转至,即行...
在这块数组访问已经越界了,而且捏这个ti(int a)函数是用来干啥的,没看明白

C语言,写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换。
if(z == 0)printf("此数为合数\\n");if(z == 1)printf("此数为素数\\n");少了个=号,成赋值了~

写一个函数,使给定的一个矩阵数组转置,行列互换。 比如输入 1 2 3...
\/\/动态分配n个int*的指针内存空间,用作二维数组的行指针for(i=0;i<n;i++)

...是:写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换...
void convert(int array[][3]){ int i,j,t;for (i=0;i<N;i++)for(j=i+1;j<N;j++){ j=i+1不是j+1

矩阵转置C+编程 描述 写一个函数,使给定的一个矩阵数组转置,即行列互 ...
你这个是转置吗?先输入一个矩阵A m*n阶的,转置里面应先初始化一个矩阵B n*m的 记得要先初始化哦!然后利用for循环两层i,j for i=0:n-1 for j=0:m-1 B(i,j)=B(j,i); 然后就行了试试吧

用函数调用写一个函数,使给定的一个3x3的二维整形数组转置,即行列互 ...
define N 3 void pr(int a[N][N]){ int i,j;printf("\\n");for(i=0;i<N;i++){ for(j=0;j<N;j++)printf("%5d",a[i][j]);printf("\\n");} } void fun(int a[N][N]){ int i,j,t;for(i=0;i<N;i++)for(j=i;j<N;j++)t=a[i][j],a[i][j]=a[j]...

C语言。写一个函数,使给定的一个3X3的二维整型数组转置,即行列...
void switchArray(int[3][3]);int array[][3]={{1,2,3},{4,5,6},{7,8,9}};int i,j;switchArray(array);return 0;} void switchArray(int array[][3]){ int newArray[3][3];int i,j;for(i=0;i<3;i++){ for(j=0;j<3;j++){ newArray[j]=array[j];} } for(...

写一个函数,使给定的一个3*3二维整型数组转置,即行列互换。 错误是unexp...
亲:是{}没有匹配,也就是你少了一个}#include <stdio.h> void main(){ void change(int a[3][3]);int a[3][3],i,j;printf("please enter 9 numbers:\\n");for(i=0;i<3;i++){ for(j=0;j<3;j++)scanf("%d",&a[i][j]);} printf("the array you entered:\\n");...

编写一个函数,使给定的一个n*n矩阵转置,即行列互换。
\/ 请输入行、列数为:3 4 请输入数组3×4:1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 1 5 9 2 6 10 3 7 11 4 8 12 Press any key to continue \/ include <stdio.h>#include <stdlib.h>void ...

...调用写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换...
void switchArray(int[3][3]);int array[][3]={{1,2,3},{4,5,6},{7,8,9}};int i,j;switchArray(array);return 0;} void switchArray(int array[][3]){ int newArray[3][3];int i,j;for(i=0;i<3;i++){ for(j=0;j<3;j++){ newArray[j]=array[j];} } for(...

相似回答