首先说明,这不是题解。
我的思路在代码里,自己看
以下是代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
string shu[1002]={"zero","one","two","three","four","five","six","seven","eight","nine",
"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen",
"nineteen","twenty","twenty one","twenty two","twenty three","twenty four","twenty five",
"twenty six","twenty seven","twenty eight","twenty nine","thirty","thirty one","thirty two",
"thirty three","thirty four","thirty five","thirty six","thirty seven","thirty eight",
"thirty nine","forty","forty one","forty two","forty three","forty four","forty five",
"forty six","forty seven","forty eight","forty nine","fifty","fifty one","fifty two",
"fifty three","fifty four","fifty five","fifty six","fifty seven","fifty eight",
"fifty nine","sixty","sixty one","sixty two","sixty three","sixty four","sixty five",
"sixty six","sixty seven","sixty eight","sixty nine","seventy","seventy one","seventy two",
"seventy three","seventy four","seventy five","seventy six","seventy seven","seventy eight",
"seventy nine","eighty","eighty one","eighty two","eighty three","eighty four",
"eighty five","eighty six","eighty seven","eighty eight","eighty nine","ninety",
"ninety one","ninety two","ninety three","ninety four","ninety five","ninety six",
"ninety seven","ninety eight","ninety nine","hundred"};//手废了
//打到一半懒得打了,直接复制了@TomTheCat大佬题解的,不算我抄吧?
shu[1000]="thousand";
cin>>n;
int i=1000,ling=0,first=1;//i为一个变量
if(n==0){
cout<<"zero";return 0;
}//特判,不然#2过不了
while(n!=0)
{
if(n/i==0)
{
if(!first)ling++;
i/=10;
}//统计有零的情况
else if(n/i!=0&&i>=100)
{
first=0;ling=0;
cout<<shu[n/i]<<" "<<shu[i]<<" ";//3,4位数直接读入
n%=i;i/=10;
}
else if(n/i!=0&&n!=0&&i<=100)
{
first=0;ling=0;
cout<<shu[n];return 0;
}//1,2位数就直接输出
if(ling&&n/i!=0)cout<<"and ";//有零
}
return 0;
}
这个代码ac了,求证明