寒紫晴君北月圆房那章:用C语言编写一Total函数,求N行M列的二维数组中所有数的和

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 12:52:24

当行列较多,或元素数值较大时,和可能很大,所以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;
}

#define N 3
#define M 3
main()
{
int i,j;
int a[N][M]={1,2,3,4,5,6,7,8,9};
Total(a);
getch();
}

int Total(int a[N][M])
{
int i,j,sum;
sum=0;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
sum+=a[i][j];
printf("%d",sum) ;
}

include<stdio.h>
main()
{
int m,n,;
pritf("输入M,N");
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
total(m,n);
}
int total(int m,int n)
{int i,j,sum;
for(i=0;i<m;i++)
for(i=0;j<n;j++)
sum+=a[i][j];
printf("%d",sum);
}