尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

程序设计实践训练(Day1) - --YZ-
📅 发布时间:2026/6/19 21:23:23

程序设计实践训练(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 成立。

输入格式:

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

输出格式:

在一行中依次输出 Q 和 R,中间以 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);

相关新闻

  • 【黑马python】基础 4.Python 循环语句 while for range
  • ERP不只是财务软件!如何让生产、采购、仓库都用起来?
  • 2025 年国内智能炒菜机器人厂家最新推荐排行榜:聚焦餐饮降本增效需求,精选行业优质品牌云端/大师/节能/健康炒菜机器人厂家推荐

最新新闻

  • SAP BOM查询实战:从正查到反查的完整指南
  • 【2026年6月】热水离心泵厂家推荐指南 - 多才菠萝
  • Python图片压缩方法全解:从入门到进阶
  • 【JAVA毕设源码分享】基于SpringBoot的中华传统文化网站(程序+文档+代码讲解+一条龙定制)
  • 全国学历提升继续教育学习体验实录
  • 验证码绕过实战:从Pikachu靶场剖析客户端与服务端漏洞原理

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号