PAT 1002 写出这个数

题目

请添加图片描述
题解(仅个人):
输入的正整数n要分开成单个数字处理,处理好的数字再用求和方式再形成一个整体sum。接下来又是对正整数sum的处理,也是分开成各个数字,再将分开的各个数字以字符串的形式输出。所以可以看作是将两个整数(n,sum)的类型转换。

思路:
1,定义一个字符串变量(string s)用于存储各位数字(将正整数n用字符串形似表示),方便后面计算各位数字之和。
2,定义一个整形变量int result[3]用于记录数字之和(方便进行变量的转换)。
3,定义py变量用于输出样例,实现从num数组到sum数组再到py。

  主要语句(这里我用了三个循环语句用于实现数组的转换):

4,运用循环语句计算各位数字的和,储存在sum数组中。
5,再将sum数组各个数字分别储存在result数组中。
6,并用定义好的py去表示数组结果,输出结果。

注意:
1,在最后输出时注意最后一个数字后没有空格,所以要与其他数字分开处理。
2,数组的转化过程较多,容易产生错误。

#include<cstdio>
#include<string.h>
#include<iostream>
using namespace std; 
int main()
{
   string s;     //用于储存各位数字
	int result[3],sum=0;    //用于储存各位数字的和,再将和分开储存
	char py[10][5]={"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};    //定义输出样例,用于实现转型
	cin>>s;
	for(int i=0;i<s.length();i++)   //循环,计算各个数字之和
	{
		sum+=(s[i] - '0');
	}
  int j=0;
	while(sum)     //将和分开储存(以单个数字储存)
	{
		result[j++]=sum%10;
		sum/=10;
	}
	for(int i=j-1;i>0;i--)     //注意循环停止位置,实现数字到字符串的转换
		printf("%s ",py[result[i]]);    //到十位数结束
	printf("%s",py[result[0]]);     //个位数单独输出,防止出现答案错误
	return 0;
}

心得与不足:
1,这里我尝试将循环过程再简化,但容易导致答案错误,类似于结果输出样例颠倒,无法输出结果之类,这里将循环分开处理,我觉得更容易理解。
2,我在这实现数组类型的转换方法过于原始于繁琐(应该有更合理与简便的方法)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值