最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言實(shí)現(xiàn)常見(jiàn)進(jìn)制轉(zhuǎn)換的示例代碼

 更新時(shí)間:2023年04月06日 16:35:11   作者:北飛的山羊  
生活中最常見(jiàn)的進(jìn)制是十進(jìn)制,而有一類編程題會(huì)要求將十進(jìn)制轉(zhuǎn)換為其他進(jìn)制,本文將主要講述C語(yǔ)言中常見(jiàn)的幾類進(jìn)制轉(zhuǎn)換問(wèn)題,希望對(duì)大家有所幫助

前言

生活中最常見(jiàn)的進(jìn)制是十進(jìn)制,而有一類編程題會(huì)要求將十進(jìn)制轉(zhuǎn)換為其他進(jìn)制,本篇博客將主要講述C語(yǔ)言中常見(jiàn)的幾類進(jìn)制轉(zhuǎn)換問(wèn)題。

一、十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)、八進(jìn)制數(shù)

方法:舉例將十進(jìn)制數(shù)100轉(zhuǎn)換為二進(jìn)制數(shù),就是將100與2相除,得到商以及余數(shù),再將商與2不斷相除,最終除到商為0。按順序記錄下余數(shù),再將余數(shù)逆序輸出,即為二進(jìn)制的結(jié)果。八進(jìn)制同理,商不斷與8相除,最終除到商為0,按順序記錄下余數(shù),再將余數(shù)逆序輸出,即八進(jìn)制的結(jié)果。此方法同樣可以推廣到要轉(zhuǎn)換成二到九的任何一種進(jìn)制。

圖形如下:

代碼如下:

#include <stdio.h>
int main()
{
    int x, n;
    scanf("%d %d", &x, &n);//x是要轉(zhuǎn)換的十進(jìn)制數(shù),n為要轉(zhuǎn)換成的進(jìn)制
    int arr[100] = { 0 };//創(chuàng)建一個(gè)足夠大的數(shù)組來(lái)存放余數(shù)
    int i = 0,j = 0;
    while (x)
    {
        arr[i++] = x % n;//存放余數(shù),i最后的值正好是余數(shù)的個(gè)數(shù)
        x /= n;
    }
    for (j = i - 1; j >= 0; j--)
    {
        printf("%d", arr[j]);//余數(shù)倒序輸出
    }
    printf("\n");
    return 0;
}

二、十進(jìn)制轉(zhuǎn)換為十六進(jìn)制

將十進(jìn)制轉(zhuǎn)換為十六進(jìn)制同樣需要用到將商不斷除16以及逆序輸出等方法,但由于十六進(jìn)制中會(huì)出現(xiàn)A\B\C\D\E\F等字符,所以還需要將取得的余數(shù)做進(jìn)一步轉(zhuǎn)換。代碼如下:

#include <stdio.h>
int main()
{
    int x;
    scanf("%d", &x);
    char arr[100] = { 0 };//因?yàn)槭M(jìn)制中會(huì)出現(xiàn)A\B\C\D\E\F等字符,所以保存余數(shù)的數(shù)組類型應(yīng)定義為char
    int i = 0, j = 0;
    while (x)
    {
        arr[i++] = x % 16;
        x /= 16;
    }
    for (j = 0; j < i; j++)
    {
        //將取出的余數(shù)轉(zhuǎn)換為對(duì)應(yīng)的字符
        switch (arr[j])
        {
        case 10:arr[j] = 'A'; break;
        case 11:arr[j] = 'B'; break;
        case 12:arr[j] = 'C'; break;
        case 13:arr[j] = 'D'; break;
        case 14:arr[j] = 'E'; break;
        case 15:arr[j] = 'F'; break;
        default:arr[j] += 48;
        }
    }
    for (j = i - 1; j >= 0; j--)
    {
        printf("%c", arr[j]);//逆序打印
    }
    printf("\n");
    return 0;
}

三、二進(jìn)制數(shù)、八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)

方法:需要將輸入的數(shù)的每一位取出,再與這個(gè)位上的權(quán)重相乘,最后相加得到結(jié)果。

代碼如下:

#include <stdio.h>
#include <math.h>
int main()
{
    int n = 0, sum = 0, i = 0, x = 0;
    scanf("%d %d", &x, &n);//x為輸入的二進(jìn)制或八進(jìn)制的數(shù),n為進(jìn)制。
    while (x)
    {
        sum += (x%10)*pow(n, i++);//x%10將x的每一位取出,再與這個(gè)位上的權(quán)重相乘。
        x /= 10;
    }
    printf("%d\n", sum);
    return 0;
}

四、十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)

十六進(jìn)制中含A\B\C\D\E\F等字符,所以在輸入的時(shí)候可以將其看成輸入一個(gè)字符串,需要先將每位上的字符轉(zhuǎn)換為對(duì)應(yīng)的數(shù)字與本位上的權(quán)重相乘,再相加得到最后的值。

代碼如下:

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
    char arr1[100] = { 0 };
    scanf("%s", arr1);
    int len = strlen(arr1);
    int i = 0,  sum = 0;
    for (i = 0; i<len; i++)
    {
        int temp = 0;
        switch (arr1[i])
        {
        case 'A':temp = 10; break;
        case 'B':temp = 11; break;
        case 'C':temp = 12; break;
        case 'D':temp = 13; break;
        case 'E':temp = 14; break;
        case 'F':temp = 15; break;
        default:temp = arr1[i] - '0'; break;
        //將各個(gè)位上的字符轉(zhuǎn)換為對(duì)應(yīng)的數(shù)字
        }
        sum += temp * pow(16, len-i-1);//各個(gè)位上的權(quán)重相乘再相加
    }
    printf("%d\n", sum);
    return 0;
}

到此這篇關(guān)于C語(yǔ)言實(shí)現(xiàn)常見(jiàn)進(jìn)制轉(zhuǎn)換的示例代碼的文章就介紹到這了,更多相關(guān)C語(yǔ)言進(jìn)制轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 獲取本地網(wǎng)卡適配器信息具體代碼

    獲取本地網(wǎng)卡適配器信息具體代碼

    這篇文章主要介紹了獲取本地網(wǎng)卡適配器信息具體代碼,有需要的朋友可以參考一下
    2013-12-12
  • C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文)

    C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文)

    這篇文章主要介紹了C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文),需要的朋友可以參考下
    2016-06-06
  • C++?Boost?Foreach超詳細(xì)分析講解

    C++?Boost?Foreach超詳細(xì)分析講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • C/C++?Qt?TabWidget?實(shí)現(xiàn)多窗體創(chuàng)建詳解

    C/C++?Qt?TabWidget?實(shí)現(xiàn)多窗體創(chuàng)建詳解

    TabWidget組件配合自定義Dialog組件,可實(shí)現(xiàn)一個(gè)復(fù)雜的多窗體分頁(yè)結(jié)構(gòu)。這篇文章就主要介紹了如何通過(guò)TabWidget實(shí)現(xiàn)多窗體的創(chuàng)建,感興趣的小伙伴可以了解一下
    2021-12-12
  • C++示例分析內(nèi)聯(lián)函數(shù)與引用變量及函數(shù)重載的使用

    C++示例分析內(nèi)聯(lián)函數(shù)與引用變量及函數(shù)重載的使用

    為了消除函數(shù)調(diào)用的時(shí)空開(kāi)銷,C++ 提供一種提高效率的方法,即在編譯時(shí)將函數(shù)調(diào)用處用函數(shù)體替換,類似于C語(yǔ)言中的宏展開(kāi)。這種在函數(shù)調(diào)用處直接嵌入函數(shù)體的函數(shù)稱為內(nèi)聯(lián)函數(shù)(Inline Function),又稱內(nèi)嵌函數(shù)或者內(nèi)置函數(shù)
    2022-08-08
  • C++實(shí)現(xiàn)添加圖片水印到PDF文檔

    C++實(shí)現(xiàn)添加圖片水印到PDF文檔

    水印是顯示在文檔內(nèi)容后面的淡色文字或圖片,可以用于指示文檔的狀態(tài)(保密、草稿等),本文主要為大家介紹了如何使用?Spire.PDF?for?C++?在?PDF?文檔中添加圖片水印,需要的可以參考下
    2023-11-11
  • 詳解_beginthreadex()創(chuàng)建線程

    詳解_beginthreadex()創(chuàng)建線程

    這篇文章主要介紹了詳解_beginthreadex()創(chuàng)建線程,使用_beginthreadex(),需要的頭文件支持#include <process.h> 下面我們就來(lái)看看具體的實(shí)現(xiàn)吧
    2022-01-01
  • C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼

    C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 深入了解C語(yǔ)言指針

    深入了解C語(yǔ)言指針

    這篇文章主要介紹了C語(yǔ)言指針詳解及用法示例,介紹了其相關(guān)概念,然后分享了幾種用法,具有一定參考價(jià)值。需要的朋友可以了解下
    2021-07-07
  • C語(yǔ)言中的初階指針詳解

    C語(yǔ)言中的初階指針詳解

    這篇文章主要介紹了C語(yǔ)言中的初階指針,介紹了其相關(guān)概念,具有一定參考價(jià)值。需要的朋友可以了解下,希望能夠給你帶來(lái)幫助
    2021-10-10

最新評(píng)論

白沙| 兴化市| 莱州市| 宣武区| 嘉祥县| 阿图什市| 蕲春县| 山东| 鹤壁市| 博乐市| 谷城县| 新密市| 崇信县| 芮城县| 齐河县| 灯塔市| 长海县| 图片| 工布江达县| 教育| 衡东县| 安丘市| 宝应县| 孟连| 阳城县| 会宁县| 郯城县| 绥德县| 岐山县| 齐河县| 陆良县| 长宁区| 方山县| 华容县| 墨玉县| 光泽县| 河北省| 皮山县| 阿尔山市| 盐池县| 治多县|