主力


私信TA

用户名:1278765333

访问量:527

签 名:

等  级
排  名 52981
经  验 231
参赛次数 2
文章发表 2
年  龄 0
在职情况 学生
学  校 嘉应学院
专  业

  自我简介:

解题思路:
帮别人写的有注释,顺便发个题解,看代码应该就理解了。
参考代码:

#include<iostream>
#include<string>
using namespace std;
int a[20];
string s1[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
string s2[4]={"","shi","bai","qian"};
string s3[3]={"","wan","yi"};
int main(){
	int n,ret=0,f1=0,f2=0;  // f1判断 0 是否出现 
	cin>>n;                 // f2判断是否出现数字(4位一组,个、十、白、千) 
	while(n){
		a[ret++]=n%10;     // 用数组倒序存储每一位数字 
		n/=10;
	} 
	for(int i=ret-1;i>=0;i--){  //相当于正序读数字 
		if(a[i]==0){  //判断0是否出现 
			f1=f2=1; 
		}
		else{  //不是0的情况   
			if(f1==1) //如果前面出现了0,输出一个ling 
				cout<<"ling ";
			if(a[i]==1&&i%4==1&&f2==0) //判断是否输出十,否则是输出一十,如果当前十位为1并且前面没有出现数字,也就是f2==0输出十,否则输出一十。 
				cout<<s2[i%4]<<" ";
			else if(i%4!=0)   //正常输出数字读音和当前位的读音,还需判断当前是否是4位中的个位 
				cout<<s1[a[i]]<<" "<<s2[i%4]<<" ";
			else   // 是个位就输出数字读音就行。 
				cout<<s1[a[i]]<<" ";
			f1=0;  // 0当成没出现 
			f2=1;  // 当前出现了数字 
		}
		if(i%4==0){  // 这时是4位的最后一位,个位  
			if(i!=0)  //不是最后一位的话就输出亿,或者万
				cout<<s3[i/4]<<" ";
			f1=f2=0; //重新开始标记 ,4位循环 
		}
	}
}
 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区