将两个数字逆序输出算法构思

编写一个程序,要求用户输入一个两位整数,然后逆序打印出来;

1. 构思: 使用算术分割实现

1.1 实现方法:设输入的数为N,N%10位个位数,N / 10 位十位数

 

推广1:编写一个程序,要求用户输入三位整数,逆序打印出来;

实现方法:设输入的数为ABC;先从ABC中取出一个两位数(AB或BC或AC),然后用算术分割法实现逆序打印,设先取出的数为BC(BC = ABC % 100),再将BC分离(B = BC / 10 ; C = BC % 10);在将A取出(A = ABC / 100);

 

如果位数更多,也可以按照这个方法实现,但不建议这样做,因为这个过程比较繁琐,考虑用数组结合指针的思想实现就更简单了,哈哈,只能佩服指针太强大了。

 

推广2:输入一个任意整数(例如十进制ABCDE),现在将ABCDE转换任意想要的进制数(如 t 进制)

实现方法:

思路是ABCDE % t 得到相应 t 进制的末尾数,得到相应 t 进制数倒数第二位,但我们在输出相应 t 进制数的时候是从左到右的思想输出,所以 t 进制的第一位: (((((ABCDE) / t) / t ) / t) / t); 第二位:(((((ABCDE) / t)/ t)/ t)% t) ;第三位:((((ABCDE)/ t)/ t)% t);第四位:(((ABCDE)/ t)% t);末位:((ABCDE)% t)

C代码如下:

 1 #include <stdio.h>
 2 int main(void) {
 3     int num, a;
 4 
 5     printf("Enter a number between 0 and 32767: ");
 6         // 输入整数
 7     scanf("%d", &num);
 8 
 9         // 第一位
10     a = (((num / 8)/ 8)/8)/8;
11         // 输出
12     printf("%d",a);
13 
14         // 第二位
15     a = (((num/8)/8)/8)%8;
16         // 输出
17     printf("%d",a);
18 
19         // 第三位
20     a = ((num/8)/8)%8;
21         // 输出
22     printf("%d",a);
23 
24         // 第四位
25     a = (num/8)%8;
26         // 输出
27     printf("%d",a);
28 
29         // 末位
30     a = num % 8;
31         // 输出
32     printf("%d",a);
33 
34     return 0;
35 }

当然上述代码使用标准输出printf函数更简单,在这里只是探讨了算术分割的小小拓展。

posted on 2016-05-26 23:06  再不努力就死翘翘了  阅读(1656)  评论(0编辑  收藏  举报

导航