當前位置:首頁 » 編程軟體 » 編程變進制

編程變進制

發布時間: 2023-04-27 23:54:35

c語言編程:怎麼把一個十進制數轉換成為一個十六進制數

我們剛學了棧,我做了一個任意進制轉換的程序,你看一下,,即使你沒學,但思想是一樣的
假入你輸入的是m,可在設一個數組用來裝余數,完整程序如下:
#include<stdio.h>
void
main()
{
int
a[10],m,i=0;
printf("please
ennter
a
number\n");
scanf("%d",&m);
while(m!=0)
{
a[i++]=m%16;//在裝余數的同時用i統計余數的個數
m=m/16;
}
for(i=i-1;i>=0;i--)
{
switch(a[i])
{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:printf("%d",a[i]);
}
}
}

⑵ c語言編程 把十進制轉換為十六進制

方法一:

#include<iostream>
#include <string>
using namespace std;


string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp > 0) str +=

DecIntToHexStr(Temp); if (left < 10) str += (left + '0'); else str += ('A' + left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i < str.size(); ++i) Dec =

Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cin >> DecStr) { cout << "0x" + DecStrToHexStr(DecStr); } return 0;}

方法二:


#include<iostream>
#include <string>
#include<vector>


#include <sstream>
#include <math.h>
using namespace std;int main()


{ string decStr; cin >> decStr; int num = stoi(decStr); vector<int>v; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }


reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j < (i +

1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; } if (temp <= 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }

else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i < zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for

(int j = i * 4; j < (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }
if (temp <= 9) { stringstream ss; string strTemp;

ss << temp; ss >> strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout << hexStr << endl; return 0;}

(2)編程變進制擴展閱讀:


還有3種方式可以實現,其中兩種是使用系統函數,另一種是直接自己編寫。

下面的代碼就是3種方式的實現,包括2位的整數和任意整數(2的31次方以內)都可以。可自己選擇需要的實現方式。

利用系統函數有

1. char * itoa ( int value, char * str, int base );value是要轉化的數字,str是轉化後的字元串存儲的位置,base是進制數(但是這個函數不是標准C函數,有些編譯器是不支持的!)。所以代碼可以為:

char buffer [33]; //用於存放轉換好的十六進制字元串,可根據需要定義長度 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}

2. sprintf(str,"%x",value);str是轉化存儲的位置,%x表示十六進制格式,value是要轉化的數字。所以代碼可以為:

char buffer [33]; //用於存放轉換好的十六進制字元串,可根據需要定義長度 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}

3. 自己編寫

如果參數只要兩位數的整數,那麼很簡單。

代碼如下:

#include <stdio.h>#include <stdlib.h> char buffer [33]; //用於存放轉換好的十六進制字元串,可根據需要定義長度 char * inttohex(int aa)

{ sprintf(buffer, "%x", aa); return (buffer);} int main ()

{ int num; char * hex_str; printf ("Enter a number: "); scanf ("%d",&num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH ", hex_str); return 0;}

⑶ 用編程怎麼把十進制的變成n進制

1. C語言十進制轉換為N進制的程序
代碼如下:(可以輸出20位數)

#include<stdio.h>

void transfer(int m,int change)

{

int aa[20],j,saveM=m;

for(j=0;m!=0;j++)

{

aa[j]=m%change;

m=m/change;

}

printf("十進制數%d的%d進制形式是:\n",saveM,change);

for(;j!=0;j--)

printf("%d ",aa[j-1]); 注意這空是填aa[j-1],而不是aa[j],因為上面那個循環進行到最後一步時,j++還是會運行一次,但是此時並沒有給aa[j]賦值,因為循環結束

}

main()

{

int n,c;

printf("請輸入一個整數\n");

scanf("%d",&n);

printf("該整數是十進制數,你想將它轉化成幾進制數呢?\n");

getchar();

scanf("%d",&c);

transfer(n,c);

}

功能說明:

該函數可以將任意的十進制數轉化成任意的N進制數。轉化後的結果,每兩位數之間用一個空格隔開。
2. c語言編衡滲寫一個程序,將十進制整數n 轉換成二進制數
#include <stdio.h>

int transfer(int x)

{

int p=1,y=0,yushu;

while(1)

{

yushu=x%2;

x/=2;

y+=yushu*p;

p*=10;

if(x<2)

{

y+=x*p;

break;

}

}

return y;

}

void main()

{

進制轉換函數的聲明

int transfer(int x);

int x;

printf("請輸入一個十進制數:咐卜脊");

scanf("%d",&x);

printf("轉換成二進制數是:%d\n",transfer(x));

}

(3)編程變進制擴展閱讀:

c語言書寫規則弊氏:

1.一個說明或一個語句佔一行。

2.用{} 括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。

3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。

參考資料:

網路-c語言
3. C語言中把10進制轉化n進制怎麼轉
#include<iostream>

#include<cstdio>

using namespace std;

char b[40];

char chg(int n){將數轉換成字元

if(n<10)

return n+'0';

return n-10+'a';

}

int main(){

int a,n,len;a為十進制數,n為轉換成的進制數

int t;

cin>>a>>n;

len=0;

while(a){

b[++len]=chg(a%n);

a/=n;

}

for(int i=len;i;i--)

printf("%c",b[i]);

cout<<endl;

system("pause");

return 0;

}

你的問題好像是有多組數據,沒注意到,就自己修改吧
4. 怎麼用編程把十進制轉化成二進制
class Program

{

static void Main(string[] args)

{

int shi;用來保存十進制數

Console.WriteLine("******** 十進制轉二進制 ********\n");

Console.Write("請輸入十進制整數:");

從控制台讀取十進制整數

shi = Convert.ToInt32(Console.ReadLine());

將輸入的十進制數轉換為二進制字元串

string er = Convert.ToString(shi, 2);

輸出二進制字元串

Console.WriteLine("二進制為:"+er);

Console.ReadLine();

}

}
5. n進制化十進制怎樣轉換
1、十進制轉N進制

十進制轉N進制的方法是「除N取余,逆序排列」,就是用N除去要進行轉換的十進制數,得到一個商和余數,再用N除以商得到又一個商和余數,一直繼續下去,直到商為0,將得到的所有餘數逆序排列,得到的就是N進制數了。

例:將十進制數37轉為二進制,計算過程如下:

將余數逆序排列,得到二進制結果100101。

2、N進制轉十進制

N進制轉十進制的方法是:按權相加法。即把N進制數先寫成加權系數展開式,然後再按十進制的加法規則求和,得到對應十進制數。

例:將八進制數轉為十進制,計算過程如下:

(3567)8=(3*8*8*8+5*8*8+6*8+7)10

=(512+320+48+7)10

=(887)10

(3)編程變進制擴展閱讀:

1、負數的進制轉換

先把負數寫為其補碼形式,然後再根據二進制轉換其它進制的方法進行。

例:要求把-9轉換為八進制形式。則有:

-9的補碼為1111 1111 1111 0111。從後往前三位一劃,不足三位的加0

111---->7

110---->6

111---->7

111---->7

111---->7

001---->1

然後將結果按從下往上的順序書寫就是:177767,那麼177767就是十進制數-9的八進制形式。
6. 如何用C語言將N進制數轉化為十進制
這是我之前寫的一個程序。2~16進制正整數,若是17進制或更高也可以,但怎麼表示17,'g'還是其他字元呢?需要的話也可以修改。

#include

#include

#include

int N2Str(int value,int N,char *str)

{

char temp[10],*Bits="0123456789abcdef";

int Len;

if(value16||str==NULL) return 0;

if(value>=N)

{

if(!N2Str(value/N,N,str)) return 0;

}

Len=strlen(str);

str[Len]=Bits[value%N];

str[Len+1]='\0';

return 1;

}

int M2N(int M,char *MStr,int N,char *NStr)

{

int value=0,bit;

if(M16||MStr==NULL||N16||NStr==NULL) return 0;

while(*MStr)

{

value*=M;

if(*MStr>='0'&&*MStrelse if(*MStr>='a'&&*MStrelse if(*MStr>='A'&&*MStrif(bit>=M) return 0;

value+=bit;

MStr++;

}

*NStr='\0';

N2Str(value,N,NStr);

return 1;

}

int main(void)

{

char *in="123456";

char out[50];

if(M2N(16,in,10,out))

printf("%s->%s\n",in,out);

else

printf("illegal input data\n");

system("pause");

return 0;

}
7. 講一個十進制數轉換成n進制數 c程序 看看這段代碼怎麼樣 可以用,就
代碼很好噢!但沒有必要把n>10和n<=10分開處理,核心部分有下面一部分就可以了。至於效率,用指針處理數組要比用下標處理數組效率高一些,用自賦值運算符比一般運算符高一些。但這代碼太小,用了也分辨不出來高下……下面是完全按你的思路改過的,你對照看看——

void main(void){

int *p,b[10],m,n;

printf("請輸入一個十進制數:\n");

scanf("%d",&m);

printf("請輸入你要將該十進制轉換成多少進制數:\n");

scanf("%d",&n);

printf("%d轉換成%d進制數為\n",m,n);

p=b;

while(m>0){

*p++ = m%n;

m/=n;

}

for(p--;p>=b;p--)

if(*p>9) printf("%c",*p+87);

else printf("%d",*p);

printf("\n");

}
8. 編寫一個將N進制轉換成十進制的調用程序
有點亂 win-tc寫的 僅供參考#include "Stdio.h"#include "Conio.h"#include "Math.h"int sum=0;int w=0;sum 表示最後的轉換結果w只是個過度參數 表示數據位數的增加int main(void){ test(12,325); printf("\n%d",sum); getch(); return 0;}int test(int n,int xx){n 表示以前的進制 xx表示要轉換的數 int i=xx%n; sum=sum+i*(int)pow(10,w); w++; if(xx==0)return; xx=xx/n; test(n,xx);}。
9. 十進制數N進制數據的轉換 用c語言編寫 馬上就要交了幫幫忙
int main(void)

{

int result[20];

int n,num,i;

scanf("%d",&num);要轉換的數

scanf("%d",&n);幾進制

for(i=0;num>0;i++)

{

result[i]=num%n;

num=num/n;

}

printf("結果:");

while(i--)printf("%d",result[i]);

return 0;

}

⑷ c語言編程怎麼實現進制轉換

可以用直接法和間接法轉換。

⑸ C語言編程:八進制轉換為十進制

#include<stdio.h>

void main()

{

char *p,s[6];int n;

p=s;

gets(p);

n=0;

while(*(p)!='')

{n=n*8+*p-'0';

p++;}

printf("%d",n);

}

(5)編程變進制擴展閱讀:

一、二進制數轉換

二進制數轉換成十進制數

由二進制數轉換成十進制數的基本做法是,把二進制數首先寫成加權系數展開式,然後按十進制加法規則求和。這種做法稱為"按權相加"法。例1105把二進制數110.11轉換成十進制數。

二、十進制數轉換為二進制數

十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。

1、十進制整數轉換為二進制整數十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,

如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。

2、十進制小數轉換為二進制小數

十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。

然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。

⑹ c語言編程,如何將十進制轉化為2進制

c語言編程將十進制轉化為2進制可按手工轉換規則進行程序轉換。

  • 整數佔四個位元組,每位元組8位,共32位。所以,可以定義一個32位的數組來存儲轉換結果。

  • 循環將整數進行除2取余數,余數存儲到數組中。

  • 當整數整除為0時,結束循環

  • 逆序輸出數組,得到轉換結果

參考代碼:

#include<stdio.h>
voidmain()
{
intc[32],i=0,n;
scanf("%d",&n);//輸入待轉換整數n
do{
c[i++]=n%2;
n/=2;
}while(n!=0);

for(i--;i>=0;i--)
printf("%d",c[i]);
printf(" ");
}

⑺ 怎樣編程完成將十進制整數轉化為任意進制的數

這個是C語言的程序,有不懂的我們可以繼續探討。
#include<stdio.h>
#include<string.h>
void TentoAny(int number,char *str,int digits)
{
int i=0;
if(digits>16||digits<2)//非2~16進制則直接退出
return ;
while(number)
{
switch(number%digits)
{//根據余數的情簡雀況做相應處理
case 15:
str[i++]='F';
break;
case 14:
str[i++]='E';
break;
case 13:
str[i++]='D';
break;
case 12:
str[i++]='C';
break;
case 11:
str[i++]='B';
break;
case 10:
str[i++]='A';
break;
default:
str[i++]=number%digits+'0';
break;
}
number=number/digits;
}
str[i]='\0';
strrev(str);//strrev函數定義在string.h中的,是對字元串做逆序處理的函數
//這里需要逆序的原因是因為得到的結果為該進制襪亮的逆序
}
int main()
{
int number,i;
char str[80];
printf("輸入一個十進制數:");
scanf("%d",&number);
printf("\n---------2到攔好早16進制對應關系----------\n");
for(i=2;i<=16;i++)
{
TentoAny(number,str,i);
printf("%d轉換為%d進制為:%s\n",number,i,str);
}
return 0;
}
/*上面的的switch語句也可替換為如下代碼:
if(number%digits>=10)
{
str[i++]='A'+(number%digits-10);
}
else
{
str[i++]=number%digits+'0';
}*/

熱點內容
如何配置一台長久耐用的電腦 發布:2025-07-12 11:43:03 瀏覽:601
昆明桃源碼頭 發布:2025-07-12 11:38:45 瀏覽:568
大司馬腳本掛機 發布:2025-07-12 11:38:35 瀏覽:458
資料庫實時監控 發布:2025-07-12 11:31:33 瀏覽:743
vb6反編譯精靈 發布:2025-07-12 11:23:12 瀏覽:997
模擬存儲示波器 發布:2025-07-12 11:10:58 瀏覽:814
怎麼查看安卓真實運行內存 發布:2025-07-12 11:08:39 瀏覽:883
鏈接直接訪問 發布:2025-07-12 11:03:37 瀏覽:950
安卓如何把備忘錄轉為文檔 發布:2025-07-12 10:48:15 瀏覽:702
無法連接ftp主機 發布:2025-07-12 10:47:33 瀏覽:345