何钦铭《C语言程序设计》第三版第五章习题解析指南

2026-10-18 0 阅读

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语言中函数的相关知识。

分享到: