PAT-1002 写出这个数

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100
​​ 。

输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:
1234567890987654321123456789
输出样例:
yi san wu
  1. 题意
    将输入的一串数字求和,并按照汉语拼音输出
  2. 思路
    利用字符串输入,将字符串转换为数字并求和
    将和存储到数组中,按序进行数字与拼音的转换并输出
    注意空格处理
  3. 代码
#include<iostream>
#include<string.h>
using namespace std;
int main(){
    
    
	//将字符串各位数字求和 
	string s;
	int i,n;
	int sum=0;
	cin>>s;
	n=s.length();
	for(i=0;i<n;i++){
    
    
		sum+=s[i]-'0';
	}
	//将sum拆分存入数组,逆序 
	int len=0;
	int k=sum;
	while(sum){
    
    
		if(sum/10!=0)
			len++;
		sum/=10;
	} 
	len++;
	int str[len]={
    
    0};
	for(i=0;i<len;i++){
    
    
		str[i]=k%10;
		k/=10;
	}
	//数字字符转换 
	for(i=len-1;i>=0;i--){
    
    
		switch(str[i]+'0'){
    
       //注意加号  数字变为字符+'0',反之-'0' 
			case '0':cout<<"ling";break;
			case '1':cout<<"yi";break;
			case '2':cout<<"er";break;
		    case '3':cout<<"san";break;
	     	case '4':cout<<"si";break;
	    	case '5':cout<<"wu";break;
	    	case '6':cout<<"liu";break;
	    	case '7':cout<<"qi";break;
	    	case '8':cout<<"ba";break;
	    	case '9':cout<<"jiu";break;
		}
		if(i!=0)    //注意此处空格的处理 
			cout<<" ";
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44549439/article/details/112711550