zoukankan      html  css  js  c++  java
  • I00028 整数逆序

    把一个整数逆序输出有两种办法。

    1.使用字符串处理,先将整数转换为字符串,然后将字符串逆序。可以使用I/O函数,将整数值输出到字符串数组中,即转换为字符串,然后再对字符串的前后字符进行对换即可。

    2.将整数变量中的值逆序。计算机程序中,用10去除整数时,商为10进制右移一位(去掉个位),余数为个位数。重复这样的计算,每次将取出的个位数再拼装成一个整数(原先的低位被拼装到高位),就得到了整数的逆序。这也是函数atoi()和函数itoa()的原理。

    参见:B00005 函数atoi()B00006 函数itoa()

    应该说,后一种做法更具备通用性。前一种做法需要用到一个一个临时字符数组,如果只是输出则只需要将字符数组的内容输出就可以了,如果要得到一个整数值则需要另行处理,手续有些繁琐。

    实际编写程序过程中,还需要注意将功能封装到函数中,以便复用。

    程序中给出了两个函数,用于整数逆序运算。

    程序如下:

    /* I00028 整数逆序 */
    
    #include <stdio.h>
    #include <string.h>
    
    void int_reverse1(int val, char t[])
    {
        int start=0, end;
        char temp;
    
        sprintf(t, "%d", val);
        end = strlen(t) - 1;
        while(start < end) {
            temp = t[start];
            t[start] = t[end];
            t[end] = temp;
    
            start++;
            end--;
        }
    }
    
    int int_reverse2(int val)
    {
        int result = 0;
    
        while(val) {
            result *= 10;
            result += val % 10;
            val /= 10;
        }
    
        return result;
    }
    
    int main(void)
    {
        int val, r;
        char t[20];
    
        while(scanf("%d", &val) != EOF) {
            int_reverse1(val, t);
            r = int_reverse2(val);
    
            printf("%d %s %d
    ", val, t, r);
        }
    
        return 0;
    }

    程序运行例子(输入了123、12345、3721和525213,两个函数算出的结果是一样的)如下:

    123
    123 321 321
    12345
    12345 54321 54321
    3721        
    3721 1273 1273
    525213
    525213 312525 312525


  • 相关阅读:
    Socket与系统调用深度分析
    AudioRecord::getMinFrameCount
    c++: address argument to atomic operation must be a pointer to _Atomic type
    python秒表,方便测试计时
    Android驱动笔记(13)——PMIC reset介绍
    Android驱动笔记(10)——DOS或BAT脚本语法
    第八章——Linux设备模型(1)
    第四章——IOCTL(1)
    第三章(扩展)——虚拟串口设备
    第三章——字符驱动设备
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564734.html
Copyright © 2011-2022 走看看