形参实参练习

函数值及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);
}

运行结果:

例子四:解决这个问题

\sum_{1}^{20}m+\sum_{1}^{50}n

#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);
}

 这个比较方便一些,我直接把*改成一个字母,改成其他的都可以输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

靳向阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值