别人问我才去做的,我大一时候的校赛题目 一直没去敲,现在做起来好简单。
输入一个一到十亿的数字,输出中文读法。
105000这种读作十万五千...
然后我的思路是亿以上的最多两位(范围10亿)直接读,然后万到千万和一到千的区别只是加了一个万,so这两个可以共用一个函数,只需要判断是否有万就好了。
特殊情况是0和十几万or十几这些。特判一下就好了。
#include<bits/stdc++.h>
using namespace std;
string zw[20]= {"","一","二","三","四","五","六","七","八","九","十"};
string dw[10]= {"千","百","十",};
void pd(int x,int f)
{
if(x==0) return ;
if(x>=10&&x<20&&f==0)
{
cout<<"十"<<zw[x%10];
return ;
}
int c,base=1000,i=0;
while(x)
{
c=x/base;
x=x%base;
base/=10;
if(c!=0)
{
if(f==2) printf("零");
cout<<zw[c];
if(i<3) cout<<dw[i];
f=1;
}
else
{
if(f==1) f=2;
}
i++;
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
{
printf("零\n");
continue;
}
int y,w,g;
int f=0;
y=n/100000000;
w=(n%100000000)/10000;
g=n%10000;
if(y!=0)
{
f=1;
cout<<zw[y]<<"亿";
}
pd(w,f);
if(w)
{
f=1;
printf("万");
}
pd(g,f);
printf("\n");
}
return 0;
}