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

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

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

#include 

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,让你只需要处理业务逻辑就好了

你可能感兴趣的:(computer,大猫学C/C++)