将一个3x3的矩阵转置,怎样用c语言写?

如题所述

#include<stdio.h>

int main()

{

int a[3][3];int*i;

for(i=*a;i<*a+9;scanf("%d",i++));//输入矩阵

void trans(int(*p)[3]);//声明转换函数

trans(a);

}

void trans(int(*p)[3])

{

int i,j,t,*k;

for(i=0;i<3;i++)

for(j=0;j<i;j++)

{

t=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=t;//行列交换

}

for(i=0;i<3;i++,printf("\n"))

for(k=*(p+i);k<*(p+i)+3;printf("%2d",*k++));//输出转置矩阵

}

扩展资料:

C#中for语句的语法:

for(initialization;Boolean expression;update control variable)

statement

其中,statement(语句)是for循环主体,要么是一个语句,要么是用大括号{}封闭的代码块。[3]

例子1:

static void Main(string[]args)

{

for(int i=0;i<10;i++)

{

Console.WriteLine(i);

Console.ReadLine();

}

}

例子2:

static void Main(string[]args)

{

int i=0;

for(;i<10;i++)

{

Console.WriteLine(i);

Console.ReadLine();

}

}

例子2运算得到例子1相同的结果。

Pascal语言中的for循环

循环次数已知时,可以用for语句实现循环结构。

for语句有两种格式:递增型和递减型。

(1)递增型for语句格式

for<循环变量>:=<初值>to<终值>do<语句>;

(2)递减型for语句格式,

for<循环变量>:=<初值>downto<终值>do<语句>;

其中,“循环变量"为一个有序类型的数据,

在第一种形式中,使用的是保留字to,循环变量则从“初值"开始逐一增加到“终值";

在第二种形式中,使用的是保留字downto,“循环变量"则从“初值"开始逐一递减到“终值",每次执行一次循环体语句。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-12
行列互换就可以了.
main( )
{
int i=0,,j=0;
int a[3][3]={1,2,3,4,5,6,7,8,9};
int b[3][3];
printf("矩阵转置前\n");
for(i=0;i<3;i++)
for(j=0;)j<3;j++)
{ printf("%2d",a[i][j]);
printf("\n);
}
printf("矩阵转置前\n");
for(i=0;i<3;i++)
{
for(j=0;)j<3;j++)
{ b[j][i]= a[i][j];
printf("%2d",b[i][j]);
printf("\n);
}
}本回答被网友采纳
第2个回答  2012-05-12
#include <stdio.h>

void transe(int a[][3],int b[3][3])
{
int i,j;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
b[j][i] = a[i][j];
}

int main()
{
int i,j;
int a[3][3] = {1,2,3,4,5,6,7,8,9};
int b[3][3];
transe(a,b);
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
printf("%d ",b[i][j]);
printf("\n");
}
return 0;
}
第3个回答  2012-05-12
这个书上都有啊,转置那一节,书上的比我们给你打出来还准确一些,好运噢
相似回答