c语言转置
‘壹’ c语言矩阵转置
//#include "stdafx.h" //////////////VC中没有该头文件
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
void shuru( int a[5][5]);
void zhuan(int a[5][5]);
int main(int argc, char* argv[])
{
int a[5][5];
shuru(a);//////////////////a[5][5]改成a
zhuan(a);///////////////a[5][5]改成a
return 0;
}
void shuru( int a[5][5])
{
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{a[i][j]=rand()%101;}/////////////random(101)改成rand()%101,取0-101的随机数
}
printf("chushi:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
void zhuan(int a[5][5])
{
int t,i,j;
for(i=0;i<5;i++)
{
for(j=i;j<5;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
printf("wancheng:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
‘贰’ c语言矩阵转置和快速转置怎么求
sinz=[e^(iz)-e^(-iz)]/2i=2
==> e^(iz)-e^(-iz)=4i
设x=e^(iz),那么有
x-1/x=4i
==> x^2-4ix-1=0
x=[4i±√(-16+4)]/2
x=(2±√3)i
x=e^(iz)=(2±√3)i
==> iz=Ln[(2±√3)i]
==> iz=ln|(2±√3)i|+iArg((2±√3)i)+i2nπ
==> iz=ln(2±√3)+iπ/2+i2nπ
==> z=-iln(2±√3)+π/2+2nπ
这里|*|代表求模的意思,Arg为辐角主值,这里,(2±√3)i对应的角度是π/2。
‘叁’ c程序数组的转置
你的数组转置程序,主要有两个问题,
一 C语言二维数组的参数声明和传参不正确
二 二维数组的转置,只需要以主对角线为轴翻转一次就行了,
因此,transport函数中for_j循环的终止条件应该为j<i;
改正后的数组转置C语言程序如下(改动的地方见注释)
#include<stdio.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;i<3;i++)
for(j=0;j<3;j++)
{
scanf_s("%d",&a[i][j]);//这里建议把scanf_s改成scanf
}
transport(a);//这里把a[3][3]改成a
for(i=0;i<3;i++)
{//这里加大括号
for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf(" ");//这里加一句,换行
}//这里加大括号
return 0;
}
void transport(int a[][3])//这里把返回值类型int改成void,把a[3][3]改成a[][3]
{
int i,j,t;
for(i=0;i<3;i++)
for(j=0;j<i;j++)//这里把j<3;改成j<i;
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
‘肆’ C语言编程:N*N方阵的转置
#include<stdio.h>
int main()
{
int n,t,a[100][100],i,j; scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++) scanf("%d",&a[i][j]);
printf("转换后: ");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
printf("%d",a[j][i]); else printf(" %d",a[j][i]);
}
printf(" ");
}}}
(4)c语言转置扩展阅读:
C语言书写规则:
1、一个说明或一个语句占一行。
2、用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。
3、低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。
网络-c语言
‘伍’ c语言 矩阵转置的编写
#include "stdio.h"
void main()
{
void zhuan(int array[2][3],int b[3][2]);
int array[2][3],b[3][2]; int i,j;
printf("input:\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
scanf("%d",&array[i][j]);
}
printf("\n");
zhuan(array,b);
printf("\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%d",b[i][j]);
printf("\n");
}
}
void zhuan(int array[2][3],int b[3][2]) //转置函数逻辑错误,没那么麻烦,直接转就是了!
{
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
b[j][i]=array[i][j];
}
}
‘陆’ C语言为什么数不能够转置
这样修改就可以了:
#include <iostream>
int main()
{ int a[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
for (int i = 0; i <= 2; i++)
{ for (int k = 0; k <= 2; k++)
{ printf("%d ", a[i][k]);
}
printf(" ");
}
void T(int x[3][3]);
T(a);
}
void T(int x[3][3])
{ for (int i = 0; i <= 2; i++)
{ for (int k = 0; k < i; k++) //就改了这一行
{ if (i != k)
{ int m = x[i][k];
x[i][k] = x[k][i];
x[k][i] = m;
}
}
}
printf("转置后的行列式为: ");
for (int i = 0; i <= 2; i++)
{ for (int k = 0; k <= 2; k++)
{ printf("%d ", x[i][k]);
}
printf(" ");
}
}
‘柒’ c语言数组转置
//try it 试试看
#include <stdio.h>
void transpose( int a[6][6],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
for (j=0;j<i;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;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
transpose(a,n);
printf("操作后的数组为:\n");
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);printf("\n");
}
‘捌’ c语言数组转置问题
改为“scanf("%d",&a[i][j] ); ”
你这个程序只是改变了输出顺序(在输出上完成了转置),而实际在内存的存储数据没有发生任何变化。
‘玖’ c语言如何通过定义函数来转置矩阵
#include <stdio.h>
int main()
{ struct aaa
{ int x;
int y;
};
struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};
int i,j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
printf("after: ");
for(i=0; i<3; i++)
for(j=0; j<i; j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
return 0;
}
或:
#include <stdio.h>
struct aaa
{ int x;
int y;
};
void zhuan(struct aaa a[][3])
{ struct aaa t;
int i,j;
for(i=0; i<3; i++)
for(j=0; j<i; j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
void prt(struct aaa a[][3])
{ int i,j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
}
int main()
{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};
prt(a);
zhuan(a);
printf("after: ");
prt(a);
return 0;
}
‘拾’ C语言的矩阵转置
#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define length 3//指定长度
/*装置矩阵*/
void transposition(int Array[length][length])
{
int ArrayTemp[length][length];
for (int i = 0;i < length;i++)
{
for (int j = 0;j < length;j++)
{
ArrayTemp[j][i] = Array[i][j];
}
}
for (i = 0;i < length;i++)
{
for (int o =0;o < length;o++)
{
Array[i][o] = ArrayTemp[i][o];
}
}
return;
}
main()
{
int i,j;
/*printf("please input length\n");
scanf("%d",&length)*/
int Array[length][length];
printf("please input transposition\n");
for (i = 0;i < length;i++)
{
for (j = 0;j < length;j++)
{
scanf("%d",&Array[i][j]);
}
}
for (i = 0;i < length;i++)
{
for (j = 0;j < length;j++)
{
printf("%3d",Array[i][j]);
}
printf("\n");
}
printf("\n\n");
transposition(Array);
for (i = 0;i < length;i++)
{
for (j = 0;j < length;j++)
{
printf("%3d",Array[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}