6.3w+
社区成员
#include <iostream>
#include <string>
using namespace std;
string convert(char number);
int main()
{
string x;
int count = 0;
string output;
while(cin >> x)
{
count = x.length();
for(int i = 0;i < x.length();i++)
{
switch(count)
{
//十亿位
case 10:
if(x[i] != '0')
{
output += convert(x[i]);
output += "拾";
}
break;
//亿位
case 9:
if(x[i] != '0')
{
output += convert(x[i]);
output += "億";
}
else
{
output += "億";
}
break;
//千万位
case 8:
if(x[i] != '0')
{
output += convert(x[i]);
output += "仟";
}
else if(x[i] == '0' &&
(x[i + 1] != '0' || x[i + 2] != '0'
|| x[i + 3] != '0' || x[i + 4] != '0' || x[i + 5] != '0'
|| x[i + 6] != '0'))
{
output += "零";
}
break;
//百万位
case 7:
if(x[i] != '0')
{
output += convert(x[i]);
output += "佰";
}
else if(x[i] == '0' &&
(x[i + 1] != '0' || x[i + 2] != '0'
|| x[i + 3] != '0' || x[i + 4] != '0' || x[i + 5] != '0'))
{
output += "零";
}
break;
//十万位
case 6:
if(x[i] != '0')
{
output += convert(x[i]);
output += "拾";
}
else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0' ||
x[i + 3] != '0' || x[i + 4] != '0'))
{
output += "零";
}
break;
//万位
case 5:
if(x[i] != '0')
{
output += convert(x[i]);
output += "萬";
}
else
{
output += "萬";
}
break;
//千位
case 4:
if(x[i] != '0')
{
output += convert(x[i]);
output += "仟";
}
else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0'
|| x[i + 3] != '0'))
{
output += "零";
}
break;
//百位
case 3:
if(x[i] != '0')
{
output += convert(x[i]);
output += "佰";
}
else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0'))
{
output += "零";
}
break;
//十位
case 2:
if(x[i] != '0')
{
output += convert(x[i]);
output += "拾";
}
else if(x[i] == '0' && x[i + 1] != '0')
{
output += "零";
}
break;
//个位
case 1:
if(x[i] != '0')
{
output += convert(x[i]);
}
else if(x.length() == 1)
{
output += convert(x[i]);
}
break;
}
count--;
}
int j;
for(int k = 0;k < output.length();k++)
{
if((j = output.find("零零零")) != -1) output.erase(j,4);
if((j = output.find("零零")) != -1) output.erase(j,2);
if((j = output.find("億萬")) != -1) output.erase(j + 2,2);
if((j = output.find("零拾")) != -1) output.erase(j,2);
if((j = output.find("零萬")) != -1) output.erase(j,2);
if((j = output.find("零仟")) != -1) output.erase(j,2);
if((j = output.find("零佰")) != -1) output.erase(j,2);
if((j = output.find("零億")) != -1) output.erase(j,2);
}
cout << output << endl;
output = "";
}
return 0;
}
string convert(char number)
{
string str;
switch(number)
{
case '0':
str = "零";
break;
case '1':
str = "壹";
break;
case '2':
str = "貳";
break;
case '3':
str = "參";
break;
case '4':
str = "肆";
break;
case '5':
str = "伍";
break;
case '6':
str = "陸";
break;
case '7':
str = "柒";
break;
case '8':
str = "捌";
break;
case '9':
str = "玖";
break;
default:
cout << "ERROR!\n";
exit(1);
}
return str;
}
count = (int)x.length();
for(i = 0; i< x.length(); i++)
{
if(x[i] == '0') count--;
else break;
}
for(i;i < x.length();i++)
{
與正確輸出不相符(line:11)
您的答案為: 壹佰零貳萬參仟�零肆
正確答案為: 壹佰零貳萬參仟零肆
/*
4887989756445546
玖拾柒億伍仟陸佰肆拾肆萬伍仟伍佰肆拾陸
546546
伍拾肆萬陸仟伍佰肆拾陸
564546
伍拾陸萬肆仟伍佰肆拾陸
546
伍佰肆拾陸
5456489897879987987879897987
柒拾捌億柒仟玖佰捌拾玖萬柒仟玖佰捌拾柒
5646544564879987798
肆拾捌億柒仟玖佰玖拾捌萬柒仟柒佰玖拾捌
564456458798794
陸拾肆億伍仟捌佰柒拾玖萬捌仟柒佰玖拾肆
546548978794456546
捌拾柒億玖仟肆佰肆拾伍萬陸仟伍佰肆拾陸
989784564566458456654987879
陸拾陸億伍仟肆佰玖拾捌萬柒仟捌佰柒拾玖
4565648989789787
捌拾玖億捌仟玖佰柒拾捌萬玖仟柒佰捌拾柒
54465654978
肆拾肆億陸仟伍佰陸拾伍萬肆仟玖佰柒拾捌
897
捌佰玖拾柒
*/