c语言 输入矩阵a(5行5列)

//16、输入矩阵a(5行5列),完成下列要求:
//(1) 输出矩阵a;
//(2) 将a的第2行和第5行元素对调后,形成新的矩阵a并输出;
//(3) 用对角线(指矩阵的左上角到右下角的对角线)上的元素分别去除相应行的元素,又形成一个新的矩阵a并输出。

#include <stdio.h>
void in(int a[5][5])
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
}
void out(int a[5][5])
{
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf(" %d ",a[i][j]);
printf("\n");
}
}
void deal_1 (int a[5][5])
{
int b[5];
int i;
for(i=0;i<5;i++)
{
b[i]=a[2][i];
a[2][i]=a[5][i];
a[5][i]=b[i];
}

}
void deal_2(int a[5][5])
{

}

void main()
{
int a[5][5];
in(a);
out(a);
printf("\n");
deal_1(a);
out(a);

}
2问输出结果错误....
求3小问分函数答案

涉及到除法,最好用float,不用 int.
in,out 没问题。

改正deal_1 的下标:
void deal_1 (int a[5][5]){
int b[5];
int i;
for(i=0;i<5;i++) {
b[i]=a[1][i];
a[1][i]=a[4][i];
a[4][i]=b[i];
};
}

完善你的 deal_2:
void deal_2(int a[5][5]){
int i,j,b[5];
for (i=0;i<5;i++) b[i]=a[i][i];
for (i=0;i<5;i++){
for (j=0;j<5;j++){
a[i][j]=a[i][j]/b[i];
}
}
}

涉及除法最好用float:
void deal_3(float a[5][5])
{
int i,j;
float b[5];
for (i=0;i<5;i++) b[i]=a[i][i];
for (i=0;i<5;i++){
for (j=0;j<5;j++){
a[i][j]=a[i][j]/b[i];
}
}
}
void out2(float a[5][5]){
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf(" %f ",a[i][j]);
printf("\n");
}
}

========
主函数:
void main()
{
int a[5][5];
float f[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
in(a); out(a);
printf("\n");
deal_1(a);
out(a);
deal_2(a);
out(a);
deal_3(f);
out2(f);
}
温馨提示:答案为网友推荐,仅供参考
相似回答