您的位置:首页 > 新闻 > 热点要闻 > 设计接单兼职网站_人力资源网站_网站快速优化排名软件_谷歌推广新手教程

设计接单兼职网站_人力资源网站_网站快速优化排名软件_谷歌推广新手教程

2025/2/24 9:26:54 来源:https://blog.csdn.net/wxtg1921/article/details/144143546  浏览:    关键词:设计接单兼职网站_人力资源网站_网站快速优化排名软件_谷歌推广新手教程
设计接单兼职网站_人力资源网站_网站快速优化排名软件_谷歌推广新手教程

代码展示

#include<iostream>
#include<string>
#include<vector>
#include<deque>
#include<algorithm>
using namespace std;
class Person {
public:Person(int score, string name) {this->m_name = name;this->m_score = score;}string m_name;int m_score;
};
//创建选手
void createPerson(vector<Person>& v) {string nameSeed = "ABCDEF";for (int i = 0; i < 5; i++) {string name = "选手";name += nameSeed[i];int score = 0;//将初始成绩设为0Person p(score,name);v.push_back(p);}
}
//打分
void setScore(vector<Person>& v) {for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {deque<int>d;for (int i = 0; i < 10; i++) {int score = rand() % 41 + 60;d.push_back(score);}/*cout << "选手:" << it->m_name << "打分:" << endl;for (deque<int>::iterator dit = d.begin(); dit < d.end(); dit++) {cout << *dit<<" ";}cout << endl;*///排序sort(d.begin(), d.end());//除去最小值和最大值d.pop_back();d.pop_front();//累加分数int sum = 0;for (deque<int>::iterator dit = d.begin(); dit < d.end(); dit++) {sum += *dit;//注意必须要用地址而不是直接用数}int avg = sum / d.size();//把平均数给选手it->m_score = avg;}//显示平均分}
void ShowScore(vector<Person>& v) {for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {cout << "选手:" << it->m_name << "平均分:" << it->m_score << endl;}
}
int main() {vector<Person>v;createPerson(v);//测试/*for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {cout <<  it->m_name << "成绩:" << it->m_score << endl;}*/setScore(v);ShowScore(v);system("pause");return 0;
}

逐行解释代码

头文件包含
#include<iostream>
#include<string>
#include<vector>
#include<deque>
#include<algorithm>
using namespace std;
  • #include<iostream>:包含输入输出流的头文件,用于标准输入输出操作。
  • #include<string>:包含字符串类的头文件。
  • #include<vector>:包含vector容器的头文件。
  • #include<deque>:包含deque容器的头文件。
  • #include<algorithm>:包含算法库的头文件,用于排序等操作。
  • using namespace std;:使用标准命名空间,避免每次调用标准库函数时都要加上std::前缀。
定义Person
class Person {
public:Person(int score, string name) {this->m_name = name;this->m_score = score;}string m_name;int m_score;
};
  • class Person:定义一个名为Person的类。
  • public::声明公共成员。
  • Person(int score, string name):定义一个构造函数,接受一个整数score和一个字符串name
  • this->m_name = name;:将传入的name赋值给成员变量m_name
  • this->m_score = score;:将传入的score赋值给成员变量m_score
  • string m_name;:定义一个字符串成员变量m_name,用于存储姓名。
  • int m_score;:定义一个整数成员变量m_score,用于存储分数。
创建选手函数
void createPerson(vector<Person>& v) {string nameSeed = "ABCDEF";for (int i = 0; i < 5; i++) {string name = "选手";name += nameSeed[i];int score = 0; // 将初始成绩设为0Person p(score, name);v.push_back(p);}
}
  • void createPerson(vector<Person>& v):定义一个函数,接受一个vector<Person>类型的引用参数。
  • string nameSeed = "ABCDEF";:定义一个字符串nameSeed,用于生成选手的名字。
  • for (int i = 0; i < 5; i++):使用循环创建5个选手。
  • string name = "选手";:初始化一个字符串name,值为“选手”。
  • name += nameSeed[i];:将nameSeed中的一个字符追加到name中,生成完整的选手名字。
  • int score = 0;:初始化一个整数score,值为0,表示初始成绩。
  • Person p(score, name);:创建一个Person对象p,传入初始成绩和名字。
  • v.push_back(p);:将创建的Person对象p添加到vector容器v中。
打分函数
void setScore(vector<Person>& v) {for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {deque<int> d;for (int i = 0; i < 10; i++) {int score = rand() % 41 + 60;d.push_back(score);}// 排序sort(d.begin(), d.end());// 除去最小值和最大值d.pop_back();d.pop_front();// 累加分数int sum = 0;for (deque<int>::iterator dit = d.begin(); dit < d.end(); dit++) {sum += *dit; // 注意必须要用地址而不是直接用数}int avg = sum / d.size();// 把平均数给选手it->m_score = avg;}
}
  • void setScore(vector<Person>& v):定义一个函数,接受一个vector<Person>类型的引用参数。
  • for (vector<Person>::iterator it = v.begin(); it != v.end(); it++):使用迭代器遍历vector容器中的每个Person对象。
  • deque<int> d;:定义一个deque<int>类型的容器d,用于存储评分。
  • for (int i = 0; i < 10; i++):使用循环生成10个评分。
  • int score = rand() % 41 + 60;:生成一个60到100之间的随机整数,作为评分。
  • d.push_back(score);:将生成的评分添加到deque容器d中。
  • sort(d.begin(), d.end());:使用sort函数对deque容器d中的评分进行排序。
  • d.pop_back();:删除deque容器d中的最大评分。
  • d.pop_front();:删除deque容器d中的最小评分。
  • int sum = 0;:初始化一个整数sum,用于累加评分。
  • for (deque<int>::iterator dit = d.begin(); dit < d.end(); dit++):使用迭代器遍历deque容器d中的每个评分。
  • sum += *dit;:将当前迭代器指向的评分累加到sum中。
  • int avg = sum / d.size();:计算平均评分。
  • it->m_score = avg;:将计算得到的平均评分赋值给当前Person对象的m_score成员变量。
显示评分函数
void ShowScore(vector<Person>& v) {for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {cout << "选手:" << it->m_name << "平均分:" << it->m_score << endl;}
}
  • void ShowScore(vector<Person>& v):定义一个函数,接受一个vector<Person>类型的引用参数。
  • for (vector<Person>::iterator it = v.begin(); it != v.end(); it++):使用迭代器遍历vector容器中的每个Person对象。
  • cout << "选手:" << it->m_name << "平均分:" << it->m_score << endl;:输出当前Person对象的姓名和平均评分。
主函数
int main() {vector<Person> v;createPerson(v);// 测试/*for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {cout << it->m_name << "成绩:" << it->m_score << endl;}*/setScore(v);ShowScore(v);system("pause");return 0;
}
  • vector<Person> v;:创建一个vector<Person>类型的容器v
  • createPerson(v);:调用createPerson函数,创建5个选手并添加到v中。
  • /*for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) { cout << it->m_name << "成绩:" << it->m_score << endl; }*/:注释掉的测试代码,用于输出每个选手的姓名和初始成绩。
  • setScore(v);:调用setScore函数,为每个选手生成评分并计算平均评分。
  • ShowScore(v);:调用ShowScore函数,输出每个选手的姓名和平均评分。
  • system("pause");:暂停程序,等待用户按键。
  • return 0;:返回0,表示程序正常结束。

核心思想

这段代码的核心思想是模拟一个比赛评分系统,具体步骤如下:

  1. 创建选手:生成5个选手,每个选手的名字由“选手”加上一个字母组成,初始成绩为0。
  2. 打分:为每个选手生成10个评委的评分,去掉最高分和最低分,计算剩余评分的平均值,作为选手的最终成绩。
  3. 显示评分:输出每个选手的姓名和最终成绩。

所需知识及解释

  1. 类和对象

    • 类的定义:使用class关键字定义类,包含成员变量和成员函数。
    • 构造函数:用于初始化对象,可以在构造函数中设置成员变量的初始值。
    • 成员变量:类中定义的变量,用于存储对象的状态。
    • 成员函数:类中定义的函数,用于操作对象的状态。
  2. 容器

    • vector容器:动态数组,支持高效的尾部插入和删除操作。
    • deque容器:双端队列,支持高效的两端插入和删除操作。
  3. 迭代器

    • 迭代器的概念:迭代器是访问容器中元素的一种方式,类似于指针。
    • 迭代器的使用:使用迭代器遍历容器中的元素,可以进行读取、修改等操作。
  4. 算法

    • sort函数:用于对容器中的元素进行排序。
    • rand函数:生成随机数,用于模拟评委的评分。
  5. 输入输出

    • coutendl:用于输出文本和换行。
    • system("pause"):用于暂停程序,等待用户按键。
  6. 字符串操作

    • 字符串拼接:使用+操作符将字符串拼接在一起。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com