首先,思路很重要,这题可以10行内搞定,也可以打30行,效率肯定是不同的
放题先:
7-25 反转数 (10 分)
输入一个有符号整数,输出该整数的反转值。
输入格式:
有符号整数
输出格式:
有符号整数的反转数
输入样例:
在这里给出一组输入。例如:
100
-123
输出样例:
在这里给出相应的输出。例如:
1
-321
。
。
。
简单方法:
PS:但要注意输入为0的情况
先把输入数最后的0都去掉,然后判断符号,再逆序输出
(我感觉这种方法还可以更简单,行数更少,但因为我是从下面那个方法改过来的,所以可能有些瑕疵,凑合着看吧)
#include<stdio.h>
int main()
{
int in,c=0,a=0;
scanf("%d",&in);
if(in<0)
{
in=-in;
c++;
}
if(c!=0)
printf("-");
for(;in%10==0;)
{
if(in==0)
{
printf("%d",in);
break;
}
in=in/10;
}
for(;in!=0;)
{
a=in%10;
in=in/10;
printf("%d",a);
}
return 0;
}
复杂方法:
PS:也要注意输入为0的情况
我是走一步改一步,所以得出来的代码比较繁琐,想到哪改到哪,我的思维模式就是这样,你们要是说这个代码麻烦呀,复杂呀,那我没脾气的好吧
。
。
我当时打的时候是这么想的:先考虑正负的符号问题,然后挨个位反转,这时发现了0的问题,我又加了个输出printf和变量b,一个printf负责输出反转后第一个非0的数(把反转后首位前的0全都过滤掉),然后使变量++,然后if语句会使之后循环反转的数都用另一个printf来输出(非首位所以0也输出)。
#include<stdio.h>
int main()
{
int in,c=0,a=0,b=0;
scanf("%d",&in);
if(in<0)
{
in=-in;
c++;
}
if(c!=0)
printf("-");
for(;;)
{
if(in==0)
b++;
a=in%10;
in=in/10;
if(a>0&&b==0)
{
b++;
printf("%d",a);
if(in==0)
break;
continue;
}
if(a>=0&&b!=0)
printf("%d",a);
if(in==0)
break;
}
return 0;
}
。
。
。