写出这个数

描述:

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

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

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

分析:通过对输入数字进行接收存入一个字符数组中,随后将其转换为十进制数并求和,由推算可知该和不超过三位数,因而对该数进行拆分,求出个位、十位和百位上的数,并通过switch语句控制输出的格式。

代码如下:

#include<iostream>
#include <cstring>
using namespace std;
void change_tostring(int);//函数的声明  
int main()
{
	
	char d[100];
        int i,num,t;
	num=0;//num为送输入的数字的各个位数之和  
	t=0;
	gets(d);//用以读取整行数字  
	for(i=0;i<strlen(d);i++)
	num=num+d[i]-48;//将输入的字符串型的数字变成十进制数字  
	int a=num%10;//求个位 
	int b=(num/10)%10;//求十位 
	int c=num/100;//求百位  
	if(c!=0)//确保百位数不为0
	{
		change_tostring(c);
		cout<<" ";	
	}
	change_tostring(b);
	cout<<" ";
	change_tostring(a);
	
}
void change_tostring(int n)//函数的定义  
	{
		switch (n) {
	    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;
	    default:
	        break;
	    }
	}




            
阅读更多
个人分类: 算法
上一篇蛇形填数
下一篇Node.js中require、exports、module模块的区别
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭