1. 程式人生 > >C語言,進位制轉換之十六進位制轉二進位制,完整程式碼

C語言,進位制轉換之十六進位制轉二進位制,完整程式碼

#include "iostream"
using namespace std;
#define MAX 50
int main()//十六轉二
{
    int elem2[MAX];
    char elem16[MAX]; 
    cout << "請輸入十六進位制數,並以‘$’結束:";
    int flag = 1;
    char ch;
    int i = 0;
    while (flag)
    {
        cin >> ch;
        if (ch != '$')
        {
            elem16[i] = ch;
            i++;
        }
        else
{ flag = 0; } } int length1 = i; int length2 = 0; int n = 0; int sum = 0; for (n = 0; n < length1; n++)//判斷是否是十六進位制數 { int x = (int)elem16[n]; if ((x >= 48 && x <= 57) || (x >= 65 && x <= 70)) sum++; } if
(sum == length1) { int j = 0; int number = 0; int k = 0; int p = 0; int m = 0; int cout = 3; for (j = 0; j < length1; j++) { m = cout; int x = (int)elem16[j]; if (x >= 48 && x <= 57) { number = elem16[j] - 48
; } else if (x >= 65 && x <= 70) { number = elem16[j] - 55; } if (number != 1) { do { elem2[m] = number % 2; number = number / 2; length2++; k++; m--; } while (number>1); if (k == 3) { elem2[m] = 1; length2++; m--; } else { elem2[m] = 1; m--; length2++; for (p = 0; p < 3-k; p++) { elem2[m] = 0; length2++; m--; } } k = 0; } else { elem2[m] = 1; m--; length2++; for (p = 0; p < 3; p++) { elem2[m] = 0; length2++; m--; } } cout = cout + 4; } } else { cout << "輸入的不是十六進位制數!"; } cout << "正序輸出:"; for (i = 0; i < length2; i++) cout << elem2[i] << " "; cout << endl; return 0; }