c語言將十進制數(shù)轉換為16進制的函數(shù):
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供通許網(wǎng)站建設、通許做網(wǎng)站、通許網(wǎng)站設計、通許網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、通許企業(yè)網(wǎng)站模板建站服務,十多年通許做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
#includestdio.h
main()
{
int u10;
char u16[10];
int w=0,a,b,i;
printf("請輸入一個數(shù)字--");
scanf("%d",u10);
if(u10==0)
{
u16[0]='0';
w++;
}
else
{
a=u10;
while(a)
{
b=a%16;
if(b10)
{
u16[w]='0'+b;
}
else
{
u16[w]='A'+b-10;
}
a=a/16;
w++;
}
}
printf("\n");
printf("%d(10)轉換為16進制數(shù)字為:",u10);
for(i=w-1;i=0;i--)
{
printf("%c",u16[i]);
}
printf("\n");
}
擴展資料:
十進制數(shù)轉換為二進制數(shù)方法
十進制數(shù)轉換為二進制數(shù)時,由于整數(shù)和小數(shù)的轉換方法不同,所以先將十進制數(shù)的整數(shù)部分和小數(shù)部分分別轉換后,再加以合并。
1. 十進制整數(shù)轉換為二進制整數(shù) 十進制整數(shù)轉換為二進制整數(shù)采用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數(shù),可以得到一個商和余數(shù);再用2去除商,又會得到一個商和余數(shù),如此進行,直到商為零時為止,然后把先得到的余數(shù)作為二進制數(shù)的低位有效位,后得到的余數(shù)作為二進制數(shù)的高位有效位,依次排列起來。
2.十進制小數(shù)轉換為二進制小數(shù)
十進制小數(shù)轉換成二進制小數(shù)采用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,又得到一個積,再將積的整數(shù)部分取出,如此進行,直到積中的小數(shù)部分為零,或者達到所要求的精度為止。
然后把取出的整數(shù)部分按順序排列起來,先取的整數(shù)作為二進制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。
參考資料:
百度百科-十進制
1、打開visualC++6.0-文件-新建-文件-C++SourceFile。
2、輸入預處理命令和主函數(shù):
#includestdio.h? ? ? ? ? ?/*輸入輸出頭文件*/
voidmain()/*空類型:主函數(shù)*/
3、定義變量和數(shù)組的數(shù)據(jù)類型并輸入一個十進制:
intb[16],x,k,r,i;/*定義變量和數(shù)組的數(shù)據(jù)類型為整型*/
printf("輸入一個十進制:");/*輸出文字提示*/
scanf("%d",x);? ? ? ? ?/*輸入一個十進制數(shù)字*/
k=-1;/*將-1賦給k*/
4、用除R取余倒計法將十進制的數(shù)轉化成二進制的數(shù):
do/*用循環(huán)將十進制的數(shù)轉化成二進制的數(shù)*/
{
r=x%2;/*用除R取余倒計法計算二進制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
5、輸出結果:
for(i=k;i=0;i--)? ? ? ? /*將上面倒計的數(shù)正回來*/
printf("%d",b[i]);/*輸出結果*/
printf("\n");
6、完整的源代碼:
#includestdio.h? ? ? ? ? ?/*輸入輸出頭文件*/
voidmain()/*空類型:主函數(shù)*/
{
intb[16],x,k,r,i;/*定義變量和數(shù)組的數(shù)據(jù)類型為整型*/
printf("輸入一個十進制:");/*輸出文字提示*/
scanf("%d",x);? ? ? ? ?/*輸入一個十進制數(shù)字*/
k=-1;/*將-1賦給k*/
do/*用循環(huán)將十進制的數(shù)轉化成二進制的數(shù)*/
{
r=x%2;/*用除R取余倒計法計算二進制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
for(i=k;i=0;i--)? ? ? ? /*將上面倒計的數(shù)正回來*/
printf("%d",b[i]);/*輸出結果*/
printf("\n");
}
求十進制轉換二進制C語言代碼代碼如下:
#includestdio.h
#define?NR(sizeof(int)*8)?//二進制位的個數(shù)
voiddeciToBin(intnum);//十進制轉換為二進制函數(shù)聲明
/*主函數(shù)*/
intmain(void)
{
intnum;
fprintf(stdout,"請輸入一個正整數(shù):");
/*獲取并檢查用戶輸入*/
while(1)
{
if(fscanf(stdin,"%d",num)!=1)
{
fprintf(stderr,"輸入錯誤!請重新輸入:");
while(getchar()!='\n');//去掉多余的非法字符
continue;
}
elseif(num0)???????//輸入的數(shù)不能為負數(shù)
{
fprintf(stderr,"請輸入錯誤!請輸入正整數(shù):");
continue;
}
else
break;
}
fprintf(stdout,"對應二進制為:");
#if1/*方法一:不使用遞歸*/
charbitArr[NR];
inti=-1;
/*算法:棧的數(shù)學模型*/
do{
i+=1;
bitArr[i]=num%2;
num/=2;
}while(num!=0);
/*逆序打印*/
for(i;i=0;i--)
{
fprintf(stdout,"%d",bitArr[i]);
}
fputc('\n',stdout);
#else/*方法二:使用遞歸*/
if(num==0)
{
fprintf(stdout,"0\n");
}
else
{
deciToBin(num);????//調用第歸函數(shù)
fputc('\n',stdout);
}
#endif
return0;
}
/*
*@函數(shù)名:deciToBin
*@函數(shù)功能:實現(xiàn)十進制轉換為二進制
*@參數(shù):需要轉換的十進制整數(shù)
*/
voiddeciToBin(intnum)
{
/*第歸結束條件*/
if(num==0)
{
return;
}
/*第歸調用*/
deciToBin(num/2);
/*逆序打印*/
fprintf(stdout,"%d",num%2);
}
擴展資料:
使用C語言編程實現(xiàn)任意進制數(shù)(2-16進制)轉換為其他任意進制數(shù)(2-16進制)方法:
#includestdio.h
#includestring.h
#includestdlib.h
intTenNum(chara[],intB);
voidNumchange(intm,intB);
intTenNum(chara[],intB)
{
intlen,i,num;
intsum=0;
len=strlen(a);
for(i=0;ilen;i++)
{
if(a[i]='0'a[i]='9')
num=a[i]-'0';
elseif(a[i]='A'a[i]='F')
num=a[i]-'A'+10;
sum=sum*B+num;
}
returnsum;
}
voidNumchange(intm,intB)
{
intn;
if(m)
{
Numchange(m/B,B);
n=m%B;
if(n10)
printf("%d",n);
else
printf("%c",n+55);
}
}
intmain()
{
intB,b;
chara[20];
printf("請輸入待轉換數(shù)的進制(2-16):");
do{
scanf_s("%d",B);
}while(B2B16);
printf("請輸入待轉換數(shù):");
getchar();
gets_s(a);
intm=TenNum(a,B);
printf("請輸入需要轉成幾進制數(shù)(2-16):");
do{
scanf_s("%d",b);
}while(B2B16);
printf("%d進制數(shù)%s轉換為%d進制數(shù)的結果為:",B,a,b);
Numchange(m,b);
printf("\n");
system("pause");
return0;
}
任意進制之間的進制轉換。需要考慮高精度整形的設計,用數(shù)組模擬一個整形變量。一位一位的進行進制轉換,算法思想和十進制轉換到二進制相同,除以目標進制,余數(shù)為低位。這種進制轉換實用性不強,一般出現(xiàn)在計算機程序競賽當中。
8,10,16進制的轉換。在C語言中有不少函數(shù)都能實現(xiàn)上面幾種進制之間的進制轉換。
推薦其中的sprintf/sscanf函數(shù)。
sprintf格式的規(guī)格如下所示。[]中的部分是可選的。
%[指定參數(shù)][標識符][寬度][.精度]指示符
若想輸出'%'本身時, 請使用'%%'處理。
1. 處理字符方向。負號時表示從后向前處理。
2. 填空字元。 0 的話表示空格填 0;空格是內定值,表示空格就放著。
3. 字符總寬度。為最小寬度。
4. 精確度。指在小數(shù)點后的浮點數(shù)位數(shù)。
轉換字符
%% 印出百分比符號,不轉換。
%c 整數(shù)轉成對應的 ASCII 字元。
%d 整數(shù)轉成十進位。
%f 倍精確度數(shù)字轉成浮點數(shù)。
%o 整數(shù)轉成八進位。
%s 整數(shù)轉成字符串。
%x 整數(shù)轉成小寫十六進位。
%X 整數(shù)轉成大寫十六進位。
例程(16進制和10進制之間的轉換):
#include?stdio.h??
#include?limits.h??
int?main()??
{??
char?s[100]?=?{0};??
sprintf(s,?"%x",?INT_MAX);??
printf("%s\n",?s);?//?7fffffff??
char?str[100]?=?"7fffffff";??
int?i?=?0;??
sscanf(str,?"%x",?i);??
printf("%d\n",?i);?//?2147483647??
return?0;???
}