kindle狗耳朵怎么推送:C语言如何调用函数

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 23:35:46
小弟自学,搞不懂如何调用有参数的函数,请看下面这个程序 ,是错的

#include <stdio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=",z);
return z;
}

main()
{
int a,b,s;
scanf("%d,%d",a,b);
s=sum(a,b);
getch();
}

请教各位,我的问题到底出在哪里?多谢了!

还有我就想问一下,形参,实参到底是指什么?举例子就行了,其实书上有解释,小弟愚笨,不理解
有个问题大家还没发现,就是scanf我没写&,编译居然能通过,faint
但即使这样,程序仍然有问题,任意输入2个整数,显示结果是"z="就什么都没有了

C语言中,函数调用的一般形式为:

函数名(实际参数表)

对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。

#include<stdio.h>
int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明
void main()
{
int a=1, b=2, c;
c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值
}
// 自定义函数fun
int fun(int x, int y)  // 函数首部
{  // {}中的语言为函数体
return x>y ? x : y;  // 返回x和y中较大的一个数
}

扩展资料

C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。

这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图。 

图表示了两层嵌套的情形。其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b 函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行,a函数执行完毕返回main函数的断点继续执行。

参考资料:函数调用_百度百科

修改后可以运行的程序:
#include <stdio.h>
#include<conio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=%d",z);
return z;
}
void main()
{ int a,b,s;
printf("Input a and b:");
scanf("%d,%d",&a,&b);
s=sum(a,b);
getch();
}
改正的错误:
1.printf("z=%d",z);无%d,则不能输出z值
2.scanf("%d",&a); &表示输入到a
3.用到getch();时需加头文件#include<conio.h>
4.无返回值函数需加void

C语言调用函数就是先定义并声明函数,之后再根据定义函数的格式调用。


下面举例来说明函数调用方法:

#include<stdio.h>
int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明
void main()
{
    int a=1, b=2, c;
    c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值
}
// 自定义函数fun
int fun(int x, int y)  // 函数首部
{  // {}中的语言为函数体
    return x>y ? x : y;  // 返回x和y中较大的一个数
}

少一个头函数,住函数没有返回值,应该用void。
#include <stdio.h>
#include<conio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=",z);
return z;
}

void main()
{
int a,b,s;
scanf("%d,%d",a,b);
s=sum(a,b);
getch();
}

你这个编译是成功的.
在函数体内的是实参或是说参加运算的为实参.
形参就是在函数体外的.