cpp: 学生成绩排序,计算平均分

不得不说,c++比起c便捷了很多,配上强大的IDE -> CLion更是如虎添翼。

下面是一个简单是统计几个学生成绩的小案例。如果使用java这样的纯面向对象的语言,非常简单;如果使用c就比较麻烦了,需要去处理字符串,结构这些东西;如果是c++呢?相对来说,还是比较简单。当然,这是一个简单的案例,没有涉及到函数的传参。

#include <iostream>

using namespace std;
struct Student {
    int age;
    bool gender;
    double score;
    string name;
};

int main() {
    Student xiaoming = {
            12,
            true,
            75.5,
            "小明"
    };

    Student xiaohong = {
            13,
            false,
            73,
            "小红"
    };

    Student hanmeimei = {
            12,
            false,
            88,
            "韩梅梅"
    };
    Student leelei = {
            13,
            true,
            96,
            "李磊"
    };
    Student member[] = {xiaoming, xiaohong, hanmeimei, leelei};

    size_t len = sizeof(member) / sizeof(member[0]);
//    cout << "test for len === " << len << endl;
    double total = 0;
    for (int i = 0; i < len; ++i) {
        total += member[i].score;
    }
    double avgScore = total / len; // 平均分
    // 按分数降序排列


    for (int j = 0; j < len; ++j) {
        Student stu = {};
        int k = -1;
        for (int i = j; i < len; ++i) {
            Student st = member[i];
            if (stu.score < st.score) {
                stu = st;
                k = i;
            }
        }
        stu = member[j];
        member[j] = member[k];
        member[k] = stu;
    }

    // show sorted array
    for (int k = 0; k < len; ++k) {
        Student f = member[k];

        cout << f.name << " , "
             << f.age << " , "
             << f.gender << " , "
             << f.score
             << endl;
    }

    cout << "平均成绩是:" << avgScore;
    return 0;
}

可以看到,这个程序非常简单。

  • 而且c++的结构很适合用来替代java中的POJO对象。因为这种对象里面不会有实际的方法,主要是一些变量的存储,对对象的描述。
  • 另外,在调用方法,也是非常的OOP的,看不到显式的指针操作,完全是对象式调用。
  • 对于字符串,c++提供的string对象其实和java中的String对象非常相似。可以直接赋值,也可以二次赋值。还可以通过+连接两个字符串。不需要像C那样需要通过指针或者strcpy();之类的函数去处理。

ps: 对于有java基础,但是没有c/c++基础,想学习c/c++的人,我想说,不要去学习c,应该直接去学习c++。因为c上手太痛苦了。即使你感觉已经理解了指针。但是去处理一个具体的案例你就明白其中的痛苦了。比如处理上面的这个成绩统计的小案例上面,估计一大半c初学者,新手会折戟沉沙。但是如果你是一个c++的新手,就不会有这样的感觉。你会感觉如此简单,根本不需要更多思考。
c真的不适合处理这些东西,你要在结构和字符串花大量时间。而java & c++很明确的提供了这些api,让你只需要处理业务逻辑就好了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个 C++ 代码示例,可以从键盘输入 10 个学生的成绩,计算平均成绩,并按平均成绩从小到大排序: ```cpp #include <iostream> #include <algorithm> using namespace std; int main() { const int n = 10; // 学生数 // 输入学生成绩 double scores[n]; cout << "请依次输入 10 个学生的成绩:" << endl; for (int i = 0; i < n; i++) { cin >> scores[i]; } // 计算平均成绩 double sum = 0; for (int i = 0; i < n; i++) { sum += scores[i]; } double average = sum / n; // 按平均成绩排序 sort(scores, scores + n); // 输出结果 cout << "平均成绩为:" << average << endl; cout << "排序后的成绩为:" << endl; for (int i = 0; i < n; i++) { cout << scores[i] << " "; } cout << endl; return 0; } ``` 在上面的代码中,我们使用了一个常量 `n` 来表示学生数,这样可以方便地修改学生数。 首先,我们定义了一个长度为 `n` 的数组 `scores` 来存储学生成绩,然后使用一个 for 循环从键盘输入每个学生的成绩。 接着,我们使用另一个 for 循环计算学生成绩的总和,然后除以学生数得到平均成绩。 最后,我们使用 `sort` 函数对 `scores` 数组进行排序,然后使用 for 循环输出排序后的成绩。 注意,在使用 `sort` 函数时,我们需要包含头文件 `<algorithm>`。另外,`sort` 函数的第一个参数是数组的起始地址,第二个参数是数组的结束地址(即最后一个元素的下一个位置)。 如果你想按平均成绩从高到低排序,可以将 `sort(scores, scores + n);` 改为 `sort(scores, scores + n, greater<double>());`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值