函数值及return示例
定义求两个实数的最大函数max()
flaot max(float x,float y){
float m;
m=x>y?x:y;
return m;
}
float max(float x,float y){
if(x<y)
return x;
return y;
}
定义求和函数sum,求1+2+...n
int sum(int n)
{
int s,i;
for(s=0,i=1;i<=n;i++)
s+=i;//可以写成s=s+i;
return s;
}
函数调用
格式:函数名(实参表)
如:f(a)
- 发生函数调用时,函数中的形参将得到实参表中的数据,然后执行函数体语句,实现函数功能。
- 如果函数调用在函数定义之前,则必须在调用之前通过函数原型对被调函数进行声明。
- 函数原型一般形式
- 函数类型 函数名(数据类型1 形参1,......数据类型n 形参n);
- 函数原型简化形式
- 函数类型 函数名(数据类型1,数据类型2,....数据类型n)
注意事项
- 函数调用的实参个数必须与形参个数相同。
- 实参与形参按照在参数表中的位置一 一对应传值,实参与形参的名称是否相同对调用传值无任何影响。
- 实参与形参对应位置上的数据类型应该一致。
- 对于无参数函数,即形参表为void的函数,函数调用时实参表必须为空,不能有任何内容 。
例子1:输出星星
#include<stdio.h>
int main()
{
void pStar(int n);
int k;
for(k=1;k<=5;k++){
pStar(k);
putchar('\n');
}
}
void pStar(int n){
int i;
for(i=1;i<=n;i++)
putchar('*');
}
运行结果:
例子2:输出数字
#include<stdio.h>
int main(){
void PDigital(int);
int k;
for(k=1;k<=5;k++){
PDigital(k);
putchar('\n');
}
}
void PDigital(int n){
for(int i=1;i<=n;i++)
printf("%d",n);
}
运行结果:
例子三:输出字母
#include<stdio.h>
int main(){
void pChar(char,int);
int k;
char ch='a'-1;
for (k=1;k<=5; k++) {
pChar(ch+k,k);
putchar('\n');
}
}
void pChar(char c,int n){
for(int i=1;i<=n;i++)
printf("%c",c);
}
运行结果:
例子四:解决这个问题
#include<stdio.h>
int main(){
int sum(int);
printf("%d\n",sum(20)+sum(50));
}
int sum(int n){
int s=0;
for(int i=1;i<=n;i++)
s+=i;
return s;
}
或者
#include<stdio.h>
int sum(int n){
int s=0;
for(int i=1;i<=n;i++)
s+=i;
return s;
}
int main(){
printf("%d\n",sum(20)+sum(50));
}
直接调换位置,主函数也不用声明了。
形式
- 当贝调用函数为void类型时,函数无返回值,函数调用是一个独立的语句。
- 当贝调用函数有返回值时,函数调用出现在表达式中,是表达式的一部分
- 函数调用也可以作为一个函数的实参
举个例子
定义求两个数最大输的函数max(),并调用max求三个数的最大值
#include<stdio.h>
float max(float x, float y){
return x>y?x:y;
}
int main(){
float a,b,c;
printf("a,b,c:");
scanf("%f%f%f",&a,&b,&c);
printf("Max=%f\n",max(max(a,b),c));
}
编写输出n个连续的任意字符的函数pString()
调用pString()输出一个5行的"*"三角形图案
#include<stdio.h>
int main(){
void pString(int,char);
int k;
for(k=1;k<=5;k++){
pString(k,'*');
putchar('\n');
}
}
void pString(int n,char ch)
{
int i;
for(i=1;i<=n;i++)
putchar(ch);
}
这个比较方便一些,我直接把*改成一个字母,改成其他的都可以输出。