输入一个整数,输出倒置,例如输入123456,输出654321
1 递归,打印出来
2 非递归,返回结果
3 非递归,推荐使用
1 递归,打印出来
1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 void dao(int num) 7 { 8 if (num < 10) 9 { 10 printf("%d", num); 11 } 12 else 13 { 14 printf("%d", num % 10); 15 return dao(num / 10); 16 } 17 } 18 19 main() 20 { 21 int num; 22 23 scanf("%d", &num); 24 25 dao(num); 26 27 system("pause"); 28 }
2 非递归,返回结果
1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 int get10n(int n)//传入n,输出10的n次方 7 { 8 if (n == 0)//递归,最终返回一个值,因此return一个值 9 { 10 return 1; 11 } 12 else 13 { 14 return get10n(n - 1) * 10; 15 } 16 } 17 18 int dao(int num, int wei)//传入num,位数,求出倒置 19 { 20 int n; 21 int last = 0; 22 23 while (num) 24 { 25 n = num % 10;//最后一位 26 num /= 10;//去掉最后一位 27 last += n*get10n(wei - 1);//乘以10的n次方,wei需要减去1 28 wei--; 29 } 30 31 return last; 32 } 33 34 int getwei(int num)//求出位数 35 { 36 if (num < 10)//递归,最终返回一个值,因此return一个值 37 { 38 return 1; 39 } 40 else 41 { 42 return getwei(num / 10) + 1; 43 } 44 } 45 46 main() 47 { 48 int num; 49 int wei; 50 int last; 51 52 scanf("%d", &num); 53 54 wei = getwei(num);//获得位数 55 56 last = dao(num, wei);//倒置结果 57 58 printf("last=%d", last); 59 60 system("pause"); 61 }
3 非递归,推荐使用
1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 main() 7 { 8 int num = 123345; 9 int res = 0; 10 11 while (num) 12 { 13 res *= 10; 14 res += num % 10; 15 num /= 10; 16 } 17 18 printf("res=%d\n", res); 19 20 system("pause"); 21 }