PAT-乙级(Basic Level)-1002-写出这个数

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

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

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

输入样例:
1234567890987654321123456789
输出样例:
yi san wu

由题可得n的大小超过了int、long long的范围,显然应采用字符串的方式读入,因此用指针n指向字符串开头,逐个往下读,计算sum。之后根据题目输出要求,输出sum的拼音。
C++代码如下:

#include<stdio.h>
#include<string>
using namespace std;

int main()
{
	//定义变量 
	char s[100];
	char *n = s;
	int sum = 0;
	int a[100]; 
	char num[][10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu", "shi"};
	
	//读取字符串s 
	scanf("%s", s);
	while(*n != '\0')
	{
		sum = sum + (*n - '0');
		n++;
	}
	
	//打印sum的值 
	int i = 0;
	while(sum > 10)
	{
		a[i] = sum % 10;
		sum = sum / 10;
		i++;
	}
	a[i] = sum;
	while(i >= 0)
	{
		if(i > 0)
		{
			printf("%s ", num[a[i]]);
		}
		else
		{
			printf("%s\n", num[a[i]]);
		}
		i--;
	}
	
}

posted on 2018-02-28 16:12  周公喊我去下棋  阅读(106)  评论(0)    收藏  举报

导航