声明:该题来自某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;
}