for(i=0;ii;i++)
创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为禹会企业提供专业的成都做网站、成都网站制作,禹会网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
兄弟,这句话错了,应该是for(i=0;i3;i++)
printf("处理后的数组为\n")
这句话少了一个分号
printf("\n")这个也是少分号
C语言中不接受数组作为函数的参数和返回值,所以你传递数组的做法是错误的。
但是可以传递数组的指针,例如:
void array(int a[][3]){...}
声明或定义时,如下语句的效果等同于上面:
void array(int a[3][3]){...}
但是在实际调用的时候,你必须传递指针:
array(a);
你代码中传递的参数a[3][3]实际类型是int(而且已经越界),
由于是指定了大小,所以没必要什么互换了。直接将数据copy到另外一个数组就OK了~~
如将数组:
1 2
3 4
5 6
7 8
行列互换后得到: 1 3 5 7
2 4 6 8
如果要在主函数中输出互换后的结果,那就讲数组b定义成全局变量吧…………
#includestdio.h
int b[2][4];
void change(int a[][2])
{
int i=0,j=0;
for(;i4;i++)
{
b[0][i]=a[i][0];
b[1][i]=a[i][1];
}
}
void main()
{
int i=0,j=0;
int a[4][2]={{1,2},{3,4},{5,6},{7,8}};
change(a);
for(j=0;j2;j++)
{
for(i=0;i4;i++)
printf("%d ",b[j][i]);
printf("\n");
}
}
转换干啥,直接写个读取函数就好了啊、大概就下面这意思。
int Read(int r, int c)
{
return arr[r][c];
}
int ReadAsTransposition(int r, int c)
{
return arr[c][r];
}
给你举个例子:矩阵a[2][3]=1 2 3
4 5 6
要求行列互换,那么b[3][2]=1 4
2 5
3 6
程序如下:
#include "stdio.h"
main()
{int a[2][3],i,j,b[3][2];
for(i=0;i2;i++)
for(j=0;j3;j++)
b[j][i]=a[i][j];//现a矩阵的行和列等于转换后b矩阵的列和行;
for(i=0;i3;i++)
for(j=0;j2;j++)
printf("%3d",b[i][j]);
printf("\n");
}
希望楼主能学会这个方法
#include stdio.h
#include stdlib.h
int main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9};
int j,i,temp;
for(i=0;i3;i++)
for(j=0;j3;j++)
scanf("%d",a[i][j]);
for(i=1;i2;i++)
for(j=0;j=i;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
for(i=0;i3;i++)
for(j=0;j3;j++)
{
printf("%d ",a[i][j]);
if(j==2)printf("\n");
}
return 0;
}
扩展资料:
需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
参考资料:
百度百科-二维数组
百度百科-c语言