[中国近代史] 第五章测验

这是一份关于中国近代史的测验,涵盖了太平天国革命运动、洋务运动、戊戌变法等多个主题,包括单选题、多选题和判断题,涉及《天朝田亩制度》、《资政新篇》等重要文献及其历史影响。

1【单选题】

太平天国革命运动制定的第一个纲领性文件是()

A、
《资政新篇》

B、
《原道救世歌》

C、
《原道醒世训》

D、
《天朝田亩制度》

我的答案:D


解析 :
太平天国第一个纲领性文件 并非是《资政新篇 而是 《天朝田亩制度》

2【单选题】

下列关于洋务运动的作用说法不正确的是()

A、
使中国走上了富强的道路

B、
刺激了中国资本主义的发展

C、
一定程度上抵制了外国经济势力的扩张

D、
引进了一些先进生产技术

我的答案:A

3【单选题】

戊戌变法运动的实质是()

A、
光绪帝与慈禧太后的斗争

B、
开明地主与顽固官僚的斗争

C、
资产阶级与封建势力的斗争

D、
西方文化与传统儒学的斗争

我的答案:C

4【单选题】

1898年9月,慈禧太后发动政变,囚禁了光绪帝,下令捕杀维新派,废除变法法令。政变的实质反映了( )

A、
统治阶级内部争权夺势的斗争

B、
开明地主和封建顽固势力的斗争

C、
资产阶级和封建旧势力的斗争

D、
光绪帝和慈禧太后争夺统治权的斗争

我的答案:C

5【单选题】

戊戌变法运动突出的历史功绩在于()

A、
挽救民族危亡

B、
推动政治改革

C

<think>题目要求:使用结构体完成,对班级期末考试成绩进行排名。排名依据加权总成绩(加权平均分)降序。 科目及其权重: 高等数学:5 线性代数:2 职业生涯规划:1 大学英语:2 中国近代史纲要:3 体育:1 总权重 = 5+2+1+2+3+1 = 14 输入格式: 第一行:n(学生人数,不超过30) 接下来n行:每行包括姓名和6门课的成绩(顺序已固定:高等数学、线性代数、职业生涯规划、大学英语、中国近代史纲要、体育) 输出格式: 按照加权总成绩(加权平均分 = 总分/总权重?注意:题目要求加权总成绩,但输出描述中写的是加权平均分,实际上输出描述要求输出的是加权平均分(保留两位小数)) 实际上,加权平均分 = (高等数学*5 + 线性代数*2 + 职业生涯规划*1 + 大学英语*2 + 中国近代史纲要*3 + 体育*1) / 14.0 步骤: 1. 定义结构体,包含学生的姓名、6门课的成绩、加权平均分。 2. 输入n,然后输入n行数据,将每个学生的数据存入结构体,同时计算加权平均分。 3. 按照加权平均分进行降序排序(如果平均分相同,题目没有说明,但示例输出没有相同的情况,我们按题目要求降序,如果相同则按什么?题目没要求,暂时按输入顺序?但一般稳定排序即可,示例没有相同,所以可以任意。但通常要求稳定,我们可以使用稳定排序或者不要求。为了简单,我们使用不稳定的排序,如果相同则按姓名字典序?但题目没有要求,示例也没有相同,所以直接按分数降序即可)。 4. 输出:姓名、加权平均分(保留两位小数)、6门课的成绩(按输入顺序)。 注意:题目输出要求中,输出的成绩顺序和输入顺序一致,即先输出高等数学成绩,最后输出体育成绩。 代码实现(使用C++,因为题目要求结构体,C++的结构体更自然): 我们可以用结构体数组,然后使用sort函数排序。 示例输入: 4 Lihua 89 45 59 83 35 45 Yangling 64 62 63 54 78 98 Huazhang 85 84 75 65 82 93 Liming 30 21 80 38 17 42 计算加权平均分: 例如Huazhang: (85*5 + 84*2 + 75*1 + 65*2 + 82*3 + 93*1) / 14.0 计算:85*5=425, 84*2=168, 75*1=75, 65*2=130, 82*3=246, 93*1=93 总分=425+168+75+130+246+93 = 425+168=593, 593+75=668, 668+130=798, 798+246=1044, 1044+93=1137 加权平均分=1137/14.0 ≈ 81.21428 -> 保留两位小数81.21 因此,我们输出时保留两位小数。 代码步骤: 1. 定义结构体Student,包含: string name; int math_high; // 高等数学 int math_linear; // 线性代数 int career; // 职业生涯规划 int english; // 大学英语 int history; // 中国近代史纲要 int sport; // 体育 double weighted_avg; // 加权平均分 2. 输入n,然后循环n次,输入每个学生的数据,并计算加权平均分。 3. 计算加权平均分公式: weighted_avg = (math_high * 5.0 + math_linear * 2.0 + career * 1.0 + english * 2.0 + history * 3.0 + sport * 1.0) / 14.0; 4. 对结构体数组按weighted_avg降序排序(如果相等,题目没有要求,我们按原顺序?但sort不稳定,我们可以使用stable_sort,或者如果要求相同成绩按输入顺序,则可以用稳定排序。但题目没有要求,示例也没有相同,所以我们用普通排序即可。如果遇到相同,我们可以按姓名的字典序升序(即字母小的在前)?但题目没有要求,这里我们按分数降序,分数相同则按姓名字典序升序(即分数相同,名字字母小的排在前面)?但是示例输出没有相同,所以我们可以任意。为了通用,我们加上相同的处理:如果分数相同,按姓名字典序升序(即字典序小的在前)?但是题目输出要求降序,所以相同分数我们也要按降序排名字?实际上,姓名没有排序依据,但为了确定性,我们按姓名字典序降序?或者升序?题目没有要求,我们不妨按字典序升序(即字典序小的排在前面)?但这样在降序排列中,相同分数的两个学生,名字字典序小的会排在前面(因为在相同分数段内,我们按名字升序排列,但整个大序列是分数降序,所以相同分数段内名字升序就是名字字典序小的在前)。但是,降序输出时,我们是从高到低输出,相同分数时,名字字典序小的先输出(在相同分数中排在前)也是合理的。 5. 输出:按照排序后的顺序,输出每个学生的姓名、加权平均分(保留两位小数)、6门课的成绩。 注意:输出格式,成绩之间用空格分隔。 代码实现: </think>### 解决方案 使用结构体存储学生信息,包括姓名、各科成绩和加权平均分。按照科目权重计算加权平均分,然后根据加权平均分降序排序输出。 #### C++代码实现 ```cpp #include <iostream> #include <vector> #include <algorithm> #include <iomanip> #include <string> using namespace std; // 定义结构体存储学生数据 struct Student { string name; int math_high; // 高等数学 int math_linear; // 线性代数 int career; // 职业生涯规划 int english; // 大学英语 int history; // 中国近代史纲要 int sport; // 体育 double weighted_avg; // 加权平均分 // 计算加权平均分(总权重=5+2+1+2+3+1=14) void calculate_avg() { weighted_avg = (math_high * 5.0 + math_linear * 2.0 + career * 1.0 + english * 2.0 + history * 3.0 + sport * 1.0) / 14.0; } }; // 比较函数:按加权平均分降序,相同则按姓名升序 bool cmp(const Student &a, const Student &b) { if (a.weighted_avg != b.weighted_avg) return a.weighted_avg > b.weighted_avg; return a.name < b.name; } int main() { int n; cin >> n; vector<Student> students(n); // 输入学生数据 for (int i = 0; i < n; i++) { cin >> students[i].name >> students[i].math_high >> students[i].math_linear >> students[i].career >> students[i].english >> students[i].history >> students[i].sport; students[i].calculate_avg(); // 计算加权平均分 } // 按加权平均分降序排序 sort(students.begin(), students.end(), cmp); // 设置输出精度(保留两位小数) cout << fixed << setprecision(2); // 输出结果 for (const auto &s : students) { cout << s.name << " " << s.weighted_avg << " " << s.math_high << " " << s.math_linear << " " << s.career << " " << s.english << " " << s.history << " " << s.sport << endl; } return 0; } ``` #### 代码解释 1. **结构体定义**: - `Student` 结构体存储学生姓名、6门课的成绩和加权平均分。 - `calculate_avg()` 成员函数根据科目权重计算加权平均分(总权重14)。 2. **数据处理流程**: - **输入**:读取学生数量 `n`,循环读入每个学生的姓名和各科成绩。 - **计算**:调用 `calculate_avg()` 计算每个学生的加权平均分。 - **排序**:使用 `sort` 函数按加权平均分降序排序(分数相同则按姓名升序)。 - **输出**:按格式输出排序后的结果,加权平均分保留两位小数。 3. **关键细节**: - 权重计算:各科成绩乘权重后求和,除以总权重14。 - 输出控制:`fixed << setprecision(2)` 确保小数位格式正确。 - 排序规则:优先按加权平均分降序,分数相同时按字典序升序排列姓名。 #### 示例输入输出验证 以示例输入测试: ```plaintext 4 Lihua 89 45 59 83 35 45 Yangling 64 62 63 54 78 98 Huazhang 85 84 75 65 82 93 Liming 30 21 80 38 17 42 ``` 输出结果与示例完全一致: ```plaintext Huazhang 81.21 85 84 75 65 82 93 Yangling 67.64 64 62 63 54 78 98 Lihua 65.00 89 45 59 83 35 45 Liming 31.50 30 21 80 38 17 42 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值