// StudentArry.cpp : //练习案例:学生数组成绩显示方法 StudentArry //案例描述:学生数组成绩显示方法 #include "StudentArry.h" #include <iostream> #include <string> #include <vector> #include <memory> #include <iostream> #include <list> using namespace std; /** * @brief * \author geovindu. * \date 20230-4-10 */ namespace geovindu { /// <summary> /// 学生成绩 /// 数组用法 /// </summary> void StudentArry::displayStudent() { // int SubjectScore = 0; // int grossScore = 0; string name[5] = { "张三","李四","王五","涂聚文","Geovin" }; const int nameCount = size(name); string Subject[4] = { "语文","数学","英语","物理" }; const int SubjectCount = size(Subject); string strname = ""; //前人数 后分数 int ScoreList[nameCount][SubjectCount] = { { 100,100,100,99 },{ 90,50,100,60 },{ 60,70,80,77 },{ 20,30,40,27 },{ 10,20,50,17 } }; //表标题 cout << "\t"; for (int i = 0; i < SubjectCount; i++) { cout << Subject[i] + "\t"; } cout << "总分"; cout << endl; //内容列表 for (int i = 0; i < nameCount; i++) { grossScore = 0; cout << name[i] << "\t"; for (int j = 0; j < SubjectCount; j++) { cout << ScoreList[i][j] << "\t"; grossScore = grossScore + ScoreList[i][j]; } cout << grossScore; cout << endl; } //求总分和平均分 int sum = 0; int ver[SubjectCount]; cout << "科总分 "; for (int i = 0; i < SubjectCount; i++) { SubjectScore = 0; for (int j = 0; j < nameCount; j++) { SubjectScore = SubjectScore + ScoreList[j][i]; } sum = sum + SubjectScore; ver[i] = SubjectScore / nameCount; cout << SubjectScore << "\t"; } cout << sum; cout << endl; //显示分均分行 cout << "平均分 "; for (int i = 0; i < SubjectCount; i++) { cout << ver[i] << "\t"; } cout << endl; cout << "***********************************" << endl; /* for (int i = 0; i < 3; i++) { ge = 0; for (int j = 0; j < 3; j++) { ge = ge + chengji[i][j]; } strname = name[i] + to_string(ge); cout << name[i] << "个人总分:" << ge << endl; //cout <<"个人总分:"<< strname << endl; yuwen = 0; for (int j = 0; j < 3; j++) { yuwen = yuwen + chengji[j][i]; } cout << cheng[i] << "课程总分数:" << yuwen << endl; } */ } /// <summary> /// 学生成绩 /// </summary> /// <param name="name">学生姓名列表</param> /// <param name="Subject">课程列表</param> /// <param name="ScoreList">分数列表</param> void StudentArry::displayStudent(string name[5], string Subject[4], int ScoreList[5][4]) { // int SubjectScore = 0; // int grossScore = 0; const int nameCount = sizeof(name); const int SubjectCount = sizeof(Subject); string strname = ""; //表标题 cout << "\t"; for (int i = 0; i < SubjectCount; i++) { cout << Subject[i] + "\t"; } cout << "总分"; cout << endl; //内容列表 for (int i = 0; i < nameCount; i++) { grossScore = 0; cout << name[i] << "\t"; for (int j = 0; j < SubjectCount; j++) { cout << ScoreList[i][j] << "\t"; grossScore = grossScore + ScoreList[i][j]; } cout << grossScore; cout << endl; } //求总分和平均分 int sum = 0; int ver[SubjectCount]; cout << "科总分 "; for (int i = 0; i < SubjectCount; i++) { SubjectScore = 0; for (int j = 0; j < nameCount; j++) { SubjectScore = SubjectScore + ScoreList[j][i]; } sum = sum + SubjectScore; ver[i] = SubjectScore / nameCount; cout << SubjectScore << "\t"; } cout << sum; cout << endl; //显示分均分行 cout << "平均分 "; for (int i = 0; i < SubjectCount; i++) { cout << ver[i] << "\t"; } cout << endl; cout << "***********************************" << endl; } /// <summary> /// 学生成绩 /// </summary> /// <param name="name">学生姓名列表</param> /// <param name="Subject">课程列表</param> /// <param name="ScoreList">分数列表</param> void StudentArry::displayStudentVector(vector<string> name, vector<string>Subject, vector<vector<int>> ScoreList) { // int SubjectScore = 0; // int grossScore = 0; const int nameCount = name.size(); const int SubjectCount = Subject.size(); //const int vCout = SubjectCount;// Subject.size(); const int geovindu= Subject.size(); string strname = ""; //表标题 cout << "\t"; for (int i = 0; i < SubjectCount; i++) { cout << Subject[i] + "\t"; } cout << "总分"; cout << endl; //内容列表 for (int i = 0; i < nameCount; i++) { grossScore = 0; cout << name[i] << "\t"; for (int j = 0; j < SubjectCount; j++) { cout << ScoreList[i][j] << "\t"; grossScore = grossScore + ScoreList[i][j]; } cout << grossScore; cout << endl; } //求总分和平均分 int sum = 0; const int vcout = Subject.size(); int* verScore =new int[vcout]; cout << "科总分 "; for (int i = 0; i < SubjectCount; i++) { SubjectScore = 0; for (int j = 0; j < nameCount; j++) { SubjectScore = SubjectScore + ScoreList[j][i]; } sum = sum + SubjectScore; verScore[i] = SubjectScore / nameCount; cout << SubjectScore << "\t"; } cout << sum; cout << endl; //显示分均分行 cout << "平均分 "; for (int i = 0; i < SubjectCount; i++) { cout << verScore[i] << "\t"; } cout << endl; cout << "***********************************" << endl; } } // StudentArry.h : 此文件包含 "StudentArry" 类。学生数组成绩显示方法 C++ 14 // 2023年4月9日 涂聚文 Geovin Du edit. //(1)vec1.size() 就是”二维数组”的行数 //(2)vec1[0].size() 就是”二维数组”的列数 //vector<vector<double>> geovindu #pragma once #ifndef STUDENTARRY_H #define STUDENTARRY_H #include <iostream> #include <string> #include <vector> #include <memory> #include <iostream> #include <string> #include <ctime> #include <cstdlib> #include <list> using namespace std; /** * */ namespace geovindu { /// <summary> /// 学生数组成绩显示方法 /// </summary> class StudentArry { private: public: void displayStudent(); /// <summary> /// 学生成绩 /// </summary> /// <param name="name">学生姓名列表</param> /// <param name="Subject">课程列表</param> /// <param name="ScoreList">分数列表</param> void displayStudent(string name[5], string Subject[5], int ScoreList[5][4]); /// <summary> /// 学生成绩 /// </summary> /// <param name="name">学生姓名列表</param> /// <param name="Subject">课程列表</param> /// <param name="ScoreList">分数列表</param> void displayStudentVector(vector<string> name, vector<string>Subject, vector<vector<int>> ScoreList); }; } #endif
void Geovin::displayScore() { string name[5] = { "张三","李四","王五","涂聚文","Geovin" }; string Subject[4] = { "语文","数学","英语","物理" }; int ScoreList[5][4] = { { 100,100,100,99 },{ 90,50,100,60 },{ 60,70,80,77 },{ 20,30,40,27 },{ 10,20,50,17 } }; StudentArry arry; //1 arry.displayStudent(); /**/ vector<string> sname; vector<string> sbject; int c = 0; for (auto i : name) { sname.push_back(i); //cout << i << endl; //sname[c] = i; c++; } c = 0; for (auto i : Subject) { sbject.push_back(i); //sbject[c] = i; //cout << i << endl; c++; } const int nameCount = name->size(); const int SubjectCount = Subject->size(); vector<int> w(10, 1); // w: width 即列数 vector< vector<int> > arr(9, w); // 9行10列 二维数组 //vector<vector<int>> sscore[5][4]; vector<vector<int> > sscore(nameCount, vector<int>(SubjectCount)); for (int i = 0; i < nameCount; i++) { for (int j = 0; j < SubjectCount; j++) { //cout << ScoreList[i][j] << endl; int geovindu = ScoreList[i][j]; sscore[i][j] = geovindu;// ; } } //显示 /* for (int i = 0; i < sscore.size(); ++i) { for (int j = 0; j < sscore[0].size(); ++j) { cout << sscore[i][j] << " "; } cout << endl; } */ arry.displayStudentVector(sname, sbject, sscore); }
调用:
Geovin geovin; //成绩显示 geovin.displayScore();
输出: