【C语言基础】C语言第八章

本文详细介绍了C语言中的函数概念,包括函数的定义、声明、调用及递归调用等内容,并通过实例展示了如何使用函数来简化编程任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第八章 函数 (上)
函数的类型(跟变量的类型很像):int ,float,char,void
函数都有返回值,特别的void类型是“空类型”,所以他没有返回值,或者说,void类型返回空。


如:主函数
void main()
{
    ...
}
void main()
{
    ...
    return;
}
当然也有把主函数设成int类型的,然后相应的加一句"return 0;"
int main()
{
    ... 
    return 0;
}
那么这个“return 0;”在主函数中是不是什么意思都没有呢?当然不是了。程序在运行的时候在


等待main函数运行完,当main函数运行完之后将返回值返回给系统,系统识别后自动结束。
函数的使用主要包括三个部分:函数的定义,函数的声明,函数的调用。
例8.1 函数调用的简单例子。
#include <stdio.h>
void main()
{
    void printstar();    /* 对printstar函数进行声明 */
    void print_message(); /* 对print_message函数进行声明 */
    printstar();         /* 调用printstar函数 */
    print_message();      /* 调用print_message函数 */
    printstar();         /* 调用printstar函数 */
}
void printstar()         /* 定义printstar函数 */
{
    printf("* * * * * * * * * * * * * * * *\n");
}
void print_message()      /* 定义print_message函数 */
{
    printf("  How do you do!\n");
}
★从用户使用的角度看,函数有两种。
(1)标准函数。标准函数即库函数,他是由系统提供的,用户不必自己定义而使用他


们。如:printf,scanf,sqrt,strlen这些函数。
(2)用户自己定义的函数。他是用以解决用户专门需要的函数。
★从函数的形式看,函数分两类:
(1)无参函数。如例8.1中的printstar和print_message就是无参函数。
(2)有参函数。如f(x)
--参数就是指参变量,函数的小括号里面的东西。
【函数定义的一般形式】
无参函数定义的一般形式为:
类型标识符 函数名()
{
    声明部分
    语句部分
}
例如:
int print()
{
    int i;
    for(i=0;i<10;i++) printf("%d\n",i);
}
例8.1中的print_star函数和print_message函数都是无参函数。
有参函数定义的一般形式为:
类型标识符 函数名(形式参数列表)
{
    声明部分
    语句部分
}
例如:
int Max(int x,int y)
{
    int a;
    a = x > y ? x : y;
    return a;
}
在程序设计中有时会用到空函数,它的形式为:
类型说明符 函数名()
{       }
例如:
void dummy()
{       }
调用此函数时,什么工作也不做,没有任何实际作用。在主函数中写上“dummy();”表明“这里要


调用一个函数”,而现在这个函数没有起作用,等以后扩充函数功能时再补充上。
注:在自己定义函数的时候,函数名要取得好理解一些,如:prnitstar()函数,一看就知道是要


打印星星图案~
【形式参数和实际参数】
例8.2 调用函数时的数据传递。
#include <stdio.h>
void main()
{
    int Max(int x,int y);  /* 对Max函数的声明 */
    int a , b , c;
    scanf("%d%d" , &a,&b);
    c = Max(a,b);
    printf("Max is %d\n" , c);
}
int Max(int x,int y)       /* 定义有参函数Max */
{
    int z;
    z = x > y ? x : y;
    return z;
}
*******************************************************
补充知识点:变量和数组的定义可以放在main函数之外,如:
#include <stdio.h>
int x;
void main()
{
    scanf("%d" , &x);
    printf("%d\n" , 2*x);
}
*******************************************************
【函数的调用】
函数调用的一般形式为
函数名(实参列表);
函数调用的方式:
1.函数语句
把函数作为一个语句。如例8.1中的“printstar();”,这是不要求函数带返回值,只要求完成一


定的操作。
2.函数表达式
函数出现在一个表达式中,这种表达式成为函数表达式。这是要求函数带回一个确定的值以参加表


达式的运算。例如:
c = 2 * Max(a,b)
函数Max是表达式的一部分,它的值乘2再赋给c。
3.函数参数
函数调用作为一个函数的实参。例如:
m = Max(a , Max(b,c));
其中Max(b,c)是一次函数调用,它的值作为Max另一次调用的实参。m的值是a、b、c三者中的最大


值。又如:
printf("%d\n" , Max(a,b));
也是把Max(a,b)作为printf函数的一个参数。
函数原型的一般形式有两种:
(1)函数类型 函数名(参数类型1,参数类型2,...,参数类型n);
(2)函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,...,参数类型n 参数名n);
演示:求n个数最大值的函数。


补充5.8题(2),现在可以用函数做了。演示


课堂练习:
1.写一个函数int max3(int a,int b,int c)函数,返回a,b,c的最大值,并在主函数中运行。
2.写一个函数double f(int n),当我输入n个数后,返回这n个数的平均值。


复习(编程题):
1.输入两个数,输出它们的和;
2.输入两个数,如果他们差的绝对值小于等于10,输出“yes”,不然就输出“no”;
3.循环输出5的平方到16的平方;
4.输入一个数n,判断n是不是素数。
5.求出200到300间的所有素数。
6.page.130 6.13
7.page.153 7.6

8.2.写一个函数double f(int n),当我输入n个数后,返回这n个数中最大值与最小值之差。

第八章 函数(下)
【函数的递归调用】
函数的递归调用:简单地说,函数的递归调用就是当我定义了函数f(x)之后,我在定义另一个函数g(x)的时候用到了f(x)。
举例:
int f(int x)
{
return x*x*x*x;
}
void g(int x)
{
int i;
for(i=0;i<5;i++)
{
printf("%d\n" , f(i));
}
}
【函数的递归调用】
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
例:page.172 例8.7 , 例8.8


扩展:page.174 例8.9


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值