写出这个数

原创 2016年05月30日 22:36:03

描述:

读入一个自然数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;
	    }
	}




                

PAT1002.写出这个数

本题主要涉及到基本的字符串、字符串数组操作。 n%10取低位(余数),n/10取高(去除最低位)。#include #include int main(){ char c[101]; ch...
  • sinat_21595363
  • sinat_21595363
  • 2016年02月05日 11:54
  • 685

1002. 写出这个数 (20) JAVA

1002. 写出这个数 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN...
  • bin8632
  • bin8632
  • 2015年12月08日 11:19
  • 1200

PAT (Basic Level) Practise (中文)1002. 写出这个数 (20)

1002. 写出这个数 (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 8000 B ...
  • wyxdexyq
  • wyxdexyq
  • 2014年04月09日 10:05
  • 5482

【PAT】1002. 写出这个数 (20) C++语言

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。 输出格式:在一行内输出...
  • weifenglin1997
  • weifenglin1997
  • 2017年12月03日 16:46
  • 49

PAT甲级C语言.1002. 写出这个数

#include #include int main() { void pinyin(int); char a[1000],num_str[10]={0},*temp; int i,j,sum...
  • Yoiker
  • Yoiker
  • 2017年02月21日 14:49
  • 272

PAT-写出这个数

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。 输出格式:在一行内输出n的各位数字之...
  • u011916318
  • u011916318
  • 2014年09月05日 09:34
  • 674

[PAT]1002.写出这个数 (20)

这里需要主要的地方有 1.未用BigInteger时的代码 import java.util.Arrays; import java.util.HashMap; import java.util....
  • zhouhuakang
  • zhouhuakang
  • 2016年02月11日 20:16
  • 1380

PAT乙级1002. 写出这个数 C++

本人没有什么特殊的简单的解题技巧,为了安全,此次用了C++的字符串,从n 小于10的100次方可以看出n肯定不是long之类的,应该是字符串。主要就是对int和string之间的转换,以及输出了。我...
  • hengbao4
  • hengbao4
  • 2016年07月21日 20:04
  • 2469

PAT-B 1002. 写出这个数 (python)

1. dictionary初始化  dic = {} 2. list初始化 ans = {} 3. list遍历时两种方法 1)
  • u014674776
  • u014674776
  • 2014年05月15日 13:15
  • 1081

1002. 写出这个数 (20) c++

PAT乙级题目:读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行内输出n的各位...
  • camer121
  • camer121
  • 2017年12月03日 21:35
  • 44
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:写出这个数
举报原因:
原因补充:

(最多只允许输入30个字)