用C语言编写一Total函数,求N行M列的二维数组中所有数的和

如题所述

当行列较多,或元素数值较大时,和可能很大,所以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;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-07-08
#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) ;
}
第2个回答  2006-07-08
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);
}

C程序设计的求二维数组各列各行的和与总和
int m,n;int i,j;int line_sum=0,row_sum=0;int total=0;int a[100][100];printf("输入行数:");scanf("%d",&m);printf("输入列数:");scanf("%d",&n);\/\/输入矩阵 printf("输入矩阵:\\n");for(i=0;i<m;i++)for(j=0;j<n;j++){ printf("a[%d][%d](输入后按回车...

c语言编程:求出M行N列二维数组每列元素中的最小值,并计算它们的和值...
int column_min(int (*p)[100],int M,int N){ int i,min;min=p[0][N];for(i=0;i<M;i++)if(p[i][N]<min)min=p[i][N];return min;} 有字数限制,要的话把QQ给我,发到你邮箱

c语言求二维数组中所有元素的和
} printf("%d\\n",k);return 0;}

C语言二维数组中每行最大值和每行和
max, sum, i, j;for (i = 0; i < M; i++) {for (j = 0; j < N; j++) {scanf("%d", &data[i][j]);}}printf("\\n");for (i = 0; i < M; i++) {max = data[i][0];sum

C语言中,求二维数组的每一行的和与平均值
include <stdio.h>#include <string.h>int main(){int i=0,j=0,total=0;float avr=0;int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};for (i=0;i<3;i++){total=0;for (j=0;j<3;j++){total +=a[i][j];}avr = (float)(total\/3.0);printf("sum[%d] aver[%...

编写C++程序,求二维数组中的全部元素之和
include<stdio.h> void main { int m,n;int a[10][10];printf("请输入二维数组的行数和列数");scanf("%d%d",&m,&n);for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ scanf("%d",&a[i][j]);sum+=a[i][j];} } printf("全部元素和为%d",sum);} ...

C语言简化,二位数组每一行 每一列的和.
include<stdio.h>#define rmax 3 \/\/ 数组行数#define cmax 5 \/\/数组列数int main(){ int a[rmax][cmax]={{3,5,8,1,4},{34,2,67,21,6},{7,8,3,10,20}}; int i=0,j=0,rSum[rmax]={0},cSum[cmax]={0}; for(i=0;i<rmax;i++) { for(j=0;j<cma...

...编写void函数,tt指向一个m行n列的二维数组,求二维数组每列中的最大...
void fun(int tt[M][N], int pp[N]){ int maxv, i, j; for (i = 0; i < N; ++i){ maxv = tt[0][i] for (j = 1; j < M; ++j){ if (maxv < tt[i][j]){ maxv = tt[i][j]; } } pp[i] = maxv; }} ...

c语言上机试题
aver\/=m; for(i=0,i<m;i++) if(score[i]<aver) {below[k]=score[i]; k++;} return k;} 2.请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 2.void fun(int *a,int *n) {int i,j=0;...

...函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序依次放到一维...
函数使用两个嵌套的for循环以列为顺序遍历二位数组,将其中每一个数据元素都存储进准备好的一维数组中。因为c语言函数无法将整个数组作为返回值,故函数会返回一个指向一维数组的指针。具体代码如图:

相似回答
大家正在搜