学习笔记PAT-B1002

PAT-B-1002 写出这个数

题目详情
这道题目的棘手之处在于输入n的值过大,10100远超int或long long所能表示的范围,于是此处应用字符串数组表示输入的n,由此涉及到了使用其ASCII运算的知识,用到哪学到哪吧,大写英文字母排在小写字母之前,且相邻字母大小相邻,数字‘0’-‘9’对应的ASCII码也是一样。
该题另一个技巧在于二维数组的使用,这里输出样例要求输出汉语拼音,使用二维数组表示为佳。这里贴出一个答案,是在https://blog.csdn.net/alike_meng/article/details/86741509?depth_1- 这个帖子里看到的,第一次写帖子,如果有不妥当的地方请指出。

#include <iostream>
using namespace std;
int main()
{
int sum = 0;
char ch, s[4];                       //ch作为临时变量保存输入的每一个字符,s保存sum的每一个数字 ,因为题目小于1000                       
char b[10][5] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
while ((ch = getchar()) != '\n')    //如果一直输入字符,不按回车的话 
	sum += (ch - '0');
sprintf_s(s, "%d", sum);              // sprintf(char *buffer, const char *format,[ argument])将任意类型数据按某种格式转换成字符串 
for (int i = 0; s[i] != 0; i++) {
	if (i > 0) //消除第一个空格 
		printf(" ");
	printf("%s", b[s[i] - '0']);
}
return 0;//上文sprintf中s为s[4]数组名,将sum的值存放在s中 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值