1002 写出这个数 (20 分)
下面展示我的代码 1002 写出这个数 (20 分)
。
记录一下,快速成长吧,增强自己的代码能力,加油
怎说呢,自己对于C++还是不太熟练,还有自己的算法思想比较差,没有想到比较好
的数字对应的方法,我看网上别人说的都是用二维数组来对应,自己在存储sum数组的
时候,想不出别的更好的办法,只能去用动态数组了,还去特意查了一下动态数组的用
法,还有我发现用注释的那一段代码来求各位数字之和的时候,当数字过大的时候,
最后的结果总是显示46,后来改用字符串计算就没有这种错误了,我想我一会还要研究一下
这到底是怎么回事,可能是前几题比较简单,自己的思路还是比较清晰吧,和网上
那些大佬对比了一下,发现自己的代码真的是太冗余了,虽然说,可能对于我自己来说
我认为是简单易懂,但是和大佬们的简洁性差距真的很大
#include <iostream>
#include<sstream>
using namespace std;
int main() {
/*int n;
cin >> n;
int sum = 0;
while (n != 0) {
sum += n % 10;
n /= 10;
}*/
string s1;
cin >> s1;
int sum = 0;
for (int i=0;i<s1.length();i++)
{
sum += s1[i] - '0';
}
stringstream ss;
ss << sum;
string s = ss.str();
int k = s.length();
int *a = new int[k];
for (int i = 0; i < k; i++)
{
a[i] = sum % 10;
sum /= 10;
}
for (int i = k - 1; i >= 0; i--)
{
switch (a[i])
{
case 1:cout << "yi"; break;
case 2:cout << "er"; break;
case 3:cout << "san"; break;
case 4:cout << "si"; break;
case 5:cout << "wu"; break;
case 6:cout << "liu"; break;
case 7:cout << "qi"; break;
case 8:cout << "ba"; break;
case 9:cout << "jiu"; break;
case 0:cout << "ling"; break;
default:
break;
}
if (i != 0)
cout << " ";
}
}