众所周知,有两种形式的数字翻转。一种是忽略0的。
如,123的翻转数字是321,而700的翻转数字是7。我们称之为第一种数字翻转。它的函数如下。
int overturn(int num){
int ot_num = 0; //翻转后的数字
int digit = 0; //每一次取出来的最末位的数字
while(num != 0){
if(num / 10 >=1){ //当输入的数没有被划到只剩一位时
digit = num % 10; //取出末位数字
num /= 10; //“划掉”最后一位
ot_num = ot_num * 10 + digit; //翻转
}
else{ //只剩一位时
ot_num = ot_num * 10 + num;
break;
}
}
return ot_num;
}
调用实例如下:
#includeint overturn(int num){ int ot_num = 0; //翻转后的数字 int digit = 0; //每一次取出来的最末位的数字 while(num != 0){ if(num / 10 >=1){ //当输入的数没有被划到只剩一位时 digit = num % 10; //取出末位数字 num /= 10; //“划掉”最后一位 ot_num = ot_num * 10 + digit; //翻转 } else{ //只剩一位时 ot_num = ot_num * 10 + num; break; } } return ot_num; } int main(){ int num = 0; while(scanf("%d",&num) != EOF){ printf("%dn",overturn(num)); } return 0; }
上面的注释写的很清楚,不多解释了。
那么第二种数字翻转是这样的。123的翻转数是321,而700的翻转数就是007 。它会如实地输出每一位的数字,不会进行任何省略。那么它的函数如下。
void overturn_honest(){
int num = 0;
int digit = 0;
scanf("%d",&num);
while(1){
if(num / 10 >= 1){
digit = num % 10;
num /= 10;
printf("%d",digit);
}
else{
printf("%dn",num);
break;
}
}
}
可以看到,我这里用了一个void。因为除了char 没有一个数据类型可以保存类似007这样的数字,而就算保存了也没什么意义。所以我宁愿这个函数无返回值。
对它进行一个调用:
#includevoid overturn_honest(){ int num = 0; int digit = 0; scanf("%d",&num); while(1){ if(num / 10 >= 1){ digit = num % 10; num /= 10; printf("%d",digit); } else{ printf("%dn",num); break; } } } int main(){ while(1) overturn_honest(); }
但是有个问题,你不要没事找事去输入007这种数字去让他翻转,这纯属恶心行为。
欢迎使用这些函数!



