c语言编程题,编写一个函数,实现n阶方阵的转置(即行列互换)急急急!!!感谢

c语言编程题,编写一个函数,实现n阶方阵的转置(即行列互换)急急急!!!感谢,第1张

#include <stdioh>

#include <stdlibh>

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("\n");

}

return 0;

}

扩展资料:

需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

参考资料:

百度百科-二维数组

百度百科-c语言

#include <stdioh>

int main()

{

int a[3][3], b, c, d;

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

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

scanf("%d",&a[b][c]);

printf("\n");

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

for (c = b+1; c<3; c++)

{

d = a[b][c];

a[b][c] = a[c][b];

a[c][b] = d;

}

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

{for (c = 0; c<3; c++)

printf("%d ",a[b][c]);

printf("\n");

}

return 0;

}

scanf("%d",a[i][j]);

scanf("%d",((a+i)+j));

这两个只需要一个,第二个是正确的,第一个错误,第一个正确形式为scanf("%d",&a[i][j]);

两个去掉一个。

行列互换,也就是将

a[i][j]的数据 放到b[j][i]上。

对于初学者,用第二个矩阵最简单了。

于是

int main()

{

    int a[4][4],b[4][4];

    int i,j;

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

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

            scanf("%d",&a[i][j]);

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

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

            b[i][j] = a[j][i];

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

    {

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

            printf("%d,",b[i][j]);

        printf("\n");

    }

    return 0;        

}

这样就可以了。

#include<stdioh>

void main()

{

int a[2][3]={{1,2,3},{4,5,6}};

int b[3][2],i,j;

printf("array a:\n");

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

{

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

{

printf("%d",a[i][j]);

b[j][i]=a[i][j];

}

printf("\n");

}

printf("array b:\n");//括号内你缺少右边的引号

for(i=0;i<=2;i++)//注意i的取值

{

for(j=0;j<=1;j++)//注意j的取值,i,j的值你刚好弄反了

{

printf("%d",b[i][j]);

}

printf("\n");//你缺少这行代码,不能有效的显示

}

}

我已经调试过了,能正确运行,如果不行的话,提出你具体的问题!

用一个循环。

先用参数取到到底要变成多少行,和单价

declare@tint

declare@salnvarchar(8)

根据需求或实际情况将应变为多少行这个烤取给变量@t,单价取给@sal

设置循环的起始数值

declare@iint

set@i=1

开始循环

while(@i

begin

--将单行的数据插入需要的表

insertinto()

values()

--循环参数自增

set@i=@i1

end

首先,你的程序逻辑有问题,在交换的时候,所有以对角线为中心的对称元素交换了两次,相当于没有交换;所以如果换成a[i][j]输出的话,结果与没有交换前的一样。即使,你把中间交换元素的那部分代码删去,最后用a[j][i],输出的结果感觉是交换了,其实在内存中(数组中)其实并没有交换。

我帮你改正后的代码如下,改正过的地方前边已做注释:

#include <stdioh>

#include <stdlibh>

int main ()

{

int a[3][3];

int i,j,t;

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

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

scanf ("%d",&a[i][j]);

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

//fixed: j = i + 1

for (j=i+1; j<3; j++)

//fixed: delete if

{ 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++)

{

//fixed: used a[i][j]

printf ("%d ",a[i][j]); //这句为什么是a[j][i],而不是a[i][j];

if (j == 2)

printf ("\n");

}

system("pause");

return 0;

}

以上就是关于c语言编程题,编写一个函数,实现n阶方阵的转置(即行列互换)急急急!!!感谢全部的内容,包括:c语言编程题,编写一个函数,实现n阶方阵的转置(即行列互换)急急急!!!感谢、C语言,使一个3*3的数组转置,即行列互换、实现3行3列矩阵的转置,即行列互换。(C语言)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10190891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存