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

本篇博客通过一系列实例详细讲解了如何使用函数进行模块化程序设计,涵盖了从简单的数值比较、求和到复杂的汉诺塔问题和递归求解阶乘的解决方案。同时,讨论了外部变量与局部变量的处理、静态局部变量的值保持以及字符串处理等问题,旨在提升读者对函数应用的理解和掌握。
摘要由CSDN通过智能技术生成

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

例7.1 想输出以下的结果,用函数调用实现。

在这里插入图片描述

#include<stdio.h>
int main()
{
    void print_star();
void print_message();
print_star();
print_message();
print_star();
return 0;
}
void print_star()
{
   
printf("*******************\n");
}
void print_message()
{
   
printf(" How do you do!\n");
}

运行结果如下:
在这里插入图片描述

例7.2 输入两个整数,要求输出其中值较大者。要求用函数来找到大数。

int max(int x,int y)
{
   
int z;
z=x>y?x:y;
return (z);
}
#include<stdio.h>
int main()
{
   
int max(int x,int y);
int a,b,c;
printf("please enter two integer numbers:");
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max is %d\n",c);
return 0;
}

运行结果如下:
在这里插入图片描述

例7.3 将例7.2稍作改动,将在max函数中定义的变量z改为float型。函数返回值的类型与指定的函数类型不同,分析其处理方法。

#include<stdio.h>
int main()
{
   
int max(float x,float y);
float a,b;
int c;
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("max is %d\n",c);
return 0;
}
int max(float x,float y)
{
    float z;
z=x>y?x:y;
return (z);
}

运行结果如下:
在这里插入图片描述

例7.4 输入两个实数,用一个函数求出它们之和。

#include<stdio.h>
int main()
{
   
float add(float x,float y);
float a,b,c;
printf("Please enter a and b:");
scanf("%f,%f",&a,&b);
c=add(a,b);
printf("sum is %f\n",c);
return 0;
}
float add(float x,float y)
{
   float z;
z=x+y;
return (z);
}

运行结果如下:
在这里插入图片描述

例7.5 输入四个整数,找出其中最大的数。用函数的嵌套调用来处理。

#include<stdio.h>
int main()
{
   int max4(int a,int b,int c,int d);
int a,b,c,d,max;
printf("Please enter 4 interger numbers:");
scanf("%d%d%d%d",&a,&b,&c,&d);
max=max4(a,b,c,d);
printf("max=%d\n",max);
return 0;
}
int max4(int a,int b,int c,int d)
{
   
int max2(int a,int b);
int m;
m=max2(a,b);
m=max2(m,c);
m=max2(m,d);
return (m);
}
int max2(int a,int b)
{
   if(a>=b)
return a;
else
return b;
}

运行结果如下:
在这里插入图片描述

例7.6 有5个学生坐在一起,问5个学生多少岁,他说比第四个学生大两岁。问第4个学生岁数,他说比第三个学生大两岁。问第3个学生,又说比第2个学生大2岁。问第2个学生,说比第1个学生大两岁。最后问第1个学生,他说是10岁。请问第5个学生多大。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值