第七章 用函数实现模块化程序设计

简介: 第七章 用函数实现模块化程序设计

一个函数调用另外一个函数:

1.被调用函数必须是已经定义的函数

2.如果使用库函数,应该在本文件开头加相应的#include指令

3.如果使用自己定义的函数,该函数的位置在调用它的函数后面,应该声明。

例:用递归方法求n!

#include<stdio.h>
int main(){
    int fac(int n);
    int n;int y;
    printf("input an integer number:");
    scanf("%d",&n);
    y=fac(n);
    printf("%d!=%d\n",n,y);
    return 0;
}
int fac(int n){
    int f;
    if(n<0)
    printf("n<0,data error!");
    else if(n==0||n==1)
    f=1;
    else f=fac(n-1)*n;
    return(f);
}

汉诺塔问题

#include<stdio.h>
int main(){
    void hanoi(int n,char one,char two,char three);
    int m;
    printf("the number of diskes:");
    scanf("%d",&m);
    printf("move %d dishes:\n",m);
    hanoi(m,'A','B','C');
}
void hanoi(int n;char one,char two,char three){
    void move(char x,char y);
    if(n==1)
    move(one,three);else{
        hanoi(n-1,one,two,three);
        move(one,three);
        hanoi(n-1,two,one,three);    
    }
}
void move(char x,char y){
    printf("%c--%c\n",x,y);
}

例7.9 输入10个数,要求输出其中值最大的元素和该数是第几个数。

#include<stdio.h>
int main(){
    int max(int x,int y);
    int a[10],m,n,i;
    printf("10 integer numbers:\n");
    for(i=0;i<10;i++){
        scanf("%d",&a[i]);
        printf("\n");           
    }
    for(i=1,m=a[0],n=0;i<10;i++){
        if(max(m,a[i]>m));{
            m=max(m,a[i]);
            n=i;        
        }    
    }
    printf("largest number is %d\n",m);
    printf("%dth number.\n",n+1);
}

例7.10 有一个一维数组score,内放10个学生成绩,求平均成绩。

#include<stdio.h>
int main(){
    float average[10],aver;int i;
    printf("input 10 scores:\n");
    for(int i=0;i<10;i++){
        scanf("%f",&score[i]);    
    }
    printf("\n");
    aver=average(score);
    printf("%5.2f\n",aver);
    return 0;
}
float average(float array[10]){
    int i;
    float aver,sum=array[0];
    for(i=0;i<10;i++){
        sum=sum+array[i];
        aver=sum/10;
    }
        return(aver);    
}

例7.13 有一个3*4的矩阵,求所有元素中的最大值

#include<stdio.h>
int main(){
    int max_value(int array[][4]);
    int a[3][4]={{1,3,5,7},{2,4,6,8},{11,13,15,17}};
    printf("max value is %d\n",max_value(a));
    return 0;
}
int max_value(int array[][4]){
    int i,j,max;
    max=array[0][0];
    for(i=0;i<3;i++){
        for(j=0;j<4;j++){
            if(array[i][j]>max)
            max=array[i][j];        
        }    
    }
    return max;
}

例7.18 调用函数,求3个整数中的大者

#include<stdio.h>
int main(){
    int max();
    extern int A,B,C;
    scanf("%d %d %d",&A,&B,&C);
    printf("max is %d\n",max());
    return 0;
}
int A,B,C;
int max(){
    int m;
    m=A>B?A:B;
    if(C>m)m=C;
    return(m);
}


相关文章
|
项目管理
项目管理办公室(Project Management Office)
当今的商业环境变得越来越复杂,项目管理成为了成功实施战略和取得竞争优势的关键。为了更好地管理和协调项目,许多组织都建立了项目管理办公室(PMO)。本文将详细探讨PMO的概念、功能以及它们在项目管理中的重要性。
|
API 数据安全/隐私保护
Argo CD接入LDAP认证或者gitea认证的方法
argocd默认是通过修改argocd-cm来添加账户的,添加完账户后,还需要使用argocd客户端命令去给账户设置密码,这肯定是比较麻烦的,为了方便使用,我们可以接入ldap认证或者gitea的oauth2认证。 这里我们主要写ldap认证,因为gitea没有提供组信息给dex,而ldap能返回组信息 ,gitea的接入会在文章的末尾进行简单介绍 关键词:argocd ldap dex
2214 1
Argo CD接入LDAP认证或者gitea认证的方法
|
并行计算 索引 Python
讨论如何优化 DataFrame 操作,减少内存占用和提高执行速度
【5月更文挑战第19天】优化 DataFrame 操作涉及选择合适的数据类型、避免复制、使用向量化、高效迭代和设置索引。通过这些策略,如使用 `np.int8` 节省内存,直接修改列数据,利用 `itertuples`,设置分类数据类型,以及分块和并行计算,可以显著减少内存占用和提高执行速度,从而更好地处理大规模数据。实践中需结合具体情况综合运用,不断测试和优化。
465 2
|
前端开发 API
【strapi系列】strapi在postman中如何调试public和认证用户Authorization的接口
【strapi系列】strapi在postman中如何调试public和认证用户Authorization的接口
202 1
|
消息中间件 存储 负载均衡
什么是RabbitMQ?
RabbitMQ是一个开源的消息代理软件,用于在分布式系统中传递消息。它实现了高级消息队列协议(AMQP),提供了一种可靠的、强大的、灵活的消息传递机制,使得不同应用程序或组件之间可以轻松地进行通信。
250 0
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】 YOLOv8 更换骨干网络之GhostNetV2 长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了轻量级CNNs和注意力机制在移动设备上的应用。文章提出了一种名为GhostNetV2的新架构,结合了硬件友好的DFC注意力机制,强化了特征表达能力和全局信息捕获,同时保持低计算成本和高效推理。GhostNetV2在ImageNet上以167M FLOPs达到75.3%的top-1准确率,优于同类模型。创新点包括DFC注意力、模型结构优化和效率提升。源代码可在GitHub和MindSpore平台上找到。此外,还提到了YOLOv8的相关实现和任务配置。
|
编译器 Linux 网络性能优化
VPP使用DPDK纳管主机网卡
VPP使用DPDK纳管主机网卡
|
存储 编译器 C++
C++程序中的函数调用:模块化编程的基石
C++程序中的函数调用:模块化编程的基石
151 1
|
存储 分布式计算 Cloud Native
什么是MinIO?它有什么用途?
什么是MinIO?它有什么用途?
1478 0
|
传感器 芯片
模拟量与数字量区别
模拟量与数字量区别
287 0