目录
2.根据下面各函数的描述,分别编写它们的ANSI C函数头。注意,只需写出函数头,不用写函数体
a.donut()接受一个int类型的参数,打印若干(参数指定数目)个0
b.gear()接受两个int类型的参数,返回int类型的值
d.stuff_it()接受一个double类型的值和double类型变量的地址,把第1个值储存在指定位置
3.根据下面各函数的描述,分别编写它们的ANSI C函数头。注意,只需写出函数头,不用写函数体
a.n_to_char()接受一个int类型的参数,返回一个char类型的值
b.digit()接受一个double类型的参数和一个int类型的参数,返回一个int类型的值
c.which()接受两个可储存double类型变量的地址,返回一个double类型的地址
5.如果把复习题4改成返回两个double类型的值之和,应如何修改函数
6.设计一个名为alter()的函数,接受两个int类型的变量x和y,把它们的值分别改成两个变量之和以及两变量之差
Please choose one of the following:
Enter the number of your choice:
a.编写一个函数,显示一份有4个选项的菜单,提示用户进行选择(输出如上所示)。
c.使用本题a和b部分的函数编写一个最小型的程序。最小型的意思是,该程序不需要实现菜单中各选项的功能,只需显示这些选项并获取有效的响应即可。
1.设计一个函数min(x, y),返回两个double类型值的较小值。在一个简单的驱动程序中测试该函数
2.设计一个函数chline(ch, i, j),打印指定的字符j行i列。在一个简单的驱动程序中测试该函数
3.编写一个函数,接受3个参数:一个字符和两个整数。字符参数是待打印的字符,第1个整数指定一行中打印字符的次数,第2个整数指定打印指定字符的行数。编写一个调用该函数的程序
4.两数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的倒数。编写一个函数,接受两个double类型的参数,返回这两个参数的调和平均数
5.编写并测试一个函数larger_of(),该函数把两个double类型变量的值替换为较大的值。例如, larger_of(x, y)会把x和y中较大的值重新赋给两个变量
6.编写并测试一个函数,该函数以3个double变量的地址作为参数,把最小值放入第1个变量,中间值放入第2个变量,最大值放入第3个变量
11.编写并测试Fibonacci()函数,该函数用循环代替递归计算斐波那契数
复习题
1.实际参数和形式参数的区别是什么
形式参数:
被定义在被调用函数中的变量
实际参数:
出现在函数调用中的值,该值被附给形式参数
2.根据下面各函数的描述,分别编写它们的ANSI C函数头。注意,只需写出函数头,不用写函数体
a.donut()接受一个int类型的参数,打印若干(参数指定数目)个0
b.gear()接受两个int类型的参数,返回int类型的值
c.guess()不接受参数,返回一个int类型的值
d.stuff_it()接受一个double类型的值和double类型变量的地址,把第1个值储存在指定位置
a. void donut(int);
b. int gear(int, int);
c. int guess();
d. void stuff_it(double, double*)
3.根据下面各函数的描述,分别编写它们的ANSI C函数头。注意,只需写出函数头,不用写函数体
a.n_to_char()接受一个int类型的参数,返回一个char类型的值
b.digit()接受一个double类型的参数和一个int类型的参数,返回一个int类型的值
c.which()接受两个可储存double类型变量的地址,返回一个double类型的地址
d.random()不接受参数,返回一个int类型的值
a. char n_to_char(int);
b. int digit(double, int);
c. double* which(double*, double*);
d. int random();
4.设计一个函数,返回两整数之和
int add(int a, int b)
{
return a + b;
}
5.如果把复习题4改成返回两个double类型的值之和,应如何修改函数
double add(double a, double b)
{
return a + b;
}
6.设计一个名为alter()的函数,接受两个int类型的变量x和y,把它们的值分别改成两个变量之和以及两变量之差
void alter(int *a, int *b)
{
int temp = *a + *b;
*b = *a - *b;
*a = temp;
return;
}
7.下面的函数定义是否正确
void salami(num)
{
int num, count;
for (count = 1; count <= num; num++)
printf(" O salami mio!\n");
}
void salami(int num)
{
int count;
for (count = 1; count <= num; count++)
printf(" O salami mio!\n");
}
8.编写一个函数,返回3个整数参数中的最大值
int max(int a, int b, int c)
{
return a > b ? (a > c ? a : c) : (b > c ? b : c);
}
9.给定下面的输出:
Please choose one of the following:
1) copy files 2) move files
3) remove files 4) quit
Enter the number of your choice:
a.编写一个函数,显示一份有4个选项的菜单,提示用户进行选择(输出如上所示)。
b.编写一个函数,接受两个int类型的参数分别表示上限和下限。该函数从用户的输入中读取整数。如果整数超出规定上下限,函数再次打印菜单(使用a部分的函数)提示用户输入,然后获取一个新值。如果用户输入的整数在规定范围内,该函数则把该整数返回主调函数。如果用户输入一个非整数字符,该函数应返回4。
c.使用本题a和b部分的函数编写一个最小型的程序。最小型的意思是,该程序不需要实现菜单中各选项的功能,只需显示这些选项并获取有效的响应即可。
#include <stdio.h>
#include <stdlib.h>
void menu()
{
printf("Please choose one of the following: \n");
printf("1) copy files 2) move files \n");
printf("3) remove files 4) quit\n");
printf("Enter the number of your choice:");
}
int ul(int u, int l)
{
int num;
while(scanf("%d", &num) == 1)
{
if(num >= l && num <= u)
{
return num;
}
else
{
menu();
}
}
return 4;
}
int main(void)
{
int u, l;
scanf("%d %d", &l, &u);
int x = ul(u, l);
printf("\nXXXX%d\n", x);
return 0;
}
编程练习
1.设计一个函数min(x, y),返回两个double类型值的较小值。在一个简单的驱动程序中测试该函数
#include <stdio.h>
#include <stdlib.h>
double mix(double a, double b)
{
return a > b ? b : a;
}
int main(void)
{
double a, b;
scanf("%lf %lf", &a, &b);
pri