zoukankan      html  css  js  c++  java
  • C++进制转换问题

    写一个把10进制整数转化为16进制,10进制,8进制字符串的函数函数原形如下: void int_to_str(intvalue,char *buff,int flag);value 为整数变量,buff 为字符串指针,flag 用来表

    示8,10,16进制。

    具体实现代码如下:

    /*************************************************************
    写一个把10进制整数转化为16进制,10进制,8进制字符串的函数。
    函数原形如下:void int_to_str(int value,char *buff,int flag);
    value为整数变量,buff为字符串指针,flag用来表示8,10,16进制
    **************************************************************/
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    #define size 100
    void int_to_str(int value,char *buff,int flag);
    int main()
    {
        int num,c;
        char s[size]={0};
        cout<<"输入一个整数:";
        while(cin>>num)
        {
            cout<<"输入转换的进制:";
            cin>>c;
            while(c==8||c==10||c==16)
            {
                strcpy(s,"0");
                int_to_str(num,s,c);
                return 0;
            }
            cout<<"进制无效!"<<endl;
            return 0;
        }
        cout<<"输入值非法!"<<endl;
        return 0;
    }
    
    void int_to_str(int value,char *buff,int flag)    
    {
        int r,i,j;
        char ch;
        char *p=buff;
        int temp = value;
        while(value)
        {
            r = value % flag;
            value=value/flag;
            if(r<10)
            {
                *(p++)=('0' + r);
            }
            else
            {
                *(p++)=('A'+ r -10);
            }
        }
        //两个指针相减得到字符串的长度,包括
        i=p-buff;
        //交换字符串里的头尾每一个数值的顺序,得到正确结果
        for(j=0;j<(i+1)/2;j++)
        {
            ch=*(buff+j);
            *(buff+j)=*(p-1-j);
            *(p-1-j)=ch;
        }
        cout<<temp<<"转换为"<<flag<<"进制的结果是:"<<buff<<endl;
        return;
    }


  • 相关阅读:
    P2380狗哥采矿(状态不易设计)
    P2320鬼谷子的钱袋(分治)
    树型背包(模板)
    Tarjan缩点割点(模板)
    最短路记录路径(模板)
    P1790 矩形分割(隐含的电风扇)
    P1725 琪露诺(单调队列优化)
    BZOJ3236: [Ahoi2013]作业
    BZOJ3809: Gty的二逼妹子序列
    BZOJ2190: [SDOI2008]仪仗队
  • 原文地址:https://www.cnblogs.com/raiven2008/p/4260877.html
Copyright © 2011-2022 走看看