PAT程序设计考题——甲级1005 数字按位累加(非负数字按位累加和转化成对应英文单词)

试题链接如下:点击打开链接

试题要求翻译如下:
给定一个非负整数N,按位累加之后把和按位提取并转化成英文单词
例子:
input:12345
output: one five


代码设计如下:

#include <stdio.h>
#include <stdlib.h>
#include <map>
#include <string>

using namespace std;

map<int,string>		digitMap;

void InitDigitMap()
{
	digitMap.insert(make_pair(0,"zero"));
	digitMap.insert(make_pair(1,"one"));
	digitMap.insert(make_pair(2,"two"));
	digitMap.insert(make_pair(3,"three"));
	digitMap.insert(make_pair(4,"four"));
	digitMap.insert(make_pair(5,"five"));
	digitMap.insert(make_pair(6,"six"));
	digitMap.insert(make_pair(7,"seven"));
	digitMap.insert(make_pair(8,"eight"));
	digitMap.insert(make_pair(9,"nine"));
}
int main()
{
	int size = 0;
	int sum = 0;
	int three = -1;
	int two = -1;
	int one = -1;
	char buffer[100] = {0};
	
	InitDigitMap();
	scanf("%s",&buffer);

	size = strlen(buffer);
	for (int i = 0; i < size; i++ )
	{
		if ( buffer[i] < 48 || buffer[i] > 57 )
		{
			printf("not digit!\n");
			sum = 0;
			break;
		}
		sum += ( buffer[i] - '0');
	}
	printf("the sum is %d\n",sum);

	if ( sum >= 100 )
	{
		three = sum / 100;
		sum = sum % 100;
	}
	if ( sum >= 10 )
	{
		two = sum / 10;
		sum = sum % 10;
	}
	else
	{
		if ( three > -1 )
			two = 0;
	}
	if ( sum >= 0 )
	{
		one = sum;
	}
	printf("%s %s %s\n", digitMap[three].c_str(), digitMap[two].c_str(), digitMap[one].c_str() );
	return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值