新聞中心
c語言 數(shù)制轉(zhuǎn)換
唉,研究了一天,碰到對于10進制以上的就實在不會了。計算機不好表示啊。若要表示,就只有用字符數(shù)組。但用字符數(shù)組又會造成很多麻煩。
成都創(chuàng)新互聯(lián)長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為五華企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、做網(wǎng)站,五華網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
我只會寫出10以內(nèi)進制間及16進制的相互轉(zhuǎn)換了。
思前想后,似乎只有這條思路是最為簡單的:間接轉(zhuǎn)換!
10以內(nèi)任意進制先轉(zhuǎn)換為十進制,然后由十進制再轉(zhuǎn)換為新進制。
唉,一直編這題,都煩死了。
不想再把程序?qū)懗鰜砹?,只提供下思路,留給你自己編吧。
很抱歉,沒能幫上你...
C語言中怎樣調(diào)用函數(shù)將十進制轉(zhuǎn)換成二進制?
1、打開visualC++6.0-文件-新建-文件-C++SourceFile。
2、輸入預(yù)處理命令和主函數(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ù)轉(zhuǎn)化成二進制的數(shù):
do/*用循環(huán)將十進制的數(shù)轉(zhuǎn)化成二進制的數(shù)*/
{
r=x%2;/*用除R取余倒計法計算二進制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
5、輸出結(jié)果:
for(i=k;i=0;i--)? ? ? ? /*將上面倒計的數(shù)正回來*/
printf("%d",b[i]);/*輸出結(jié)果*/
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ù)轉(zhuǎn)化成二進制的數(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]);/*輸出結(jié)果*/
printf("\n");
}
課程設(shè)計:數(shù)制轉(zhuǎn)換(C語言)
#include
stdio.h
#include
stdlib.h
//輸入十進制數(shù)N和轉(zhuǎn)化的進制數(shù)M
void
trans(int
n,int
m)
{
if(n)
{
trans(n/m,m);
if(n%m10)
printf("%c",n%m+'0');
else
printf("%c",n%m-10+'A');
}
}
void
main()
{
int
m,n,x;
char
ch;
printf("給定進制數(shù)M:");
scanf("%d",m);
loop:
printf("給定一個%d進制的數(shù)X:",m);
fflush(stdin);
//一個M進制的數(shù)X轉(zhuǎn)10進制
for(x=0;;)
{
ch=getchar();
if(ch='0'
ch='9')
{
n=ch-'0';
}
else
if(ch='a'
ch='z')
{
n=ch-'a'+10;
}
else
if(ch='A'
ch='Z')
{
n=ch-'A'+10;
}
else
{
break;
}
if(n=m)
{
goto
loop;
}
x=x*m+n;
}
printf("轉(zhuǎn)化成十進制數(shù)為:%d\n",x);
printf("給定要轉(zhuǎn)化進制數(shù)M:");
scanf("%d",m);
printf("轉(zhuǎn)化成%d進制后的結(jié)果為:",m);
trans(x,m);
printf("\n");
}
其他的方法:
trans函數(shù)也可以這樣寫:
void
trans(int
n,int
m)
{
char
str[100];
int
i;
for(i=0;n0;i++)
{
if(n%m10)
{
str[i]=n%m+'0';
}
else
{
str[i]=n%m-10+'A';
}
n=n/m;
}
for(n=i;n0;n--)
{
printf("%c",str[n-1]);
}
}
C語言中的進制怎么轉(zhuǎn)換啊
任意進制之間的進制轉(zhuǎn)換。需要考慮高精度整形的設(shè)計,用數(shù)組模擬一個整形變量。一位一位的進行進制轉(zhuǎn)換,算法思想和十進制轉(zhuǎn)換到二進制相同,除以目標(biāo)進制,余數(shù)為低位。這種進制轉(zhuǎn)換實用性不強,一般出現(xiàn)在計算機程序競賽當(dāng)中。
8,10,16進制的轉(zhuǎn)換。在C語言中有不少函數(shù)都能實現(xiàn)上面幾種進制之間的進制轉(zhuǎn)換。
推薦其中的sprintf/sscanf函數(shù)。
sprintf格式的規(guī)格如下所示。[]中的部分是可選的。
%[指定參數(shù)][標(biāo)識符][寬度][.精度]指示符
若想輸出'%'本身時, 請使用'%%'處理。
1. 處理字符方向。負號時表示從后向前處理。
2. 填空字元。 0 的話表示空格填 0;空格是內(nèi)定值,表示空格就放著。
3. 字符總寬度。為最小寬度。
4. 精確度。指在小數(shù)點后的浮點數(shù)位數(shù)。
轉(zhuǎn)換字符
%% 印出百分比符號,不轉(zhuǎn)換。
%c 整數(shù)轉(zhuǎn)成對應(yīng)的 ASCII 字元。
%d 整數(shù)轉(zhuǎn)成十進位。
%f 倍精確度數(shù)字轉(zhuǎn)成浮點數(shù)。
%o 整數(shù)轉(zhuǎn)成八進位。
%s 整數(shù)轉(zhuǎn)成字符串。
%x 整數(shù)轉(zhuǎn)成小寫十六進位。
%X 整數(shù)轉(zhuǎn)成大寫十六進位。
例程(16進制和10進制之間的轉(zhuǎn)換):
#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;???
}
標(biāo)題名稱:c語言函數(shù)數(shù)制轉(zhuǎn)換 c語言用函數(shù)轉(zhuǎn)換大小寫
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/doppcid.html