C語言實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)任意進(jìn)制的代碼詳解
主要思路:運(yùn)用一個(gè)數(shù)組,通過數(shù)字每次取任意進(jìn)制模,存在數(shù)組中, 再通過倒取數(shù)組中的數(shù)值,來實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換,如果遇到十六進(jìn)制,利用ASCII碼值 數(shù)字字符和大寫字母 相差55的特性來解決
int main()
{
int a[50];//把取模的值放到數(shù)組中1
int i = 0;
int num,k;
printf("選擇你要轉(zhuǎn)換的進(jìn)制\n");
scanf("%d", &k);
printf("請(qǐng)輸入一個(gè)數(shù)字\n");
scanf("%d", &num);//輸入一個(gè)數(shù)字
int prenum = num;
if (num > 0)
{
while (num != 0)
{
a[i] = num % k;
num = num / k;
i++;
}
printf("%d的%d進(jìn)制為", prenum, k);
for (i -= 1; i >= 0; i--)//倒序輸出數(shù)組中的數(shù)字
{
if (a[i] >= 0 && a[i] <= 9)//如果是正常數(shù)字 則輸出
printf("%d", a[i]);
else//如果是大于9的則用字母ABCDEF來代替
{
printf("%c", a[i] + 55);
}
}
}
else
{
printf("%d的%d進(jìn)制為0", prenum, k);
}
return 0;
}int main()
{
int i = 0;
int m, k;
int a[20];
printf("請(qǐng)輸入要轉(zhuǎn)化的數(shù)字:");
scanf("%d", &m);
printf("請(qǐng)輸入要轉(zhuǎn)化的進(jìn)制數(shù):");
scanf("%d", &k);
if (m > 0)
{
for (i = 0; m != 0; i++)//每次取模都放在數(shù)組中
{
a[i] = m % k;
m = m / k;
}
int j = 0;
for (j = i - 1; j >= 0; j--)//倒著取數(shù)組中的數(shù)
{
switch (a[j])//十六進(jìn)制處理
{
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
default://小于十的數(shù)整除輸出
printf("%d", a[j]);
}
}
}
else
{
printf("0\n");
}
return 0;
}拓展:
十進(jìn)制轉(zhuǎn)換為二進(jìn)制
運(yùn)行圖:

源代碼:
#include <stdio.h>
/*10進(jìn)制轉(zhuǎn)換為2進(jìn)制*/
void conversion(int a)
{
int chu, yu;
chu=a/2;
yu=a%2;
if(chu==0)
{
printf("%d",yu);
}
else
{
conversion(chu);
printf("%d",yu);
}
}
int main(void)
{
int x;
printf("請(qǐng)輸入10進(jìn)制數(shù):");
scanf("%d",&x);
printf("轉(zhuǎn)化后的2進(jìn)制為:");
conversion(x);
return 0;
}十進(jìn)制轉(zhuǎn)換為八進(jìn)制
運(yùn)行圖:

源代碼:
#include <stdio.h>
/*10進(jìn)制轉(zhuǎn)換為8進(jìn)制*/
void conversion(int a)
{
int chu, yu;
chu=a/8;
yu=a%8;
if(chu==0)
{
printf("%d",yu);
}
else
{
conversion(chu);
printf("%d",yu);
}
}
int main(void)
{
int x;
printf("請(qǐng)輸入10進(jìn)制數(shù):");
scanf("%d",&x);
printf("轉(zhuǎn)化后的8進(jìn)制為:");
conversion(x);
return 0;
}十進(jìn)制轉(zhuǎn)換為十六進(jìn)制
運(yùn)行圖:

源代碼:
#include <stdio.h>
/*10進(jìn)制轉(zhuǎn)換為16進(jìn)制*/
int sum(unsigned a,char buf[])
{
int chu, yu;
chu=a/16;
yu=a%16;
if(chu==0)
{
printf("%c",buf[yu]);
}
else
{
sum(chu,buf);
printf("%c",buf[yu]);
}
}
int main(void)
{
int a;
char buf[16]="0123456789ABCDEF";
printf("請(qǐng)輸入10進(jìn)制數(shù):");
scanf("%d",&a);
printf("轉(zhuǎn)化后的16制數(shù)為:");
sum(a,buf);
return 0;
}到此這篇關(guān)于C語言實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)任意進(jìn)制的代碼詳解的文章就介紹到這了,更多相關(guān)C語言十進(jìn)制轉(zhuǎn)任意進(jìn)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言實(shí)現(xiàn)的排列組合問題的通用算法、解決方法
這篇文章主要介紹了C語言實(shí)現(xiàn)的排列組合問題的通用算法、解決方法,本文使用C語言實(shí)現(xiàn)在程序中解決這個(gè)問題,需要的朋友可以參考下2014-08-08
c語言循環(huán)加數(shù)組實(shí)現(xiàn)漢諾塔問題
本文主要介紹了c語言循環(huán)加數(shù)組實(shí)現(xiàn)漢諾塔問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
C語言函數(shù)聲明以及函數(shù)原型超詳細(xì)講解示例
這篇文章主要介紹了C語言函數(shù)聲明以及函數(shù)原型超詳細(xì)講解,C語言代碼由上到下依次執(zhí)行,原則上函數(shù)定義要出現(xiàn)在函數(shù)調(diào)用之前,否則就會(huì)報(bào)錯(cuò)。但在實(shí)際開發(fā)中,經(jīng)常會(huì)在函數(shù)定義之前使用它們,這個(gè)時(shí)候就需要提前聲明2023-02-02

