赞
踩
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(如:输入-380,输出-83)。
输入共1行,一个整数N。
输出共1行,一个整数,表示反转后的新数。
123
321
-1,000,000,000<=N<=1,000,000,000。
NOIP2011 普及组 reverse
上ac代码及思路。
- #include<stdio.h>
- #include<string.h>
- 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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。