c语言用函数数组转置 c语言实现数组转置

C语言:编写函数,用指针型形参访问数组,把给定数组转置 , 并给出运行截图,咋做?由于题目没有说明数组是方阵,所以本答案按一般二维数组处理 。
代码文本:
#include "stdio.h"
#define N 3
#define M 5
void myf(int a[][M],int b[][N],int i,int j){//本函数将数组a转置为b
int t;
for(t=j-1,i--;i=0;i--)
for(j=t;j=0;b[j][i]=a[i][j--]);
}
int main(int argc,char *argv[]){
int a[N][M],b[M][N],i,j,t;
puts("Transpose before:");
for(t=i=0;iN;i){//给数组a赋值并输出
for(j=0;jM;printf("=",a[i][j]=t));
putchar('\n');
}
myf(a,b,N,M);//调用转置函数
puts("Transpose later:");
for(i=0;iM;i){//输出转置后的数组
for(j=0;jN;printf("=",b[i][j]));
putchar('\n');
}
return 0;
}
如何用C语言程序编写“利用函数将给定的3*3二维数组转置”#include<iostream>
usingnamespacestd;
void zhuang zhi(int a[3][3])
{int m,n,i;
for(m=0;m<2;m++)
for(i=0;i<3;i++)
{if(m?。?||i?。?)
{n=a[i][m];
a[i][m]=a[m][i];
a[m][i]=n;



int main()

inta[3][3];
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
zhuang zhi(a);
for(i=0;i<3;i++)

for(j=0;j<3;j++)
cout<<a[i][j]<<"";
cout<<endl;

return0;

运行效果:
扩展资料:
return语句有以下形式:
return;//不带返回值的return语句
return 0;//带返回值的return语句,或者返回一个变量或一个函数 。
return 1//表示函数异常结束
不带返回值的return语句用于,中断返回值为void类型的函数的执行,而带返回值的return则不行 。
#includelt;iostreamgt;
using namespace std;
void f(){
coutlt;lt;"begin"lt;lt;endl;
return 0;此处有问题 , 此时return;的作用相当于break;用于中断循环的作用 。所以不该返回某个具体的值 。
coutlt;lt;"end"lt;lt;endl;
}
int main(){
f();
return 0;
}
将return 0;换为return;后,运行成功:
总结:
return;的作用相当于break;用于中断循环的作用;return 0;则是return的另一种用法,专用于返回值非void的函数返回其值 。
求C语言程序:编写一个函数,使给定的一个二维数组(3*3)转置 。感激不尽#includestdio.h
int main()
{int i,j,t,a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("原来的数组:\n");
for(i=0;i3;i)
{
for(j=0;j3;j)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i2;i)
for(j=i 1;j3;j)
{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}
printf("转置后的数组:\n");
for(i=0;i3;i)
{
for(j=0;j3;j)
printf("%d ",a[i][j]);
printf("\n");
}
getch();
return 0;
}
c语言数组转置//try it 试试看
#include stdio.h
void transpose( int a[6][6],int n)
{
int i,j,temp;
for(i=0;in;i)
for (j=0;ji;j)
{temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}
}
void main()
{
int i,j,a[6][6],n;
printf("please input the 维度1-6:");
scanf("%d",n);
printf("请输入数组元素:\n");
for (i=0;in;i)
for(j=0;jn;j)
scanf("%d",a[i][j]);
transpose(a,n);
printf("操作后c语言用函数数组转置的数组为:\n");
for (i=0;in;i)
{
for(j=0;jn;j)
printf("%d ",a[i][j]);printf("\n");
}
C语言,调用自定义函数对m行n列数组转置,大神帮我纠错 。#include "stdio.h"
int zhuan(int (*p)[100],int m,int n)
{
int i,j,temp;
for(i=0;im;i)
for(j=0;jn;j)
{
// 防止重复交换
if ( ((ij)(mn)) || (ij)(mn))
{
temp=(*(p i))[j];
(*(p i))[j]=(*(p j))[i];
(*(p j))[i]=temp;
}
}
return 0;
}
void main()
{
int i,j,a[100][100],m,n,(*p)[100];
// 初始化二维数组
for (int k = 0; k100; k)
{
for (int l = 0;l100; l)
{
a[k][l] = 0;
}
}
printf("请输入数组行数:\n");
scanf("%d",m);
printf("请输入数组列数:\n");
scanf("%d",n);
printf("请输入数组:\n");
// 判断行和列是否大于100
while (m100 || n100)
{
printf("数组的行数和列数不能大于100,请重新输入\n");
printf("请输入数组行数:\n");
scanf("%d", m);
printf("请输入数组列数:\n");
scanf("%d",n);
printf("请输入数组:\n");
}
for(i=0;im;i)
for(j=0;jn;j)
scanf("%d",a[i][j]);
p=a[0];
zhuan(p,m,n);
printf("转置后的数组为:\n");
for(i=0;in;i)
{
for(j=0;jm;j)
printf("%d",a[i][j]);
printf("\n");
}
}
c程序数组的转置?你的数组转置程序,主要有两个问题,
一 C语言二维数组的参数声明和传参不正确
二 二维数组的转置,只需要以主对角线为轴翻转一次就行了,
因此,transport函数中for_j循环的终止条件应该为ji;
改正后的数组转置C语言程序如下(改动的地方见注释)
#includestdio.h
int main()
{
int a[3][3];
int i,j;
void transport(int a[][3]);//这里把返回值类型int改成void,把a[3][3]改成a[][3]
printf("input:");
for(i=0;i3;i)
for(j=0;j3;j)
{
scanf_s("%d",a[i][j]);//这里建议把scanf_s改成scanf
}
transport(a);//这里把a[3][3]改成a
for(i=0;i3;i)
{//这里加大括号
for(j=0;j3;j)
printf("=",a[i][j]);
printf("\n");//这里加一句,换行
}//这里加大括号
return 0;
}
void transport(int a[][3])//这里把返回值类型int改成void,把a[3][3]改成a[][3]
{
int i,j,t;
for(i=0;i3;i)
for(j=0;ji;j)//这里把j3;改成ji;
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
【c语言用函数数组转置 c语言实现数组转置】c语言用函数数组转置的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言实现数组转置、c语言用函数数组转置的信息别忘了在本站进行查找喔 。

    推荐阅读