c语言。给定一个5行5列的二维数组a[5][5],通过scanf函数给数组赋值,以矩阵的形式输出数

2025-02-28 04:41:40
推荐回答(2个)
回答1:

#include
int main()
{
int a[5][5],trans[5][5],b[5][2],c[5][2],sum=0,i,j,k,temp;
for(i=0;i<5;i++)//初始数组a[5][5]的录入
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);

for(i=0;i<5;i++)//数组的转置
for(j=0;j<5;j++)
trans[j][i]=a[i][j];
printf("矩阵转置后:\n");
for(i=0;i<5;i++)//转置后的数组的输出
{
for(j=0;j<5;j++)
printf("%d ",trans[i][j]);
printf("\n");
}
printf("\n");

for(i=0;i<5;i++)//主对角线上各个数字之和
sum=sum+a[i][i];
printf("矩阵主对角线上的数字之和为:%d\n",sum);
printf("\n");

printf("打印输出矩阵a左下半的三角如下:\n");
for(i=0;i<5;i++)//打印输出矩阵a左下半的三角元素
{
for(j=0;j<=i;j++)
printf("%d ",a[i][j]);
printf("\n");
}

printf("输入新的数组b[5][2]: \n");
for(i=0;i<5;i++)//录入数组b[5][2],同时对数组c初始化
{
for(j=0;j<2;j++)
{
scanf("%d",&b[i][j]);
c[i][j]=0;
}
}
for(i=0;i<5;i++)//矩阵相乘
{
for(j=0;j<2;j++)
{
temp=0;
for(k=0;k<5;k++)
temp+=a[i][k]*b[k][j];
c[i][j]=temp;
}
}
for(i=0;i<5;i++)//相乘后的矩阵的输出
{
for(j=0;j<2;j++)
printf("%d ",c[i][j]);
printf("\n");
}
return 0;
}

幸不辱命!代码调试成功的。。

回答2:

然而只有二十分