c++习题记录与总结2023.12.10

题目:黑马程序员b站课程P49(多维数组记录学生三科目成绩+冒泡排序排出学生成绩排名)

答案:

#include<iostream>
#include<string>
using namespace std;

int main() {
    int grade[5][4];
    string course_name[4] = { "语文","数学","英语","总成绩" };
    for (int line0 = 0; line0 <= 4; ++line0) {
        grade[line0][3] = 0;
    }
    cout << "请为5位同学做好编号,按编号从小到大依次输入6位同学的语文、数学、英语成绩。" << endl <<
        "系统会给出5位同学总分数的排序。" << endl <<endl<<
        "请输入5位同学分数:" << endl;

    //成绩录入与总成绩计算模块
    int storage1;
    for (int line1 = 0; line1 <= 4; ++line1) {
        cout << endl<<"第" << line1 + 1 << "位同学成绩:"<<endl;
        for (int column1=0; column1 <= 2; ++column1) {
            cout << course_name[column1] << ":";
            cin >> storage1;
            if (storage1 < 0 || storage1>100) {
                cout << "(该成绩有误,请在右侧重新输入:)";
                cin >> storage1;
            }
            grade[line1][column1]=storage1;
            grade[line1][3] = grade[line1][3] + grade[line1][column1];
        }
    }


    //成绩打印模块
    cout <<endl<< "成绩输入完成,以下是输入的成绩:" << endl;
    for (int line2 = 0; line2 <= 4; ++line2) {
        cout << "编号" << line2 + 1 << "同学成绩:";
        for (int column2 = 0; column2 <= 3; column2++) {
            cout << course_name[column2] << ":" << grade[line2][column2] << "  ";
        }
        cout << endl;
    }

    //总成绩排序与输出
    cout <<endl<< "以下是按总成绩排序的学生成绩:" << endl;
    int storage2[4];
    for (int rank_count = 3; rank_count >= 0; --rank_count) {
        for (int line3 = 0; line3 <= rank_count; ++line3) {
            if (grade[line3][3] < grade[line3 + 1][3]) {
                for (int column3 = 0; column3 <= 3; ++column3) {
                    storage2[column3] = grade[line3 + 1][column3];
                    grade[line3 + 1][column3] = grade[line3][column3];
                    grade[line3][column3] = storage2[column3];
                }
            }
        }
    }

    for (int line4 = 0; line4 <= 4; ++line4) {
        cout << "第"<<line4+1<<"名成绩:";
        for (int column4 = 0; column4 <= 3; column4++) {
            cout << course_name[column4] << ":" << grade[line4][column4] << "  ";
        }
        cout << endl;
    }

    return 0;
}

错误总结:

1. 数组下标运算中,数组中元素编号从0开始计算(即第一个元素用[0]访问,第二个元素用[1]访问,……);

2. 数组中的元素若未初始化或进行过赋值,不会被默认为0,此时直接用它进行计算会出bug;

3. 冒泡排序大致流程:对于n组数据,第一次排序确定n组数据中最小(大)的,第二次排序确定剩余(n-1)个数据中最小(大)的,……;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值