PAT程序设计考题——甲级1005 数字按位累加(非负数字按位累加和转化成对应英文单词)
2016-01-08 18:05
501 查看
试题链接如下:点击打开链接
试题要求翻译如下:
给定一个非负整数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;
}
试题要求翻译如下:
给定一个非负整数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;
}
相关文章推荐
- PAT程序设计练习——甲级1001(标准格式化数字)
- PAT程序设计练习——甲级1002(两个多项式的解析与合并)
- PAT程序设计练习——甲级1003(任意两个城市最短距离、Floyd最短路径算法)
- PAT程序设计考题——甲级1004 遍历树节点(计算树每层的叶子节点数目)
- PAT程序能力考题——甲级1010(比较任意进制转换的两个数字,是否相等)
- PAT程序设计考题——甲级1009(计算两个多项式相乘的积)
- PAT程序设计考题——甲级1008(Elevator电梯时间计算问题)
- PAT程序设计考题——甲级1007 (最大连续子序列和)
- PAT程序设计考题——甲级1006 签到问题(求所有签到人的最早时间和最晚时间)
- 最近的一点感想
- 1.4.4 Cookies
- CSSOM视图模式(CSSOM View Module)
- Perl 微信模块--Weixin::Client
- UDP打洞原理
- ANN 学习
- 高性能封装检测浏览器支持css3属性函数
- iOS数据库的队列与事务
- 一些计算机词汇的简单解说
- Linux if 语法
- linux oracle jdbc遇到的问题记录