zoukankan      html  css  js  c++  java
  • 将两个数字逆序输出算法构思

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

    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函数更简单,在这里只是探讨了算术分割的小小拓展。

  • 相关阅读:
    CI框架 QQ接口(第三方登录接口PHP版)
    linux定时任务的设置
    WEB服务器:Apache、Tomcat、JBoss、WebLogic、Websphere、IIS的区别与关系
    php专业面试总结
    php常用数学函数
    UVA 1428 Ping pong
    UVA 11988 Broken Keyboard (a.k.a. Beiju Text)
    UVA 11991 Easy Problem from Rujia Liu?
    UVA 11995 I Can Guess the Data Structure!
    UVA 10375 Choose and divide
  • 原文地址:https://www.cnblogs.com/tcent/p/5533054.html
Copyright © 2011-2022 走看看