WHCSRL 技术网

C语言-有关数字翻转的函数_index

众所周知,有两种形式的数字翻转。一种是忽略0的。

如,123的翻转数字是321,而700的翻转数字是7。我们称之为第一种数字翻转。它的函数如下。

  1. int overturn(int num){
  2. int ot_num = 0; //翻转后的数字
  3. int digit = 0; //每一次取出来的最末位的数字
  4. while(num != 0){
  5. if(num / 10 >=1){ //当输入的数没有被划到只剩一位时
  6. digit = num %% 10; //取出末位数字
  7. num /= 10; //“划掉”最后一位
  8. ot_num = ot_num * 10 + digit; //翻转
  9. }
  10. else{ //只剩一位时
  11. ot_num = ot_num * 10 + num;
  12. break;
  13. }
  14. }
  15. return ot_num;
  16. }

调用实例如下:

  1. #include<stdio.h>
  2. int overturn(int num){
  3. int ot_num = 0; //翻转后的数字
  4. int digit = 0; //每一次取出来的最末位的数字
  5. while(num != 0){
  6. if(num / 10 >=1){ //当输入的数没有被划到只剩一位时
  7. digit = num %% 10; //取出末位数字
  8. num /= 10; //“划掉”最后一位
  9. ot_num = ot_num * 10 + digit; //翻转
  10. }
  11. else{ //只剩一位时
  12. ot_num = ot_num * 10 + num;
  13. break;
  14. }
  15. }
  16. return ot_num;
  17. }
  18. int main(){
  19. int num = 0;
  20. while(scanf("%%d",&num) != EOF){
  21. printf("%%d ",overturn(num));
  22. }
  23. return 0;
  24. }

 上面的注释写的很清楚,不多解释了。

那么第二种数字翻转是这样的。123的翻转数是321,而700的翻转数就是007 。它会如实地输出每一位的数字,不会进行任何省略。那么它的函数如下。

  1. void overturn_honest(){
  2. int num = 0;
  3. int digit = 0;
  4. scanf("%%d",&num);
  5. while(1){
  6. if(num / 10 >= 1){
  7. digit = num %% 10;
  8. num /= 10;
  9. printf("%%d",digit);
  10. }
  11. else{
  12. printf("%%d ",num);
  13. break;
  14. }
  15. }
  16. }

可以看到,我这里用了一个void。因为除了char 没有一个数据类型可以保存类似007这样的数字,而就算保存了也没什么意义。所以我宁愿这个函数无返回值。

对它进行一个调用:

  1. #include<stdio.h>
  2. void overturn_honest(){
  3. int num = 0;
  4. int digit = 0;
  5. scanf("%%d",&num);
  6. while(1){
  7. if(num / 10 >= 1){
  8. digit = num %% 10;
  9. num /= 10;
  10. printf("%%d",digit);
  11. }
  12. else{
  13. printf("%%d ",num);
  14. break;
  15. }
  16. }
  17. }
  18. int main(){
  19. while(1)
  20. overturn_honest();
  21. }

但是有个问题,你不要没事找事去输入007这种数字去让他翻转,这纯属恶心行为。

欢迎使用这些函数!

推荐阅读