c语言函数编程

设计一个函数求二维数组的和,并在main中验证程序的正确性。下面是自己写的函数,不知道错在哪里,
error C2144: syntax error : missing ')' before type 'int'
: error C2660: 'fun' : function does not take 0 parameters
: error C2059: syntax error : ')'
这是提示的错误,求解答,谢谢!

#include<stdio.h>

#define M 10
void fun(int a[M][M])
{

int *p,i,j;
int m,n;
int sum=0;
p=a[i];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
sum=sum+(*(p+i)+j);
}
}
}
void main()
{
int m,n;
int a[M][M];
int i,j;
printf("请输入数组行数<%d",M);
scanf("%d",&m);
printf("请输入数组列数<%d",M);
scanf("%d",&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",a[i][j]);
}
}
fun(int a[M][M]);
}

你这里的问题不较多
(1)scanf("%d",a[i][j]);应该写成scanf("%d",&a[i][j]); 少了取地址符

(2)主函数中的fun(int a[M][M]);千万不能要int,注意形参和实参,而且改成a[M][M]也不行,那就成传一个数字了,最好改成fun(a),把数组地址传给形参

(3)int m,n最好是全局定义,因为你在子函数fun中没有给m和n赋值,主函数中的m和n是传不过去的
(4)sum=sum+(*(p+i)+j);也是不行的,(*(p+i)+j)只是p[i][j]的地址,改成*(*(p+i)+j)
(5)p=a[i];也是不行的,只需要p=a即可追问

谢谢你的解答
可是还是有几个问题没有明白,希望你能再说一下
(1)主函数中的fun(int a[M][M])和形参一样是int类型的啊,虽然我现在知道不可以那样些,但还是有些想不明白

(2)sum=sum+(*(p+i)+j)中(*(p+i)+J)不就是表示的a[i][j]地址么
(3)我看书上说p=a[i]表示列地址,P=a表示的是行地址啊

追答

一,因为这是形参和实参的形式决定的,实参只需要地址或者值,形参需要类型和变量。
二,你想加的应该是数值,而不是地址,是地址里面的数值。
三,如果按你的写法,p=a[i]应该放在第一个循环里初始化…其实二维数组数值想加方法很多,也可以考虑其他的。

追问

知道了,谢谢你啦

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-01
在最后调用fun()的时候:
fun(int a[M][M]);

改成:
fun(a);

应该就解决掉编译出的那个错了

怎样编写C语言的函数
1、新建一个工程和.c文件,并且输入主函数和头文件。2、定义全局变量。3、定义变量类型。4、用两个for语句给数组元素赋值。5、调用求最小值的函数。6、函数的总体流程如下图。7、在主函数中输出结果,编译、运行,得到最后结果。

c语言编程函数是什么意思
函数是C语言中的一种基本编程结构,它是一段经过封装的独立代码块,具有特定的功能和输入输出参数。函数一般由函数头和函数体构成。函数头包括函数名、返回值类型、函数参数列表等内容,而函数体则实现了函数的具体功能。通过定义、声明和调用函数,程序员可以将程序划分为多个子任务,使得代码具备更好的结...

怎样用C语言实现一个函数?
先写出一个如下的函数:int fun(int n){ int s=1;for(int i=1;i<=n;i++)s*=i;return s;} 然后在主函数中调用反复调用它 int main(){ int n;while(cin>>n){ int sum=0;for(int i=1;i<=n;i++){ sum+=fun(i);} cout<<sum<<endl;} } ...

如何用c语言编写一次函数
实验原理和设计方案:1、函数头的选则,while循环语句,switch(case)语句,条件表达式,if else条件语句,自增运算符,设置复杂变量,输出随机操作数。2、变量要有分数变量和等级变量,要有选择算法题数的变量和计算正确与否的变量,要有随机输出的两个操作数变量和自己按运算符号输入结果的变量,最后还...

如何编写C语言的中断函数?
以下是一个简单的例子,展示了如何在Linux环境下使用C语言编写中断处理函数。这个例子是基于POSIX标准的,应该在支持POSIX的操作系统上运行,如Linux。首先,你需要定义一个中断处理函数的原型:在这个例子中,我们注册了一个信号处理函数`handle_interrupt`来处理`SIG`(Ctrl+C)中断。当用户按下Ctrl+C时...

C语言函数怎么写?
include<stdio.h> int main(){ int i,m=0;for(i=2;i<=100;i+=2) m=m+i;printf("%d\\n",m);return 0;} 或 include int main(){ int i,sum=0;for(i=1;i<=50;i++){ sum=sum+2*i;} printf("2+4+6+…+98+100=%d\\n",sum);return 0;} ...

C语言函数
C语言函数在编程中扮演重要角色,它们允许我们封装代码,实现模块化编程。函数的参数传递分为传值和传引用两种方式。传值传递时,函数内部改变参数的值不会影响外部的值;而传引用传递时,则函数内部可以修改外部参数的值。例如:在函数中定义`Fun(n, &a[9])`,这里`&a[9]`表示对数组`a`的第10个...

【千锋教育C语言程序设计】第3章 函数
函数定义是实现某种功能的代码块,例如输出文字的函数,定义代码如下:`void remember(){...}`,其中`remember`为自定义函数名,`void`表示函数没有返回值。函数声明可以放在主调函数前面,也可以放在主调函数后面,但需要在主调函数前声明自定义函数。有参函数的实现需要参数,例如执行相加运算的函数,...

C语言中有哪些基本函数?
1、max函数 用于求数组中的最大元素。暂时用到的语法形式有以下3种:C = max(A);C = max(A, B);C = max(A, [], dim);描述:C = max(A)返回数组不同维度的最大元素。如果A是一个向量,max(A)返回向量A中的最大元素;如果A是一个矩阵,max(A)将矩阵A的每一列视为向量,最后...

编写一个c语言函数
int main(){ int n;int num; \/\/\/输入的数字 int count[1005];int cnt=0; \/\/\/保存统计的个数 int i,j;\/\/memset(count,0,sizeof(count));for(j=0;j<1005;j++)count[j]=0;scanf("%d",&n); \/\/\/输入的数字个数 for(i=0;i<n;i++){ scanf("%d",&num);if(count[n...

相似回答