1. 习题概述
《C语言程序设计》第三版第五章涵盖了C语言中函数的定义、调用以及递归等内容。本章习题旨在帮助读者深入理解函数的概念,掌握函数的编写和使用技巧,以及递归函数的原理和应用。
2. 习题解析
2.1 函数定义与调用
习题1:编写一个函数,计算两个整数的和。
#include <stdio.h>
int sum(int a, int b) {
return a + b;
}
int main() {
int num1, num2, result;
printf("Enter two integers: ");
scanf("%d %d", &num1, &num2);
result = sum(num1, num2);
printf("Sum: %d\n", result);
return 0;
}
习题2:编写一个函数,计算两个浮点数的平均值。
#include <stdio.h>
float average(float a, float b) {
return (a + b) / 2.0;
}
int main() {
float num1, num2, avg;
printf("Enter two floating-point numbers: ");
scanf("%f %f", &num1, &num2);
avg = average(num1, num2);
printf("Average: %f\n", avg);
return 0;
}
2.2 递归函数
习题3:编写一个递归函数,计算阶乘。
#include <stdio.h>
int factorial(int n) {
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
int main() {
int num;
printf("Enter a positive integer: ");
scanf("%d", &num);
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
习题4:编写一个递归函数,计算斐波那契数列的第n项。
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1)
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
printf("Fibonacci number at position %d is %d\n", n, fibonacci(n));
return 0;
}
2.3 函数参数传递
习题5:编写一个函数,交换两个变量的值。
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("Before swap: x = %d, y = %d\n", x, y);
swap(&x, &y);
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
3. 总结
通过以上习题的解析,我们可以看到函数在C语言编程中的重要性。函数不仅能够提高代码的复用性,还能够使程序结构更加清晰。递归函数虽然有其局限性,但在某些情况下,它能够提供简洁而高效的解决方案。希望读者通过这些习题的练习,能够更好地掌握C语言中函数的相关知识。