程序设计实践训练(Day1) - --YZ-

news/2025/10/13 16:53:59/文章来源:https://www.cnblogs.com/zylovelch/p/19138840

程序设计实践训练(Day1)

Posted on 2025-10-13 16:46  --YZ--  阅读(0)  评论(0)    收藏  举报

程序设计实践训练(Day1)

第一——判断

对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。


(num % 2 == 0) ? num / 2 : (3 * num + 1) / 2;

三元条件运算符

条件 ? 表达式1 : 表达式2

  • 如果 条件为真,则整个表达式的结果为 表达式1 的值
  • 如果 条件为假,则整个表达式的结果为 表达式2 的值

if-else语句也可以,但是会更复杂,不推荐

第二——字符串的用法

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。


数字比较长的时候就要求用字符串

for循环的用法:

for (char c : n) {
sum += c - '0';
}

  • char c:循环变量声明,每次迭代会从容器中取出一个元素赋值给 c

  • n:要遍历的容器(这里是字符串)

  • sum += c - '0':循环体,将字符转换为数字。

#include <iostream>
#include <string>
using namespace std;int main(){//1.声明和优化string s1 = "Hello";string s2(" World");string s3(3, 'A');  // "AAA"
// 2. 字符串连接
string s4 = s1 + s2;  // "Hello World"
s1 += s2;             // s1变为"Hello World"// 3. 获取长度和判断空
cout << "长度: " << s4.length() << endl;
cout << "是否为空: " << (s4.empty() ? "是" : "否") << endl;// 4. 访问字符
cout << "第一个字符: " << s4[0] << endl;
cout << "第二个字符: " << s4.at(1) << endl;// 5. 查找子串
size_t pos = s4.find("World");
if (pos != string::npos) {cout << "找到World在位置: " << pos << endl;
}// 6. 提取子串
string sub = s4.substr(6, 5);  // "World"
cout << "子串: " << sub << endl;// 7. 比较字符串
if (s1 == s4) {cout << "s1和s4相等" << endl;
}// 8. 输入输出
string input;
cout << "请输入字符串: ";
getline(cin, input);  // 读取整行
cout << "你输入的是: " << input << endl;// 9. 数字与字符串转换
int num = 123;
string numStr = to_string(num);
cout << "数字转字符串: " << numStr << endl;string numStr2 = "456";
int num2 = stoi(numStr2);
cout << "字符串转数字: " << num2 << endl;// 10. 遍历字符串
cout << "遍历字符串: ";
for (char c : s4) {cout << c << " ";
}
cout << endl;// 11. 清空字符串
s4.clear();
cout << "清空后长度: " << s4.length() << endl;//12.反转字符串
reverse(s4.begin(),s4.end);
return 0;
}

题目:

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello
#include <iostream>
#include <string>
using namespace std;
int main() {string s[80];int count = 0;while (cin >> s[count]) {count++;}
//s[]={"Hello","World","Here","I","Come"};for (int i = count - 1; i >= 0; i--) {cout << s[i];if (i > 0) {cout << " ";}}return 0;
}

第三——判断素数

bool isPrime(int n){if(n<=1)return false;if(n==2)return false;if(n%2==0)return false;for(int i=3;i*i<=n;i+=2){if(n%i==0){return false;}}return true;
}

第四——对字符串的巧妙应用

本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。

输入格式:

输入在一行中依次给出 AB,中间以 1 空格分隔。

输出格式:

在一行中依次输出 QR,中间以 1 空格分隔。

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

#include <iostream>
#include <string>
using namespace std;int main() {string A;//数字太长,那我们就把它转化为字符串int B;cin >> A >> B;string Q;int R = 0;for (int i = 0; i < A.length(); i++) {int current = R * 10 + (A[i] - '0');Q += current / B + '0';R = current % B;}if (Q[0] == '0' && Q.length() > 1) {Q = Q.substr(1);}//就是避免第一位除以除数时得到0,这样就能够直接去除第一位cout << Q << " " << R;return 0;
}

题目原理就是:

123412     ← 12 ÷ 4 = 3,余数0--03    ← 把下一位3移下来,3 ÷ 4 = 0,余数300--34   ← 把下一位4移下来,34 ÷ 4 = 8,余数232--2   ← 最终余数2

第五——冒泡排序

给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。

例如,我们从6767开始,将得到

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
... ...

现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。

输入格式:

输入给出一个 (0,104) 区间内的正整数 N

输出格式:

如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。

输入样例 1:

6767

输出样例 1:

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174

原理:

对所给的数字每一位进行排序,排一个最大数和最小数,用最大数减去最小数

注意:排序要用冒泡排序

输入样例 1:

6767

冒泡排序:

string str="6767";
//得到最大数
string max_str=str;
for(int i=0;i<str.length()-1;i++){for(int j=0;j<str.length()-i-1;j++){if(max_str[j]<max_s[j+1]){char temp=max_str[j];max_str[j]=max_str[j+1];max_str[j+1]=temp;}}
}
int max_num=stoi(max_str);//得到最小数
string min_str=str;
for(int i=0;i<str.length()-1;i++){for(int j=0;j<str.length()-i-1;j++){if(min_str[j]>min_s[j+1]){char temp=min_str[j];min_str[j]=min_str[j+1];min_str[j+1]=temp;}}
}
int min_str=stoi(min_str);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vmware部署win7,win2008,win2012等系统如何手动安装vmware tools

vmware部署win7,win2008,win2012等系统如何手动安装vmware toolswin10和win11都能自动安装vmware tools,但win7,win2008和win2012必须手动安装,Windows版的vmware toos镜像名称是windows.iso,路径在VMware Works…

2025 年工业 X 光机厂家最新推荐排行榜:聚焦技术领先与市场认可的优质国内企业选购指南X光检查机/食品X光机/异物检测厂家推荐

引言当前工业制造向高端化、智能化加速转型,X 光机作为核心检测设备,在集成电路、新能源电池、汽车制造等领域的作用愈发关键,是保障产品质量安全的 “工业医生”。但随着市场需求激增,X 光机品牌数量大幅增加,产…

【黑马python】基础 4.Python 循环语句 while for range

笔记汇总目录【黑马python】8天python从入门到精通 - 汇总Python 循环语句代码示例参考链接黑马-4.Python 循环语句 01-while循环的基础应用tbd

ERP不只是财务软件!如何让生产、采购、仓库都用起来?

很多企业上ERP的时候,都是满心期待的。领导层觉得,有了ERP,信息化终于能覆盖全公司,财务、生产、采购、仓库、销售都能打通,数据实时共享,效率大大提升。 可是一年两年过去了,现实情况却常常是这样:财务天天在…

2025 年国内智能炒菜机器人厂家最新推荐排行榜:聚焦餐饮降本增效需求,精选行业优质品牌云端/大师/节能/健康炒菜机器人厂家推荐

当前餐饮行业深陷人力成本高、菜品标准化难、出餐效率低的困境,智慧厨房升级成为破局关键,炒菜机器人市场需求激增。但市面上品牌繁杂,产品质量、功能优势差异大,餐饮企业难辨优劣,选购时易踩坑。为帮助餐饮企业精…

linux 系统指标 简单监控 脚本

#!/bin/bash # 系统监控脚本 - 每日执行版 # 通过crontab每天00:01触发,执行到23:59:59结束 # 使用方法:添加到crontab - 01 00 * * * /root/sys_monitor.sh# 定义日志目录和文件 LOG_DIR="/root/logs/sys_moni…

2025 年最新推荐!国内优质流量计厂家综合实力推荐榜,助力企业精准选购可靠流量测量设备涡街/超声波/液体/气体/工业流量计厂家推荐

引言在工业生产自动化进程中,流量计作为关键的流体流量测量设备,其性能稳定性、数据精准度直接关系到企业生产效率提升、运营成本控制乃至安全生产保障。当前国内流量计市场品牌繁杂,既有深耕行业多年的老牌企业,也…

宝塔项目配置CDN

核心思路 配置CDN的核心流程可以简单概括为:​​源站(你的服务器)不变 -> 域名解析指向CDN提供商 -> CDN回源到你的服务器​​ 第一步:准备工作​​一个可正常访问的网站​​:确保你的网站在宝塔面板上已经…

59. 螺旋矩阵 II 模拟过程

59. 螺旋矩阵 II 思路 用代码模拟出顺时针填充数字的过程。 每填充一圈涉及4条边:顶部、右列、底部、左列。对每条边的处理保持一致,每条边均采用左闭右开统一处理,避免出现混乱,即循环不变量原则。 不变量:坚持相…

2025 年漆包线制造厂最新推荐排行榜:极细合金 / 自粘铜包铝 / 医疗消融合金等多类型线材企业精选,助力采购商精准挑选优质品牌

引言 当前漆包线行业产能过剩问题突出,供需失衡加剧市场 “内卷”,漆包圆线领域企业扎堆、产品同质化严重,企业常以延长账期、降低加工费等方式竞争,导致行业陷入低水平循环。采购商在众多品牌中难辨优劣,亟需一份…

你真的会在SQL Plus中设置行宽吗?

你真的会在SQL Plus中设置行宽吗?2025-10-13 16:38 潇湘隐者 阅读(0) 评论(0) 收藏 举报在使用SQL Plus命令行时,经常会要设置行宽(linesize),展示的格式才能美观一些.但是你真的对行宽设置都理解透彻了吗? SET …

秒杀系统的架构(Golang 实现) - Lafite

秒杀系统的架构(Golang 实现) 12306抢票,极限并发带来的思考? 每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家…

2025 年 NMN 怎么选?Japan KSKN,抗衰领域的实力之选

随着人们生活水平的提高,对健康和抗衰老的关注度日益提升。NMN 作为一种热门的抗衰成分,逐渐走进大众视野。在众多 NMN 品牌中,Japan KSKN(日本康诺)以其独特的优势脱颖而出。一、Japan KSKN 核心实力,公司概况与…

2025 CSP-S 邮寄

(-?,9.20) 初赛准备。 每天晚上都来机房,做了几套初赛题都差不多 \(60\) 到 \(70\)。 今年 sd 居然可以同时报 -S 和 -J 了( wabc30 兴致勃勃地表示一定要打这最后一次 -J。) [9.20,9.20] 初赛,照例跟 StarsIntoSea…

AlmaLinux安装Gnome界面

没界面的alma Linux 中 执行这个指令sudo systemctl set-default graphical.target执行完后(时间比较长)安装完 GNOME 后,你需要启用图形界面服务。首先,关闭当前的图形界面会话(如果你已经登录的话)。然后,运行…

实用指南:STM32 单片机开发 - FreeRTOS 实时操作系统

实用指南:STM32 单片机开发 - FreeRTOS 实时操作系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

CF1442C Graph Transpositions 比正确答案大了1

做到最后,应该都知道把19步转置以上的分层图压缩掉 我偷懒,把所有信息都压缩在dis[19][x]里面,于是这样会在找最短路的过程中把步数信息覆盖,于是答案会大1 解决方案: 把步数分成奇数步和偶数步就可以保证上一步的…

setState 第二个参数的作用?

在 React(类组件中)setState 的第二个参数是一个 回调函数(callback),它会在 状态更新并且组件重新渲染完成后 执行。 基本语法 this.setState(updater[, callback])updater:可以是对象(直接更新状态)或函数(…

2025 年镀铝板厂商最新推荐榜:聚焦技术创新、行业适配与服务保障的国内优质企业全景解析镀铝板零售/镀铝板零开/镀铝板开平/镀铝板平板厂家推荐

引言当前镀铝板在交通运输、建筑装饰、电子电气等领域应用愈发广泛,市场需求持续增长,但供应商数量激增也导致市场乱象频发。部分供应商产品质量不稳定,尺寸精度、表面质量不达标;技术实力薄弱,无法提供针对性材料…

视频抽帧完全指南:使用PowerShell批量提取与优化图片序列 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …