给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(如:输入-380,输出-83)。
Input输入共1行,一个整数N。
Output输出共1行,一个整数,表示反转后的新数。
Sample Input123
Sample Output321
HINT-1,000,000,000<=N<=1,000,000,000。
NOIP2011 普及组 reverse
上ac代码及思路。
#include#include int main() { char a[20]={0}; int len,i; scanf("%s",a); //读入一串数字 len=strlen(a); if(a[0]=='0'&&len==1) //假设仅仅只有一个数字 0 { printf("0"); } if(a[0]=='-') //大前提:如果这串数字是负数 { printf("%c",a[0]); if(a[len-1]=='0') //如果这个数的个位是0 { while(a[len-2]=='0') //判断该数的十位/百位...是不是0,如果是,在反转过程中不输出 len--; for(i=len-2;i>0;i--)//反转输出 printf("%c",a[i]); printf("n"); } else // 如果这个这串数字个位不是0 { for(i=len-1;i>0;i--) printf("%c",a[i]); //倒序输出 printf("n"); } } else //大前提:如果这串数字是正数 { if(a[len-1]=='0') //如果这个数的个位是0 { while(a[len-2]=='0') //判断该数的十位/百位...是不是0,如果是,在反转过程中不输出 len--; for(i=len-2;i>=0;i--)//反转输出 printf("%c",a[i]); printf("n"); } else // 如果这个这串数字个位不是0 { for(i=len-1;i>=0;i--) printf("%c",a[i]); //倒序输出 printf("n"); } } return 0; }


![[ZCMU OJ] 1749: 数字反转(假如不使用题目中要求的c++使用c语言实现) [ZCMU OJ] 1749: 数字反转(假如不使用题目中要求的c++使用c语言实现)](http://www.mshxw.com/aiimages/31/691991.png)
