(C语言实现)IDE:dev c++
#include <iostream>
#include <string>
using namespace std;
int Set_num(int num,int a[]){
int N=0; //用于统计输入的数字共有几位数
int temp = 1; //用于控制while循环
int subnum = num;
int i; //用于控制for循环
while(temp != 0){ //统计输入数字的位数
N++;
temp = subnum/10;
subnum /= 10;
}
subnum = num;
for(i=0;i<N;i++){ //将数字存储在数组中
a[i]=subnum%10;
subnum /= 10;
}
return N; //返回统计好的数字位数
}
void Change_num(int a[],string c[],int N){//将数组中的数字转换成拼音
int i;
for(i=0;i<N;i++){
if(a[i]==0)c[i]="ling";
if(a[i]==1)c[i]="yi";
if(a[i]==2)c[i]="er";
if(a[i]==3)c[i]="san";
if(a[i]==4)c[i]="si";
if(a[i]==5)c[i]="wu";
if(a[i]==6)c[i]="liu";
if(a[i]==7)c[i]="qi";
if(a[i]==8)c[i]="ba";
if(a[i]==9)c[i]="jiu";
// cout<<a[i]<<" "<<c[i]<<endl;
}
}
void Read_num(int a[],string b[],string c[],int N){
int i;
for(i=N-1;i>=0;i--)
{
if(i==9)
{
if( a[i]==1 ) cout<<b[i]<<" "; //十
if( a[i]!=1 ) cout<<c[i]<<" "<<b[i]<<" "; //几十
}
if(i==8)
{
if( a[i]==0 )cout<<b[i]<<" "; //亿
if( a[i]!=0 )cout<<c[i]<<" "<<b[i]<<" "; //几亿
}
if(i==7)
{
if(a[i+1]!=0 && a[i]==0 )cout<<c[i]<<" ";
if( a[i]!=0 )cout<<c[i]<<" "<<b[i]<<" "; //几千
}
if(i==6)
{
if(a[i+1]!=0 && a[i]==0 )cout<<c[i]<<" ";
if( a[i]!=0 )cout<<c[i]<<" "<<b[i]<<" "; //几百
}
if(i==5)
{
if(a[i+1]!=0 && a[i]==0 )cout<<c[i]<<" ";
if( a[i]==1 ) cout<<b[i]<<" ";
if( a[i]!=0&&a[i]!=1 )cout<<c[i]<<" "<<b[i]<<" "; //几十
}
if(i==4)
{
if(a[i+1]!=0 && a[i]==0 )cout<<b[i]<<" ";
if( a[i]!=0 )cout<<c[i]<<" "<<b[i]<<" "; //几万
}
if(i==3)
{
if(a[i+1]!=0 && a[i]==0&&a[i-3]!= 0)cout<<c[i]<<" ";
if( a[i]!=0 )cout<<c[i]<<" "<<b[i]<<" ";
}
if(i==2)
{
if(a[i+1]!=0 && a[i]==0 && a[i-1]!=0&& a[i-2]!=0)cout<<c[i]<<" ";
if( a[i]==1 ) cout<<b[i]<<" ";
if( a[i]!=0&&a[i]!=1 )cout<<c[i]<<" "<<b[i]<<" ";
}
if(i==1)
{
if(a[i+1]!=0 && a[i]==0 && a[i-1]!=0)cout<<c[i]<<" ";
if( a[i]!=0 )cout<<c[i]<<" "<<b[i]<<" ";
}
if(i == 0 && a[i] != 0) //个位是0则不输出,不是零则输出原数
{
cout<<c[i]<<" ";
}
}
}
int main(){
int a[10];
string b[11];
string c[10];
b[1]="shi";b[2]="bai";b[3]="qian";b[4]="wan";
b[5]="shi";b[6]="bai";b[7]="qian";b[8]="yi";
b[9]="shi";
int num=0; //用于存放输入的数字
int N=0; //用于存放输入数字的位数
cin>>num; //用于将数字变成拼音
N=Set_num(num,a); //将输入的数据分位放入数组中
Change_num(a,c,N);//将输入数组中的数据仅仅变成拼音
Read_num(a,b,c,N);//将变成拼音的数读出来
return 0;
}
如果这段代码对您有帮助,希望您可以给猿猿一个赞,谢谢您嘞,code不易,且看且珍惜。