将两个数字逆序输出算法构思
编写一个程序,要求用户输入一个两位整数,然后逆序打印出来;
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 再不努力就死翘翘了 阅读(1685) 评论(0) 编辑 收藏 举报