C语言编程练习:阶乘、斐波那契数列和学生类设计

本篇文章将介绍三个C语言编程练习,涵盖递归、循环和面向对象编程的概念。通过完成这些练习,可以加深对这些概念的理解,并锻炼编程能力。

1. 编写计算n!函数;要求使用递归实现。

使用递归实现阶乘函数的关键在于理解递归的本质:将问题分解成更小的子问题,直到达到最小的子问题,然后再逐步解决这些子问题。

int factorial(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

2. 编写函数,从键盘输入参数n,计算斐波那契数列中第一个大于n的项。斐波那契数列为1,1,2,3,5,8,13…从第三项开始,每一项是前两项的和。

计算斐波那契数列需要使用循环,并记录前两项的值,然后不断更新。

int fibonacci(int n) {
    int a = 1, b = 1, c = 0;
    while (c <= n) {
        c = a + b;
        a = b;
        b = c;
    }
    return c;
}

3. 设计一个学生类。这个学生类中包含学生的学号、姓名和成绩,并能根据学生人数计算平均成绩。

设计一个学生类需要定义属性和方法,并实现方法的具体逻辑。

class Student {
public:
    int id;
    string name;
    int score;

    Student(int id, string name, int score) {
        this->id = id;
        this->name = name;
        this->score = score;
    }

    static double calculateAverageScore(vector<Student> students) {
        int sum = 0;
        for (Student s : students) {
            sum += s.score;
        }
        return (double)sum / students.size();
    }
};

心得体会

通过完成以上三个任务,我对递归的使用、斐波那契数列的计算以及类的设计有了更深入的理解。

在第一个任务中,我使用递归的方式计算了n的阶乘。递归的思想是将一个大的问题分解成更小的子问题,直到达到最小的子问题,然后再逐步解决这些子问题。在计算阶乘的过程中,每次递归调用时,问题规模都会减小,直到达到最小的子问题即n=1,然后再逐步返回并解决这些子问题。这个过程需要注意递归的终止条件和递归调用的方式,否则可能会导致无限递归。

在第二个任务中,我计算了斐波那契数列中第一个大于n的项。斐波那契数列的定义是前两项的和等于当前项,所以在计算过程中需要记录前两项的值,并不断更新。通过循环的方式,每次计算出当前项,然后与n进行比较,如果大于n则停止循环并返回结果。这个过程需要注意循环的终止条件和变量的更新。

在第三个任务中,我设计了一个学生类,包含学号、姓名和成绩三个属性,并提供了计算平均成绩的方法。类的设计需要考虑属性的定义和方法的实现。在计算平均成绩的方法中,需要遍历所有学生的成绩并求和,然后除以学生人数得到平均成绩。这个过程需要注意属性的访问和方法的调用。

通过完成以上三个任务,我对递归、循环和类的使用有了更深入的理解,并能够灵活运用它们解决实际问题。同时,我也意识到在编程过程中需要注意终止条件、变量的更新和方法的调用,以确保程序的正确性和效率。

希望这篇文章能够帮助你更好地理解递归、循环和面向对象编程的概念,并锻炼你的C语言编程能力

C语言编程练习:阶乘、斐波那契数列和学生类设计

原文地址: https://www.cveoy.top/t/topic/f4nI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录