[C++]求取反序列数

声明:该题来自某211陈年老题,新手写文,大佬多多指教

题目描述

求任意正整数m(大于9)的反序数。正整数m从in.txt循环读入,直到全部读完,并将结果输出到out.txt文件中。

如:in.txt

12

231

7880

则:out.txt

21

132

887

其核心思想就是把数拆成一位一位倒过来;例如123看成1*100+2*10+3*1,其反序列数也就是3*100+2*10+1;

其核心思路的部分如下:

int t,s=0,m;
    inf>>m//文件内读取m的值,m是一个整数 
	while(m>0)//求出m的所有数字并组成反序数s 
	{
	  t=m%10;//t最终将是反序列数
	  s=s*10+t;
	  m=m/10; 
	}
/*假设m最初是123;则在第一次循环中t=3,取得m的个位;s=3;
接着m=12(注意整型数据除以整型数据,答案也为整型数据);
然后m>0成立,第二次循环开始:t=2,取得123的十位;
s=3*10+2;m=1;又因为m>0第三次循环开始......以此类推*/

将核心思路处理成一个函数,并加入文件流部分;得到整个代码

#include<fstream>
using namespace std;
int f1(int m)
{
	int t,s=0; 
	while(m>0)//求出m的所有数字并组成反序数s 
	{
	  t=m%10;
	  s=s*10+t;
	  m=m/10; 
	}
	return s;
	
}
int main()
{
	ifstream infile("in.txt");//绑定in.txt文件
	ofstream outfile("out.txt");//绑定out.txt文件	
	int m,t;
	while(infile>>m) //判读文件是否到尾部
	{
	  t=f1(m);
	  outfile<<t<<'\n';	
	}	
	infile.close();
	outfile.close();
	return 0;	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值