当前位置: 首页 > news >正文

枚举算法和排序算法能力测试

枚举算法

题目 1:找出 1-20 中既是偶数又是 3 的倍数的数

题目描述:小明想找出 1 到 20 中既能被 2 整除又能被 3 整除的数字,帮他列出来吧。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;for (a = 1; a <= 20; a++) {if (a % 2 == 0 && a % 3 == 0) {  // 同时满足两个条件cout << a << " ";}}return 0;
}

解释:用for循环枚举 1-20 的每个数,通过&&判断是否同时满足 "被 2 整除" 和 "被 3 整除",符合条件就输出。

题目 2:找出个位是 5 的两位数

题目描述:列出所有个位是 5 的两位数(10-99 之间)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;for (a = 10; a <= 99; a++) {if (a % 10 == 5) {  // 个位是5的数除以10余数为5cout << a << " ";}}return 0;
}

解释:循环枚举所有两位数,用a%10==5判断个位是否为 5,是的话就输出。

题目 3:找特殊数字(1-10 中既不是奇数也不是合数的数)

题目描述:在 1-10 中,找出既不是奇数(排除 1,3,5,7,9)又不是合数(排除 4,6,8,9,10)的数字。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;for (a = 1; a <= 10; a++) {// 偶数(不是奇数)且不是合数if (a % 2 == 0 && (a == 2)) {cout << a;}}return 0;
}

解释:通过枚举逐个判断,1-10 中只有 2 是偶数且不是合数(合数指除了 1 和自身还有其他因数的数)。

题目 4:计算 1-10 中所有单数的和

题目描述:计算 1 到 10 中所有单数(1,3,5,7,9)的总和。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, s = 0;for (a = 1; a <= 10; a++) {if (a % 2 == 1) {  // 单数除以2余数为1s = s + a;}}cout << s;return 0;
}

解释:用s记录总和,循环中判断如果是单数就加到s里,最后输出总和。

题目 5:找出能同时被 4 和 6 整除的三位数(100-200)

题目描述:在 100 到 200 之间,找出能同时被 4 和 6 整除的数。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;for (a = 100; a <= 200; a++) {if (a % 4 == 0 && a % 6 == 0) {cout << a << " ";}}return 0;
}

解释:枚举 100-200 的数,同时满足被 4 和 6 整除的数就是公倍数,通过&&连接两个条件判断。

题目 6:找数字(1-50 中十位比个位大的数)

题目描述:找出 1-50 中十位数字比个位数字大的数(比如 21:十位 2 > 个位 1)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, s, g;  // s是十位,g是个位for (a = 1; a <= 50; a++) {s = a / 10;  // 取十位(如21/10=2)g = a % 10;  // 取个位(如21%10=1)if (s > g) {cout << a << " ";}}return 0;
}

解释:通过a/10取十位数字,a%10取个位数字,比较后输出符合条件的数。

题目 7:判断一个数是否在 3-7 之间(含边界)

题目描述:输入一个整数,判断它是否在 3 到 7 之间(包括 3 和 7)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;cin >> a;if (a >= 3 && a <= 7) {cout << "是";} else {cout << "否";}return 0;
}

解释:用&&判断输入的数是否同时满足大于等于 3 和小于等于 7,输出对应结果。

题目 8:找出 1-100 中是 7 的倍数但不是 5 的倍数的数

题目描述:列出 1 到 100 中能被 7 整除,但不能被 5 整除的数。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;for (a = 1; a <= 100; a++) {if (a % 7 == 0 && a % 5 != 0) {cout << a << " ";}}return 0;
}

解释:枚举范围内的数,判断是否是 7 的倍数且不是 5 的倍数,符合条件则输出。

题目 9:计算 1-9 中所有双数的乘积

题目描述:计算 1 到 9 中所有双数(2,4,6,8)的乘积。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, p = 1;  // p存储乘积,初始值为1for (a = 1; a <= 9; a++) {if (a % 2 == 0) {p = p * a;}}cout << p;return 0;
}

解释:用p记录乘积(初始为 1),循环中遇到双数就相乘,最后输出结果。

题目 10:找月份(一年中天数小于 30 的月份)

题目描述:一年有 12 个月份,其中 2 月(28 天)、4 月(30 天?不,4 月是 30 天,修正:2 月 < 30 天),请输出天数小于 30 的月份数字。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;for (a = 1; a <= 12; a++) {if (a == 2) {  // 只有2月天数小于30cout << a << " ";}}return 0;
}

解释:枚举 1-12 月,判断是否为 2 月(一年中唯一天数小于 30 的月份),是的话输出。

模拟算法(新颖题型)

题目 1:模拟钟表报时(输入小时,输出对应点数)

题目描述:输入当前小时数(1-12),模拟钟表报时,输出对应数量的 "咚"(如输入 3,输出 "咚咚咚")。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b;cin >> a;for (b = 1; b <= a; b++) {cout << "咚";}return 0;
}

解释:输入小时数a,循环a次输出 "咚",模拟钟表报时的声音。

题目 2:模拟电梯运行(从 1 楼到指定楼层)

题目描述:电梯初始在 1 楼,输入目标楼层(1-10),输出电梯经过的所有楼层(如输入 5,输出 "1 2 3 4 5")。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b;cin >> a;for (b = 1; b <= a; b++) {cout << b << " ";}return 0;
}

解释:从 1 开始循环到目标楼层a,依次输出经过的楼层,模拟电梯上升过程。

题目 3:模拟水果拼盘(输入两种水果,交替输出 3 次)

题目描述:输入两种水果名称(如 "苹果" 和 "香蕉"),交替输出 3 次(结果:苹果 香蕉 苹果 香蕉 苹果 香蕉)。
代码

cpp

运行

#include <iostream>
#include <string>
using namespace std;
int main() {string a, b;int c;cin >> a >> b;for (c = 1; c <= 3; c++) {cout << a << " " << b << " ";}return 0;
}

解释:循环 3 次,每次输出两种水果,模拟交替摆放水果的过程。

题目 4:模拟分数统计(输入 3 个成绩,计算平均分)

题目描述:输入 3 个 100 以内的整数(代表成绩),计算并输出它们的平均分(保留整数)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b, c, avg;cin >> a >> b >> c;avg = (a + b + c) / 3;  // 整数除法自动取整cout << avg;return 0;
}

解释:输入三个成绩,求和后除以 3 得到平均分,模拟简单的分数统计。

题目 5:模拟信号灯(红黄绿依次亮 2 秒,输出顺序)

题目描述:交通信号灯按 "红→黄→绿" 的顺序循环,每次亮 2 秒,输出前 3 次循环的顺序(共 9 个状态)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b;for (a = 1; a <= 3; a++) {  // 3次循环for (b = 1; b <= 3; b++) {  // 每次循环3个灯if (b == 1) cout << "红 ";else if (b == 2) cout << "黄 ";else cout << "绿 ";}}return 0;
}

解释:外层循环控制 3 次循环,内层循环依次输出红黄绿,模拟信号灯交替亮的过程。

题目 6:模拟折纸(一张纸对折 3 次后有几层?)

题目描述:一张纸初始 1 层,每对折 1 次层数翻倍,输入对折次数(1-5),输出最终层数。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, c = 1;  // c是层数,初始1层cin >> a;for (int b = 1; b <= a; b++) {c = c * 2;  // 每次对折翻倍}cout << c;return 0;
}

解释:用c记录层数,循环a次(对折次数),每次乘以 2,模拟折纸层数变化。

题目 7:模拟排队叫号(从 1 号开始,叫到指定号码)

题目描述:医院排队叫号,从 1 号开始,输入今天要叫的最后一个号码(1-20),输出所有被叫到的号码。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b;cin >> a;for (b = 1; b <= a; b++) {cout << "请" << b << "号就诊 ";}return 0;
}

解释:循环从 1 到输入的号码a,输出叫号提示,模拟排队叫号过程。

题目 8:模拟分配糖果(每人分 3 颗,余 2 颗,计算总糖果数)

题目描述:老师给小朋友分糖果,每人分 3 颗,最后还剩 2 颗,输入小朋友人数(1-10),计算总糖果数。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, c;cin >> a;c = a * 3 + 2;  // 每人3颗加剩余2颗cout << c;return 0;
}

解释:根据人数a计算总糖果数(人数 ×3+2),模拟糖果分配场景。

题目 9:模拟星期几(输入数字 1-7,输出对应星期)

题目描述:输入 1-7 的数字,1 代表星期一,2 代表星期二……7 代表星期日,输出对应星期。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;cin >> a;if (a == 1) cout << "星期一";else if (a == 2) cout << "星期二";else if (a == 3) cout << "星期三";else if (a == 4) cout << "星期四";else if (a == 5) cout << "星期五";else if (a == 6) cout << "星期六";else cout << "星期日";return 0;
}

解释:根据输入的数字,用多分支if-else判断并输出对应星期,模拟星期转换。

题目 10:模拟植树(每隔 2 米种 1 棵,从 0 米开始,种到 10 米)

题目描述:在一条路上从 0 米处开始种树,每隔 2 米种 1 棵,一直种到 10 米处,输出所有种树的位置。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a;for (a = 0; a <= 10; a += 2) {  // 每次加2米cout << a << "米处种树 ";}return 0;
}

解释:从 0 开始,每次增加 2 米(间隔),输出种树位置,模拟植树过程。

排序算法(新颖题型)

题目 1:给三个水果按首字母排序(苹果、香蕉、橙子)

题目描述:输入三个水果名称(苹果、香蕉、橙子中的三个),按拼音首字母(A < X < C)排序后输出。
代码

cpp

运行

#include <iostream>
#include <string>
using namespace std;
int main() {string a, b, c, t;cin >> a >> b >> c;// 比较交换a和bif (a > b) { t = a; a = b; b = t; }// 比较交换a和c(确保a最小)if (a > c) { t = a; a = c; c = t; }// 比较交换b和c(确保b中间)if (b > c) { t = b; b = c; c = t; }cout << a << " " << b << " " << c;return 0;
}

解释:通过三次比较交换,将三个字符串按首字母顺序排序(利用字符串比较规则)。

题目 2:给三个数字按从大到小排序

题目描述:输入三个整数,按从大到小的顺序输出。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b, c, t;cin >> a >> b >> c;if (a < b) { t = a; a = b; b = t; }  // a和b交换,确保a>=bif (a < c) { t = a; a = c; c = t; }  // a和c交换,确保a最大if (b < c) { t = b; b = c; c = t; }  // b和c交换,确保b次之cout << a << " " << b << " " << c;return 0;
}

解释:通过三次比较交换,先确保最大的数在a,再确保中间的数在b,实现从大到小排序。

题目 3:给两个数字交换位置后输出

题目描述:输入两个整数,交换它们的位置后输出(如输入 3 5,输出 5 3)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b, t;cin >> a >> b;t = a;  // 临时变量t保存a的值a = b;  // 把b的值给ab = t;  // 把t(原来的a)给bcout << a << " " << b;return 0;
}

解释:用临时变量t作为中间容器,实现两个变量的值交换,是排序的基础操作。

题目 4:给四个数字中的最大值和最小值排序

题目描述:输入四个整数,只输出其中的最大值和最小值(按 "最大值 最小值" 顺序)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b, c, d, max, min;cin >> a >> b >> c >> d;max = a;  // 假设a是最大值if (b > max) max = b;if (c > max) max = c;if (d > max) max = d;min = a;  // 假设a是最小值if (b < min) min = b;if (c < min) min = c;if (d < min) min = d;cout << max << " " << min;return 0;
}

解释:分别找出四个数中的最大值和最小值,按要求顺序输出,是简化的排序问题。

题目 5:按身高排序(三个小朋友的身高)

题目描述:输入三个小朋友的身高(厘米,整数),按从矮到高的顺序输出。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b, c, t;cin >> a >> b >> c;// 冒泡排序思想:两两比较交换if (a > b) { t = a; a = b; b = t; }if (b > c) { t = b; b = c; c = t; }if (a > b) { t = a; a = b; b = t; }  // 可能需要再比较一次a和bcout << a << " " << b << " " << c;return 0;
}

解释:用冒泡排序的思想,通过多次两两比较交换,实现从矮到高排序。

题目 6:给三个字母按 ASCII 码排序

题目描述:输入三个小写字母(a-z),按 ASCII 码从小到大排序(a 最小,z 最大)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {char a, b, c, t;cin >> a >> b >> c;if (a > b) { t = a; a = b; b = t; }if (a > c) { t = a; a = c; c = t; }if (b > c) { t = b; b = c; c = t; }cout << a << " " << b << " " << c;return 0;
}

解释:字符可以直接比较 ASCII 码值,通过三次比较交换实现从小到大排序。

题目 7:按数量排序(苹果、香蕉、橙子的数量)

题目描述:输入苹果、香蕉、橙子的数量(整数),按数量从少到多输出对应的水果名称(数量相同则按苹果 < 香蕉 < 橙子)。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b, c;  // a:苹果, b:香蕉, c:橙子cin >> a >> b >> c;// 先比较数量,数量相同则按预设顺序if (a <= b && a <= c) {cout << "苹果 ";if (b <= c) cout << "香蕉 " << "橙子";else cout << "橙子 " << "香蕉";} else if (b <= a && b <= c) {cout << "香蕉 ";if (a <= c) cout << "苹果 " << "橙子";else cout << "橙子 " << "苹果";} else {cout << "橙子 ";if (a <= b) cout << "苹果 " << "香蕉";else cout << "香蕉 " << "苹果";}return 0;
}

解释:先判断数量最小值对应的水果,再处理剩余两个,实现按数量排序。

题目 8:给三个数排序并标记位置(原位置 1,2,3)

题目描述:输入三个数,按从小到大排序后,输出每个数原来的位置(如输入 5 3 7,输出 "2 (3) 1 (5) 3 (7)")。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b, c, p1=1, p2=2, p3=3, t, tp;cin >> a >> b >> c;// 交换数值时同时交换位置标记if (a > b) {t = a; a = b; b = t;tp = p1; p1 = p2; p2 = tp;}if (a > c) {t = a; a = c; c = t;tp = p1; p1 = p3; p3 = tp;}if (b > c) {t = b; b = c; c = t;tp = p2; p2 = p3; p3 = tp;}cout << p1 << "(" << a << ") " << p2 << "(" << b << ") " << p3 << "(" << c << ")";return 0;
}

解释:排序时不仅交换数值,还同步交换位置标记,最后输出带原位置的排序结果。

题目 9:按年龄排序(三个小朋友的年龄)

题目描述:输入三个小朋友的年龄(整数),按年龄从大到小排序,年龄相同则按输入顺序。
代码

cpp

运行

#include <iostream>
using namespace std;
int main() {int a, b, c, t;cin >> a >> b >> c;// 从大到小排序if (a < b) { t = a; a = b; b = t; }if (a < c) { t = a; a = c; c = t; }if (b < c) { t = b; b = c; c = t; }cout << a << " " << b << " " << c;return 0;
}

解释:通过三次比较交换,实现年龄从大到小排序,年龄相同时不交换(保持输入顺序)。

题目 10:给 0-9 中的三个数字按字典序排序

题目描述:输入三个 0-9 的数字,按字典序(即字符串顺序)排序(如 1、10、2,字典序是 1、10、2)。
代码

cpp

运行

#include <iostream>
#include <string>
using namespace std;
int main() {string a, b, c, t;  // 用字符串存储数字cin >> a >> b >> c;if (a > b) { t = a; a = b; b = t; }if (a > c) { t = a; a = c; c = t; }if (b > c) { t = b; b = c; c = t; }cout << a << " " << b << " " << c;return 0;
}

解释:将数字作为字符串处理,利用字符串比较的字典序规则进行排序,适合特殊排序需求。


文章转载自:

http://3mp3Mhsg.hyrdd.cn
http://hDK10NUy.hyrdd.cn
http://ReKhOQtZ.hyrdd.cn
http://2zDXFMLq.hyrdd.cn
http://o1b7zBPQ.hyrdd.cn
http://JjH5voiF.hyrdd.cn
http://okOyCCH0.hyrdd.cn
http://tf4dkzh9.hyrdd.cn
http://XlvtMUZG.hyrdd.cn
http://GXnyv4Ly.hyrdd.cn
http://zZ7N9mpY.hyrdd.cn
http://FFOZPJ3d.hyrdd.cn
http://NpJLQChe.hyrdd.cn
http://0YlTgnbp.hyrdd.cn
http://GUFyZMzD.hyrdd.cn
http://mNGbGYJk.hyrdd.cn
http://pU1ivgEn.hyrdd.cn
http://2ParlHRr.hyrdd.cn
http://LrVHECwG.hyrdd.cn
http://PF49E1Xh.hyrdd.cn
http://tskOEHf0.hyrdd.cn
http://1xpbIz7U.hyrdd.cn
http://VWy4xZsH.hyrdd.cn
http://FkYHepY4.hyrdd.cn
http://Ikx35J8c.hyrdd.cn
http://gvzEHEeq.hyrdd.cn
http://3lmrbYX6.hyrdd.cn
http://NyuRvGxE.hyrdd.cn
http://c2KqkVoH.hyrdd.cn
http://QlVqrxOw.hyrdd.cn
http://www.dtcms.com/a/381101.html

相关文章:

  • 未来之窗昭和仙君 (四) 前端网页分页 — 东方仙盟筑基期
  • Class50 LSTM
  • Redis是什么?一篇讲透它的定位、特点与应用场景
  • [zlaq.mohurd]网页搜索功能JavaScript实现机制技术分析报告
  • k8s工作负载-Pod学习
  • IDF: Iterative Dynamic Filtering Networks for Generalizable Image Denoising
  • 网络安全赚钱能力提升平台众测平台(个人经常使用的)
  • n8n自动化测试指南(一):环境配置与初探功能
  • PAT乙级_1117 数字之王_Python_AC解法_无疑难点
  • CSS布局 - 网格布局 -- 笔记3
  • OSPF高级技术 相关知识点
  • ​ 真无线蓝牙耳机怎么选?舒适与实用如何兼得?
  • 4. 信息安全技术基础知识
  • 我“抄”了 sogou/workflow 的设计,用现代 C++ 写了个 HTTP 框架
  • 关于ros2_control中的joint_state_broadcaster,监听/joint_states,关节轨迹乱序问题。
  • 【Anaconda】Conda 与 Pip 在包管理方面的区别
  • 【卷积神经网络详解与实例】6——经典CNN之LeNet
  • 微信小程序开发教程(八)
  • 四川危化品安全员考试题库及答案
  • AI数字人:虚拟世界的新宠儿
  • 数据结构:优先级队列(堆)
  • [Vi] 打开或新建文件
  • Network in Network (NIN):1×1卷积首次提出
  • 【硬件-笔试面试题-93】硬件/电子工程师,笔试面试题(知识点:波特图)
  • 【RelayMQ】基于 Java 实现轻量级消息队列(九)
  • 机器学习-数据清理、数据变换
  • 测试用例全解析:从入门到精通(1)
  • Linux Netfilter 之 如何完成一个自制的防火墙实例
  • 大语言模型强化学习中的熵崩溃现象:机制、影响与解决方案
  • Netty 源码扩展篇:零拷贝、内存池与背压机制