求大神解答一道简单的c语言编程问题。 题目:编一函数实现一个n*n的矩阵转置。在程序的主函数中用s

作者&投稿:雕彦 (若有异议请与网页底部的电邮联系)
C语言(指针): 编写一个函数实现n*n矩阵转置。在主函数中用scanf输入矩阵元素;将数组名作为函数实参。~

好吧,简单说下:void fun( float a[][])
{ int i,j,float t;
for(i=0;a[i][0];i++)
for(j=i;a[i][j];j++)
{t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
这个函数的局限只限于方阵。也只能对上三角元素操作,是因为a[][]数组本身空间的限制,如果采用指针的话:
令p=a;其他注意是对内容**p之类操作即可。不过如果采用引入矩阵b来操作可以完美解决上述问题:
void fun( float a[][],float b[][])
{ int i,j;
for(i=0;a[i][0];i++)
for(j=0;a[i][j];j++)
{b[j][i]=a[i][j];
}
}
最后如果非要用a[][]输出的话,可以用b[][] 回代即可

#include
#include
int main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9};
int j,i,temp;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=1;i<2;i++)
for(j=0;j<=i;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d ",a[i][j]);
if(j==2)printf("
");
}
return 0;
}

扩展资料:
需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
参考资料:
百度百科-二维数组
百度百科-c语言

#include <stdio.h>
#include<stdlib.h>
#include<math.h>

void Transpose(int a[][10],int n);

main()
{
int n;  //储存矩阵的大小
int i,j;  
int a[10][10]={0};  //定义一个最大范围的数组储存矩阵

printf("Input n:");
scanf("%d",&n);
//用户按顺序输入一个矩阵
printf("Input %d*%d matrix:
",n,n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf(" %d",&a[i][j]);
}

Transpose(a,n);
//按顺序输出一个矩阵
printf("The transposed matrix is:
");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("
");
}

system("pause");
}

//函数功能:实现矩阵转置
void Transpose(int a[][10],int n)
{
int i,j;
int t;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
}


#include<stdio.h>
#include<string.h>
#define N 4
int convertmatrix(int m[N][N])
{
int i,j,temp;
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
temp=m[i][j];
m[i][j]=m[j][i];
m[j][i]=temp;
}
}
return 0;
}
int main()
{
int matrix[N][N];
int i,j;
printf("请输入一个%d*%d的矩阵:
",N,N);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&matrix[i][j]);
}
}
convertmatrix(matrix);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%-3d",matrix[i][j]);
}
printf("
");
}
return 0;
}





一道简单的高中数学向量题,求大神解答及详细过程!在线等!
依题意,对任意实数t,|b-at|≥2恒成立。所以(ta)^2+b^2-2t*|a|*|b|*cosθ≥4恒成立。若θ为定值,则当|b|为定值时二次函数才有最小值。故选B

求各位大神帮忙解一道及其简单的大物
回答:切向加度=半径×θ(这个是学大学物理且帮忙老师改卷的同学说的),剩下的套公式,代数值,保留一位有效数字,这些你肯定会了吧~

一道小学数学题,求大神解答,要过程
有14人需要4分钟,教练先通知一个人,然后两个人通知4个人,4个人通知8个人,后来除了教练外7个人通知其他7个人,总共需要4次联系,需要4分钟。通知125人需要7分钟,教练一起通知这样数目继续 2 4 8 16 32 64 128 这样就需要7分钟左右。

一道难题 求大神解答
(1)解:设甲工程队每天能铺设x米,则乙工程队每天能铺设(x-20)米.根据题意得:350\/x=250\/(x-20)解得:x=70 检验:x=70,是原分式方程的解 答:甲、乙工程队每天分别能铺,70米和50米.(2)解:设分配给甲工程队y米,则分配给乙工程队(1000-y)米.由题意,得解得:所以分配...

大神帮忙解答一道离散数学的题啊
反证法。假设G中不存在度数为1的结点,G是连通图,所以G的结点的度数至少是2。G有3度节点,所以G的所有结点的度数之和大于等于2(n-1)+3=2n+1。而G有n条边,度数之和是2n。矛盾。所以G中至少存在有一个度数为1的结点。

数学题一道,求大神解答。
解:如图,设正方形的边长为2a,则OA=1,OC=2,EF=2a,AF=a,所以有OF=√(1-a^2),[√(1-a^2)+2a]^2+4a^2=4,即4a√(1-a^2)=3-4a^2,由此知a^2≤3\/4 由方程[√(1-a^2)+2a]^2+4a^2=4,得32a^4-40a^2+9=0,解得a^2=(5±√7)\/8,因为a^2≤3\/4,所以a^2=...

求大神详细解答一道地理题
嫦娥三号成功实施近月制动,顺利进入环月轨道时:选B A.巴西高原一片枯黄 B.莫斯科正日上中天 C.洛杉矶正值旱季 D.尼罗河正值汛期 12月6日北半球是冬季,南半球是夏季;巴西高原在南半球,为热带草原气候,夏季是湿季,草木葱绿,A错;北京时间(东八区)比莫斯科(东三区)早8-3=5...

一道看似简单但是却让我疑惑的一道数学题,坐等数学帝真相。
一圈60格 分针每分钟走1格 时针每60分走5格,即每分钟走1\/12格 0点时,时针和分针重合。第1次垂直,分针比时针多走15格 15÷(1-1\/12)=180\/11=16又4\/11 分 之后每两次重合需要之间,分针又比时针多走30格。每两次之间需要30÷(1-1\/12)=360\/11=32又8\/11 分 一天共有24×60=...

一道逻辑题,求大神大神速度解答
441个 1个1个拿,正好拿完。3个3个拿,正好拿完。7个7个拿,正好拿完。9个9个拿,正好拿完。此数为7*9=63的倍数。设此数为63n 2个2个拿,还剩1个。4个4个拿,还剩1个。5个5个拿,还剩1个,8个8个拿,还剩1个。此数为5*8=40的倍数+1个.设此数为40k+1 即63n=40k+1 k=(...

一道智力题,求大神帮忙解答~
1、首先把球分成三组,3个,3个,2个;A组:1号2号3号;B组:4号5号6号;C组:7号8号;2、A组和B组称,有两种情况:平衡,请看3;不平衡,请看8; (第一次称)3、称A组中的任意两个,平衡请看4;不平衡,请看7 ; (第二次称)4、说明A组中的3个金币都是真币;称B组中的...

和静县18692338885: 请教一道简单的C语言题目,求大神解答 -
凭澜隆格: 你没考虑到相邻两个数相等你情况.你看样例第四组数开头有两个7,输出是-1,说明严格递增是a[i+1]>=a[i],严格递减是a[i]>=a[i+1].

和静县18692338885: 一个简单的C编程的问题!高手来解决一下!最好给出每个语句的注释哈
凭澜隆格: ================================= #include #include void main() { int i,j,k; for (i=0;i

和静县18692338885: 菜鸟求助:一道很简单的C编程题 -
凭澜隆格: 这样是可以的,形式是输入一个数跟着输出绝对值 EOF指的是end of file.是一个特定的标记 #include <stdio.h> main() { float a; while(scanf("%f",&a)!=EOF) //这个语句的意思就是用a来接收输入的数 //并以Ctrl+z结束整个程序 { if (a<0) a=-a; ...

和静县18692338885: 急~~~~~~~一个菜鸟的简单C语言问题,求高手解答... -
凭澜隆格: 这个是char型的问题 你改成这样就行了scanf(" %c",...

和静县18692338885: 一个简单的 C语言程序题,请高手解答、、
凭澜隆格: #include<stdio.h> #include<string.h> void main() {char str[1000]; int i,j; printf("please input the numbe"); gets(str);

和静县18692338885: 求大神帮忙做一道C语言简单编程,要求如下 -
凭澜隆格: #include int main() { char c = 'Y'; float x,y,z; char operate; while(c=='Y' || c=='y') { printf("please enter number1:"); scanf("%f",&x); printf("please enter operate:"); getchar(); scanf("%c",&operate); printf("please enter number2:"); scanf("%f...

和静县18692338885: 一条简单的c语言编程题. -
凭澜隆格: 对于c编程,首先是算法问题.对于这问题你可以定义买i元公鸡,j元母鸡,z元小鸡.int i,j,z{for(i=0,j=0,z=0;i<100,j<100,z<100,i++,j++,z++)x+y+z=100x/5+y/3+3z=100}ret...

和静县18692338885: 一个简单的C语言问题,求解答~~ -
凭澜隆格: 这都是一样的.但是习惯是把变量放在右边,常量放在右边.如:0 == i.这样就是防止把==打成=.这样就会使编译器报错.但如果是i == 0.这样如果写成了i=0,编译器是不会报错的.但是逻辑上就会...

和静县18692338885: C语言:一道简单的编程题目,求求求大神!! -
凭澜隆格: #include int main(){ int a, b, c; int res = 3; printf("请输入身高、收入、魅力值:"); scanf("%d %d %d", &a, &b, &c)...

和静县18692338885: 求大神讲解一道C语言程序题 -
凭澜隆格: 输出结果:_4,_2,12,11 (_代表空格)数组结构如下,例:5是a[1][1],9是a[2][2],11是a[3][1] a[][0] a[][1] a[][2]a[0] 1 2 3a[1] 4 5 6a[2] ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网