#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;
}
扩展资料:
需要说明的是:
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语言)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)