最近考了c++的一道倒序输出题,尴尬了,竟然想了好久,发个博客以显示自己菜的抠脚。
题目是输出整数“12345”的倒序数:
题目的过程应该是这样:
12345%10 = 5
12345/10 =1234
1234%10 = 4
1234/10 = 123
。。
#include<iostream> using namespace std; int main() { int n=12345,d; while (n!=0) { d=n%10; cout<<d; n/=10; } return 0; }
今天又在洛谷上面发现了一道相似题:
题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。
如:输入-520,输出 -25;
输入123,输出 321;
数据范围
-1,000,000,000≤N≤1,000,000,000
−1,000,000,000≤N≤1,000,000,000
此题思路与上面相似,只是需要使用LL来存n和d;输入负数时,转化为正数;在while之中不能cout << d ,因为如果是4000,则会输出004,所以用和来存结果;
#include<iostream> #include<cmath> using namespace std; int main() { long long int n,d; cin>>n; if(n<0) { cout << "-"; n = -n; } if(n%10==0) n=n/10; int sum=0; while(n!=0) { d=n%10; sum=10*sum+d; n/=10; } cout << sum; return 0; }