CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011 普及组] 数字反转
题目描述
给定一个整数 N N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
一个整数 N N N。
输出格式
一个整数,表示反转后的新数。
样例 #1
样例输入 #1
123
样例输出 #1
321
样例 #2
样例输入 #2
-380
样例输出 #2
-83
提示
【数据范围】
$-1,000,000,000\leq N\leq 1,000,000,000 $。
noip2011 普及组第一题
AC代码
#include<bits/stdc++.h>
using namespace std;
/*思路:
分三种情况考虑:
n为0,直接输出
n为负数,先输出负号,再把负数转化为正数
n为正数,实现数字反转(特别要注意前导0不输出)
*/
int n;
int main(){
cin>>n;
//考虑n是0的情况
if(n==0){
cout<<0;//输出0
return 0;//结束程序
}
//考虑n是负数的情况
if(n<0){
cout<<"-";//输出负号
n=-n;//将n转为正数
}
//数字反转
while(n%10==0) n/=10;//去掉原数末尾的0
while(n){
cout<<n%10;
n/=10;
}
return 0;
}
标签:10,新数,洛谷,cout,NOIP2011,输出,反转,样例,000 From: https://blog.csdn.net/weixin_66461496/article/details/143818006文末彩蛋: