C语言 求矩阵各行各列的和

#include<stdio.h>
Sr(int a,int n)
{int i ,j,c=0;
for(i=n;i<n+1;i++)
for(j=0;j<5;j++)
c+=a[i][j];
return c;
}
Sc(int a,int n)
{int i ,j,c=0;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
if(j=n)c+=a[i][j];
return c;
}

main()
{int a[3][5]={1,3,5,7,9,2,4,6,8,10,3,5,8,7,6};

printf("%d\n",Sr(a,0));
printf("%d\n",Sr(a,1));
printf("%d\n",Sr(a,2));
printf("%d",Sc(a,0));
printf("%d",Sc(a,1));
printf("%d",Sc(a,2));
printf("%d",Sc(a,3));
printf("%d",Sc(a,4));
}
看看有什么问题 谢谢咯

思路:求矩阵各行的和时,矩阵的行先不变,利用for循环依次遍历该行的每一列元素累加求和;求矩阵各列的和时,矩阵的列先不变,利用for循环依次遍历该列的每一行元素累加求和。

参考代码:

#include<stdio.h>
int Sr(int a[3][5],int n)//求矩阵n行的累加和 
{
int i,j,c=0;
for(j=0;j<5;j++)
c+=a[n][j];
return c;
}
int Sc(int a[3][5],int n)//求矩阵n列的累加和 
{
int i ,j,c=0;
for(i=0;i<3;i++)
c+=a[i][n];
return c;
}

int main()
{
int i,j,a[3][5]={1,3,5,7,9,2,4,6,8,10,3,5,8,7,6}; 
for(i=0;i<3;i++){
for(j=0;j<5;j++)
printf("%d ",a[i][j]);
printf("\n");
}

printf("各行的累加和为:\n");
for(i=0;i<3;i++)
printf("%d ",Sr(a,i));
printf("\n各列的累加和为:\n");
for(i=0;i<5;i++)
printf("%d ",Sc(a,i));
return 0;
}
/*
输出: 
1 3 5 7 9
2 4 6 8 10
3 5 8 7 6
各行的累加和为:
25 30 29
各列的累加和为:
6 12 19 22 25
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
#include <stdio.h>
Sr(int a[][5],int n) //<<<参数形式 int a ==> int a[][5]
{int i,j,c=0;
//for(i=n;i<n+1;i++) //<<<无需循环
for(j=0;j<5;j++)
c += a[n][j];//<<<a[i][j]==>a[n][j]
return c;
}
Sc(int a[][5],int n)//<<<参数形式 int a ==> int a[][5]
{int i ,j,c=0;
for(i=0;i<3;i++)
//for(j=0;j<5;j++) //<<<不需循环
/*if(j=n)*/ c+=a[i][n]; //不需if, a[i][j]==>a[i][n]
return c;
}

main()
{int a[3][5]={1,3,5,7,9,2,4,6,8,10,3,5,8,7,6};

printf("%d\n",Sr(a,0));
printf("%d\n",Sr(a,1));
printf("%d\n",Sr(a,2));
printf(" %d ",Sc(a,0));//<<<给点空格
printf("%d ",Sc(a,1));//<<<给点空格
printf("%d ",Sc(a,2));//<<<给点空格
printf("%d ",Sc(a,3));//<<<给点空格
printf("%d ",Sc(a,4));//<<<给点空格
}
///////////运行结果,是你要的吗?
25
30
29
6 12 19 22 25本回答被提问者采纳
第2个回答  2012-01-10
请参考
#include"stdio.h"
Sr(int a[][5],int n)
{int j,c=0;
for(j=0;j<5;j++)
c+=a[n][j];
printf("a[%d][]=%d\n",n,c);
}

Sc(int a[][5],int n)
{int i,c=0;
for(i=0;i<3;i++)
c+=a[i][n];
printf("a[][%d]=%d\n",n,c) ;
}

main()
{int a[3][5]={{1,3,5,7,9},{2,4,6,8,10},{3,5,8,7,6}};
int i,j;
for(j=0;j<3;j++)
Sr(a,j);
for(i=0;i<5;i++)
Sc(a,i);
}
相似回答