第六章函数程序设计

本文介绍了C语言中的函数程序设计,包括自定义函数、函数定义与调用、递归函数、数组与函数的结合使用。通过示例展示了如何避免重复代码,提高代码复用性,例如计算阶乘并实现函数调用来简化程序。
摘要由CSDN通过智能技术生成

回顾前面所学:

顺序结构

分支结构

循环结构

预处理符号 #

#include

头文件有

<stdio.h>

包含 输入输出

<string.h>

包含字符串

<math.h>数学符号

void main(void)

变量定义赋初值

预处理

预算符:

数字运算符、赋值运算符

关系运算符

逻辑运算符(与或)

三目运算

min = (a < b) ? a : b

  • 函数概述

  • 自定义函数

  • 函数定义及调用

  • 函数嵌套

  • 递归函数

  • 数组与函数

  • 函数应用程序举例

  • 变量的作用域和存储类型

函数

  1. c语言程序的特点:函数化结构
  2. 函数分类:系统函数、用户函数
  3. 系统函数:printf()、scanf()、sqart()等
  4. 用户函数:在程序中编写的函数,又称为自定义函数
  5. 用户函数特例:main()函数
  6. 如果在程序中经常需要某种处理,可将其处理过程或方法编写为函数,需要时调用即可。
  7. example:计算a!+b!+c!
#include<stdio.h>
int main()
{
    int a,b,c,i;
    long t,sum;
    printf("Input a,b,c:");
    scanf("%d%d%d",&a,&b,&c);
    for(t=1L,i=1;i<=a;i++){
        t=t*i;
        sum=t;
    }
     for(t=1L,i=1;i<=b;i++){
        t=t*i;
        sum+=t;
    }
    for(t=1L,i=1;i<=c;i++){
        t=t*i;
        sum+=t;
    }
    printf("SUM=%ld\n",sum);
}

这种代码是最简单,容易想到的。但是重复劳动了。

阶乘是a=1*(1+1)*(1+1+1)+.....

所以计数器i++,t=1L,t=t*i;

a!=t*i

将t赋给sum,sum=t+t+t;

a!+b!+c!

三种阶乘的算法一样,我可不可以直接用一种算法,解决所有的循环呢?

待会儿说。

自己敲一遍代码:

#include<stdio.h>

int main(){

int a,b,c,i;

long sum,t=1L;

printf("请输入a,b,c");

scanf("%d%d%d",&a,&b,&c);

for(i=1;i<=a;i++)

t=t*i;

sum=t;

}

for(i=1;i<=b;i++)

t=t*i;

sum+=t;

}

for(i=1;i<=c;i++)

t=t*i;

sum+=t;

}

printf("SUM=%ld",sum);//这里的ld是长整型的意思

下面写出一个最简单的程序,解决重复劳动的问题

#include <stdio.h>
int main()
{
    long f(int);
    int a,b,c;
    printf("Input a,b,c");
    scanf("%d%d%d",&a,&b,&c);
    printf("a!+b!+c!=%ld",f(a)+f(b)+f(c));

}
long f(int n)
{
    long t;
    int i;
    for(t=1L,i=1;i<=n;i++)
    t*=i;
    return t;
}

这里直接调用函数

在这里我直接再默写一下

#include<stdio.h>

void main(){

long f(int);

int a,b,c;

printf("请输入a,b,c");

scanf("%d%d%d",&a,&b,&c);

printf("a!+b!+c!=%ld",f(a)+f(b)+f(c));

}

long f(int n))

{

for(t=1L,i=1;i<=n;i++)//这里的n就是a,b,c的通项,简称通用公式。

t*=i;

return t;

}

是这样的,我用的编译器不能识别void,所以你用int和 void都行,void是空类型,int是整形的。

还可以放到上面

#include<stdio.h>

void main(){

long f(int n))

{

for(t=1L,i=1;i<=n;i++)//这里的n就是a,b,c的通项,简称通用公式。

t*=i;

return t;

}

int a,b,c;

printf("请输入a,b,c");

scanf("%d%d%d",&a,&b,&c);

printf("a!+b!+c!=%ld",f(a)+f(b)+f(c));

}

函数定义的一般格式

函数类型   函数名(形式参数){

函数体

}

形式参数表格式

(数据类型 变量1,数据类型 变量2,,.......数据类型 变量n)

函数定义示例

定义连续输出n个*字符的函数

void pNstars(int n){

int i;

for(i=1;i<=n;i++)

putchar('*');

}

函数值及return

函数值:函数执行后带回的一个结果

函数值通过函数体中return返回

return 格式

return 表达式;

return (表达式);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

靳向阳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值