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

来源:互联网 发布:java运行环境官方下载 编辑:程序博客网 时间:2024/04/29 13:46

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

原创粉丝点击