PAT乙级刷题/1002 写出这个数/C++实现
2021/11/18 1:10:15
本文主要是介绍PAT乙级刷题/1002 写出这个数/C++实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、题目描述
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
二、思路分析
这题我认为比较考察字符串的一些东西,整个思路不是很难,把输入的一行数字累加起来,得到他们的和,最后用汉语拼音的方式写出来
三、代码以及提交截图
#include <iostream> #include <string> using namespace std; int main() { string s; //将该数字以字符串的形式输入 cin >> s; int sum = 0; for(int i = 0; i < s.length(); i++) { sum = sum + (s[i] - '0');//通过i - '0'将每位字符型数字转换为整型数字,再计算累加和 } string str[10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"}; string num = to_string(sum);//to_string将数字常量转换为字符串 for(int i = 0;i < num.length();i++) { if(i != 0) { cout << " "; } cout << str[num[i] - '0'];//很巧妙 } return 0; }
四、一些总结
1.to_string用法
具体可以看下这篇文章
std::to_string - cppreference.com
示例代码:
// CPP program to illustrate // std::to_string #include <bits/stdc++.h> // Driver code int main() { // Converting float to string std::string str1 = std::to_string(12.10); // Converting integer to string std::string str2 = std::to_string(9999); // Printing the strings std::cout << str1 << '\n'; std::cout << str2 << '\n'; return 0; }
输出结果:
12.100000 9999
2.s[i] - '0' 和 num[i] - '0'
注意到- '0',为什么要这样操作呢,显然结合题解代码,要把字符型数字转化为整型数字
举个例子,'9'=57 因为数字的ascii码是连续的所以'9'-'0'=57-48=9;
个人认为可以当作一个小技巧来记忆和使用
附上ASCII表
这篇关于PAT乙级刷题/1002 写出这个数/C++实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-07fastcgi 是什么-icode9专业技术文章分享
- 2024-10-07fastcgi 的详细使用教程介绍-icode9专业技术文章分享
- 2024-10-07git如何更新单个文件到本地-icode9专业技术文章分享
- 2024-10-07如何使用ASM(Abstract Syntax Tree Manipulation)技术来修改第三方AAR依赖中的函数-icode9专业技术文章分享
- 2024-10-07Activity 跳转时间耗时很长怎么优化解决-icode9专业技术文章分享
- 2024-10-07Androud Toast 有哪些常用的第三方组件-icode9专业技术文章分享
- 2024-10-07在viewmodel中怎么使用 mmkv?-icode9专业技术文章分享
- 2024-10-07MMKV.defaultMMKV() 是单例模式吗?-icode9专业技术文章分享
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享