字符串问题
/*
1002
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10?100??。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
*/
#include <bits/stdc++.h>
using namespace std;
int Add(int a,char c){
return a+c-'0';
}
int main() {
ios::sync_with_stdio(false);//取消cin,cout与scanf之间的缓冲,挺高效率
cin.tie(0);
string s;
cin >> s;
//int sum = accumulate(s.begin(), s.end(), 0, [](int a, char c) { return a + c - '0'; });
int sum = accumulate(s.begin(), s.end(), 0, Add);
s = to_string(sum);
array<string, 10> p{"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
for (int i = 0; i < s.size(); ++i) {
//cout<<p[s[i] - '0'];
cout << (i > 0 ? " " : "") << p[s[i] - '0'];//按照规定格式输出
}
return 0;
}
整理的问题:
1.devc++如何使用c++stl
图片.png
2.devc++如何调试代码
图片.png
图片.png
3.一些注意事项(技巧)
ios::sync_with_stdio(false);//取消cin,cout与scanf之间的缓冲,挺高效率
cin.tie(0);
3.1 很多C++的初学者可能会被这个问题困扰,经常出现程序无故超时,最终发现问题处在cin和cout上,(甚至有些老oier也会被这个问题困扰,每次只能打scanf和printf,然后一堆的占位符巨麻烦),这是因为C++中,cin和cout要与stdio同步,中间会有一个缓冲,所以导致cin,cout语句输入输出缓慢,这时就可以用这个语句,取消cin,cout与stdio的同步,说白了就是提速,效率基本与scanf和printf一致。然后就可放心的使用cin,cout了。(不过实际上使用了using namespace std;之后就可以直接打ios::sync_with_stdio(false);了)
int Add(int a,char c){
return a+c-'0';
}
3.2 字符串里的字符与整数相加
3.3 accumulate函数
相关参考:
https://bbs.csdn.net/topics/230052722
https://blog.csdn.net/Jeanphorn/article/details/45114233?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
图片.png