c语言求二维数组中所有元素的和

如题所述

#include<stdio.h

int main(void)

{

int ar[3][3]= { {1,2,3},

{4,5,6},

{7,8,9}

};

int num;

int i,j;

int k = 0,sum=0;

int (*ptr)[3];

ptr = ar;

num = sizeof(ar) / sizeof(ar[0]);

printf("num = %d\n",num);

printf("%d\n",*(*(ptr +0) + 1));

for(i = 0; i < 3 ;i++)

{

for(j = 0 ;j < 3; j++)

{

k += *(*(ptr + i)+j);

//sum += k;     

}

}

printf("%d\n",k);

return 0;

}

扩展资料:

main()函数用法:

大多数UNIX系统对main函数提供了三个参数,原型如下:

intmain(intargc,char*argv[],char*env[]);

其中第三个参数是环境表地址。

ANSIC规定main函数只有两个参数,而且第三个参数与全局变量environ相比也没有带来更多益处,所以POSIX.1也规定应使用environ而不使用第三个参数。

通常用getenv和putenv函数来存取特定的环境变量,而不是用environ变量。

main函数的原型多是下面这种形式:

intmain(intargc,char*argv[]),参数argc代表了输入参数的个数,char*argv[]表示传入的参数的字符串,是一个字符串数组。

例如在linux平台下编写一个小程序

int main(intargc,char*argv[])

int i;

printf("argc:%d\n",argc);

for(i=0;i<argc;i++)

printf("argv[%d]:%s\n",i,argv[i]);

exit(0);

用gcc编译后形成一个a.out的可执行的文件,运行a.out,其结果是:

argc=1,argv[0]=”a.out”

运行的程序的文件名,也占用一个参数位置,也就是说argv数组中的第一个单元指向的字符串总是可执行程序的名字,以后的单元指向的字符串依次是程序调用时的参数。这个赋值过程是操作系统完成的,只需要拿来用就可以了。

在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以for(i=0;i<argc;i++)这句也可以换成while(*argv!=NULL)

int main(intargc)省略其它参数的定义也是可以的,这样运行时候argc就直接返回参数个数,而不返回其它。

运行命令行参数带有char*argv[]的时候,如果输入参数带有空格,应该用双引号括起来。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-03-04

遍历二维数组,逐个累加即可。

以二维数组为10行5列为例。

int a[10][5],i,j,s=0;
for(i = 0; i < 10; i ++)
    for(j = 0; j < 5; j ++)
        scanf("%d",&a[i][j]);//输入每个元素的值。
for(i = 0; i < 10; i ++)
    for(j = 0; j < 5; j ++)
        s+=a[i][j];//累加每个元素
        
printf("%d",s);//输出结果。

第2个回答  2013-06-17
#include<stdio.h>
#define N 5    //可以改变数组的行数,***但是输数的时候要注意***
#define M 4    //可以改变数组的列数
void main()
{
    int i,j,a[][];
    int sum=0;//用于求和
    printf("请输入数:");
    for(i=0;i<N,i++)
    {
        for(j=0;j<M,j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<N,i++)
    {
        for(j=0;j<M,j++)
        {
            sum = sum + a[i][j];
        }
    }
    printf("数组总和为%d\n",sum);
    return 0;
    }
    希望对你有用,谢谢,望采纳!!!

追问

有错误

有错误

追答

a[][]改为a[N][M]

第3个回答  推荐于2018-02-26
1 #include <stdio.h>
2 int main()
3 {
4 int a[4][5] = {1,2,3,4,5,6,7,8,9};
5 int sum = 0;
6 int i,j;
7 for(i=0;i<sizeof(a)/sizeof(*a);i++)
8 for(j=0;j<sizeof(*a)/sizeof(int);j++)
9 {
10 sum += a[i][j];
11 }
12 printf("sum = %d\n",sum);
13 return 0;
14 }本回答被提问者和网友采纳
第4个回答  2013-06-17
int main(void)
{
int a[i][j]={};//数值按你自己的要求加进去
int k,m;
int sum= 0;
for(k = 0;k<i;k++)
for(m = 0;m<j;m++){
sum=+a[k][m];
}
printf("the sum is %d\n",sum);
return 0;
}追问

有错误啊

有错误啊

追答

肯定有错误啊 我就是写个思路 i,j 你都要自己定义 自己赋值 要不你把题目要求贴上 我把代码补全

追问

这就是题目 没有其他要求

追答

那怎么没看到具体二维数组呢

追问

没有 随意 随机或者自定义

追答

#define i 10
#define j 10

或者直接int i = 10;
int j = 10;(这样写法应付考试的)
加到前面 就可以应付考试题了 其实看下思路就行了 具体代码还是自己写的好