不多于5位的正整数的处理

本文介绍了一种处理不多于五位正整数的方法,包括确定位数、正序输出各数字及逆序输出。使用C++编程实现,通过循环与数学函数完成任务,适合初学者学习。

不多于5位的正整数的处理

描述

一个不多于5位的正整数a,要求:1.求出它是几位数;2.分别打出每一位数字;3.按逆序打出各位数字,例如原数为321,应输出123。

输入

一行,不多于5位的正整数

输出

三行
第一行,一个整数,表示整数a的位数
第二行,正序输出整数a的每一位,每位间一个空格
第三行,逆序输出整数a,如果a是321,则输出123,如果a是100,则输出1

代码

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int a,k,sum,m,x,y,n;
	cin >> a;
	k = 0; sum = 0; m = a;
	for(int i = 1;a != 0; i++)
	{
		a = a / 10;
		k++;
	}
	cout << k << endl;
	int t = m;
	for(int b = k - 1; b >= 0; b--)
	{
		n = t / (pow(10, b));
		cout << n << " ";
		t %= int(pow(10, b)); 
	}
	cout << endl;
	for(int i = k - 1; i >= 0; i--)
	{
		y = m % 10;
		x = y * pow(10,i);
		m = m / 10;
		sum = sum + x;
	}
	cout << sum << endl;
	return 0;
}

思路

题目要求输出三行,这样我们可以用三个循环分别完成三行的输出,由于前两个循环都会改变输入数a的值,所以我们需要定义另一个变量m来储存a的值,第一行,我们需要定义一个计数器,循环的条件是a != 0;每做一次循环,都进行一遍a = a / 10,同时k++,这样循环结束输出k就是a的位数;第二行,要求正序输出数的每一位,这里我们用到了pow(),这在cmath当中,也用到了第一步当中的k,我们可以通过 n = t / (pow(10, b))操作得到第一位,接着通过t %= int(pow(10, b))来把输入数据的第一位去掉,要注意pow返回的是double值所以我们要强制类型转换,这样通过循环就完成了正序输出数的每一位;第三行,对输入的数作取余操作,然后乘以10的 i 次方,int i = k - 1; i >= 0; i - -;最后把得到的各个数加起来就得到了逆序输出的整数。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值