多重循环~数字反转

题目描述:

输入

输入共 1 行,一个整数N。

 

输出

输出共 1 行,一个整数,表示反转后的新数。

注:反转后首位不能为0
 1 #include<stdio.h>
 2 int main(){
 3     int N=0;                //要反转的数字
 4     int tem=0;                //暂存取出来的末尾的数字
 5     int M=0;                //反转结果
 6     int p;                    //用来存符号
 7     scanf("%d",&N);
 8     if(N<0){
 9         N=-N;
10         p=-1;
11     }
12     else{
13         p=1;
14     }
15     while(N!=0){            
16         if(N/10>=1){
17             tem=N%10;        //每次取出的末尾的数字 
18             N/=10;            //取完后原数字去掉低位
19             //M=tem*10;
20             //printf("%d",M);
21             M=M*10+tem;
22         }
23         else{                //当数字被取到只剩一个位
24             M=M*10+N;        //?
25             break;    
26         }        
27     }
28     printf("%d",M*p);
29     
30 }

solution:

 1 为避免负数计算过程中出现的:负负得正~将符号与数字分看,用p存储符号后将所有数都当作正数进入循环

  2 为避免反转后首位为0~不可以得到一位低位就输出一位

posted on 2022-10-24 17:02  罗小罗佳油  阅读(42)  评论(0编辑  收藏  举报