当行列较多,或元素数值较大时,和可能很大,所以Total函数用double送返。
元素数值用 float 型 (允许输入float,int值)。
N,M不定,所以动态分配数组。
假定N,M大于等于2。
#include <stdio.h>
#include <stdlib.h>
double Total(float **a,int N,int M) ; // 函数原型
main (int argc, char *argv[])
{
int i,j;
float **a;
int N,M;
Lab1:
printf("Enter N: ");
scanf("%d",&N);
if (N <=1 ) {
printf("N must >= 1\n");
goto Lab1;
}
Lab2:
printf("Enter M: ");
scanf("%d",&M);
if (M <=1 ) {
printf("M must >= 1\n");
goto Lab2;
}
a = (float **) malloc( N * sizeof(float));
for(i=0; i < M ; i++)
*(a+i) = (float *)malloc(M * sizeof(float));
// a[j][i]; j行,i列
for (j=0;j<N;j++) for (i=0;i<M;i++) {
printf("enter: a[%d][%d]=",j,i);
scanf("%f", &a[j][i]);
}
printf("%lf",Total(a,N,M)) ;
}
double Total(float **a,int N,int M)
{
int i,j;
double sum;
sum=0;
for (j=0;j<N;j++) for (i=0;i<M;i++) sum = sum + a[j][i];
return sum;
}
温馨提示:答案为网友推荐,仅供参考