多重循环~数字反转
题目描述:
输入
输入共 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~不可以得到一位低位就输出一位