第七章 用函数实现模块化程序设计
- 例7.1 想输出以下的结果,用函数调用实现。
- 例7.2 输入两个整数,要求输出其中值较大者。要求用函数来找到大数。
- 例7.3 将例7.2稍作改动,将在max函数中定义的变量z改为float型。函数返回值的类型与指定的函数类型不同,分析其处理方法。
- 例7.4 输入两个实数,用一个函数求出它们之和。
- 例7.5 输入四个整数,找出其中最大的数。用函数的嵌套调用来处理。
- 例7.6 有5个学生坐在一起,问5个学生多少岁,他说比第四个学生大两岁。问第4个学生岁数,他说比第三个学生大两岁。问第3个学生,又说比第2个学生大2岁。问第2个学生,说比第1个学生大两岁。最后问第1个学生,他说是10岁。请问第5个学生多大。
- 例7.7 用递归方法求n!。
- 例7.8 汉诺塔问题。这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一梵塔,塔内有三座A,B,C。开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座。要求编程序输出移动盘子的步骤。
- 例7.9 输入10个数,要求输出其中值最大的元素和该数是第几个数。
- 例7.10 有一个一维数组score,内放10个学生成绩,求平均值。
- 例7.11 有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班的学生的平均成绩。
- 例7.12 用选择法对数组中10个整数按有小到大排序
- 例7.13 有一个3*4的矩阵,求所有元素中的最大值。
- 例7.14 有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后能求出平均分、最高分和最低分。
- 例7.15 若外部变量与局部变量同名,分析结果。
- 例7.16 考察静态局部变量的值。
- 例7.17 输出1到5的阶乘值。
- 例7.18 调用函数,求3个整数中的大者。
- 例7.19 给定b的值,输入a和m,求a*b和a^m的值。
- 例7.20 有一个字符串,内有若干个字符,现输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。
例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;
}
运行结果如下: