① 用c語言編寫函數,將輸入的十進制數轉換成十六進制數並輸出
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intmain(void){
unsignedn,i,k;
printf("Pleaseenterapositiveinteger... n=");
scanf("%d",&n);
printf("%d(10)=0x",n);
if(n){
for(i=0;(n&0xf0000000)==0;n<<=4,i++);
for(;i<8;i++){
k=n&0xf0000000;
(k>>=28)&=0x0f;
printf("%c",k<10?k+'0':k+0x37);
n<<=4;
}
}
elseprintf("0");
printf(" ");
return0;
}
② 在C語言中如何將10進制轉換成16進制
根據10進制轉換為16進制的規則,編寫C語言程序將10進制數轉換為16進制數。
具體實現方法可參考如下程序:
#include<stdio.h>
voidmain()
{
inti,x;//x表示欲轉換的10進制數
intdata[10],index=0;//data數組存放轉換後的16進制數,index表示下標
scanf("%d",&x);//接受欲轉換的10進制數
for(i=0;i<10;i++)//對數組data進行初始賦值操作
data[i]=0;
printf("%d對應的16進制為:",x);
//反復相除取余,並將余數存放在data數組中
while(x>0)
{
data[index]=x%16;
x=x/16;
index++;
}
//逆序輸出data數組中的元素,即為10進制數對應的16進制數
for(i=index-1;i>=0;i--)
printf("%d",data[i]);
printf(" ");
}
③ 用C語言如何把十進制轉換為十六進制,要求程序中運用函數
**
程序功能:求二進制,十進制,八進制
創建人:蒲宇林
創建日期:2007年8月13日
**/
#include
void
two();
void
eight();
void
sixteen();
/**主函數**/
void
main()
{
int
select;
do
{
printf("0
-
退出,1
-
十進制轉二進制,2
-
十進制轉八進制,3
-
十進制轉十六進制");
scanf("%d",&select);
switch(select)
{
case
1
:
two();
break;
//十進制轉二進制
case
2
:
eight();
break;
//十進制轉八進制
case
3
:
sixteen();
break;
//十進制轉十六進制
default
:
printf("您的輸入有誤,請重新輸入!");
break;
}
if(select
==
0)
{
break;
}
}while(1);
}
void
two()
{
int
num,
i;
int
arr[20];
printf("\n請輸入一個十進制數:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//轉換為二進制並存入數組
{
arr[i]
=
num
%
2;
num
=
num
/
2;
if(num
==
0)
{
break;
}
}
printf("轉換為二進制:");
//列印
for(;
i
>=
0
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
eight()
{
int
num,
i;
int
arr[20];
printf("\n請輸入一個十進制數:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//轉換為八進制並存入數組
{
arr[i]
=
num
%
8;
num
=
num
/
8;
if(num
==
0)
{
break;
}
}
printf("轉換為八進制:");
//列印
for(;
i
>=
0
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
sixteen()
{
int
num,
i;
int
arr[20];
printf("\n請輸入一個十進制數:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//轉換為二進制並存入數組
{
arr[i]
=
num
%
16;
num
=
num
/
16;
if(num
==
0)
{
break;
}
}
printf("轉換為十六進制:");
//列印
for(;
i
>=
0
;
i--
)
{
switch(arr[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",arr[i]);
}
}
printf("\n");
}
④ c語言 十進制轉換為十六進制
#include <stdio.h>
#include <string.h>
#include <math.h>
void string2int(int *a,char dec[][30],int);
int main() {
int num=0,num2,hh[60];
int k,l,n=0;
char str[60][30];
printf("輸入樣例個數:");
scanf("%d",&k);
for(l=0;l<k;l++)
scanf("%d",hh+l);
string2int(hh,str,k);
for(n=0;n<k;n++){
k=strlen(str[n]);
for(l=k-1;l>=0;l--)
printf("%c",str[n][l]);
printf("\n");
}
return 0;
}
void string2int(int *h,char dec[][30],int len) {
int i ;
int p = 0;
int num=0;
char tmp,n[16]=
{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
for(i=0;i<len;i++){
do{
num=h[i]%16;
tmp=n[num];
dec[i][p]=tmp;
p++;
h[i]/=16;
}while(h[i]);
dec[i][p]='\0';
}
}
⑤ 求c語言將十進制數轉換為16進制的函數
c語言將十進制數轉換為16進制的函數:
#include<stdio.h>
main()
{
int u10;
char u16[10];
int w=0,a,b,i;
printf("請輸入一個數字-->");
scanf("%d",&u10);
if(u10==0)
{
u16[0]='0';
w++;
}
else
{
a=u10;
while(a)
{
b=a%16;
if(b<10)
{
u16[w]='0'+b;
}
else
{
u16[w]='A'+b-10;
}
a=a/16;
w++;
}
}
printf("
");
printf("%d(10)轉換為16進制數字為:",u10);
for(i=w-1;i>=0;i--)
{
printf("%c",u16[i]);
}
printf("
");
}
(5)如何十進制轉十六進制c語言函數擴展閱讀:
十進制數轉換為二進制數方法
十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。
1. 十進制整數轉換為二進制整數 十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。
2.十進制小數轉換為二進制小數
十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。
然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。
⑥ C語言十進制轉十六進制數
C語言十進制轉十六進制數的源代碼如下:
#include<bits/stdc++.h>
using namespace std;
void IntZh0x(int n)
{int s=n%16;
if(n/16!=0) IntZh0x(n/16);
if(s>9)
{
if(s==15) cout<<"F";
else if(s==14) cout<<"E";
else if(s==13) cout<<"D";
else if(s==12) cout<<"C";
else if(s==11) cout<<"B";
else if(s==10) cout<<"A";
}
else cout<<s;
}
int main(){
int n;
cin>>n;
IntZh0x(n);
return 0;
}
(6)如何十進制轉十六進制c語言函數擴展閱讀
1、十六進制數轉換成十進制數解,其值為各個位碼乘以位權然後完全相加。
2、十六進制就是把 4 個二進制位組合為一位來表示,每一位有0b0000 ~ 0b1111 共 16 個值,用 0 ~ 9 再加上 A ~ F(或 a ~ f)表示,那麼它自然就是逢十六進位,它本質上同二進制是一樣的,是二進制的一種縮寫形式。
⑦ 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;}
(7)如何十進制轉十六進制c語言函數擴展閱讀:
還有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;}
⑧ 怎樣用C語言編寫一個程序將輸入的十進制數轉化成16進制
你可以設置一個字元串數組
char HEX[16] = {'0', '1', '2', 3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}
以後你得出的數字,比如余數y是10,那麼HEX[y]列印出來就是A了
例子(現寫的)
int now;
int res[100];//答案
int c = 0;//位數
輸入到now;
while (now > 0)
{
res[c] = now % 16;
now = now / 16;
c++;
}
輸出是:
for (i = 0; i < c; i++)
{
輸出 HEX[res[i]];
}
演算法的精髓都給你啦,好好理解吧
/**********************************************
**************** 補充 *****************
**********************************************/
改你的代碼
#include "stdio.h"
void main()
{
char HEX[16] = {'0', '1', '2', 3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; //<----------------這里加了
int num;
printf("請輸入一個十進制整數:");
scanf("%d",&num);
int a[10]; //<----------------這里改了
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
a[i]=yushu;
num=num/16;
i++;/*關鍵的就在這里,這後面書上寫的要用SWITCH,但是我用不好,請各位大蝦指教*/
}
printf("轉化為十六進制的數為:");
for(;i>=0;i--)//倒序輸出
{
printf("%c",HEX[a[i]]); //<----------------這里改了
}
printf("\n");
}
⑨ C語言編程:怎麼把一個十進制數轉換成為一個十六進制數
第一種:用來糊弄老師的,輸入一個數採用16進制格式輸出
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
printf("%x", num);
return 0;
}
第二種:
#include <stdio.h>
#include <string.h>
char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
void dToO(int, char*);
int main()
{
int dNum;
char oNum[100] = {0};
//輸入一個十進制數
scanf("%d", &dNum);
//調用轉換函數,將十進制轉換成以字元串表示的十六進制
dToO(dNum, oNum);
//輸出以字元串表示的16進制數據
printf("%s\n", oNum);
return 0;
}
void dToO(int dNum, char* oNum)
{
char temp[100] = {0};
for (int i = 0; (dNum) && (i < 100) ; i++) {
temp[i] = (dNum % 16);
if (temp[i] > 9) {
temp[i] = oNumTable[temp[i] - 10];
}
else{
temp[i] += '0';
}
dNum /= 16;
}
char* p = temp;
while (*(p+1)) p++;
for (int i = 0; p != temp - 1; i++, p--) {
oNum[i] = *p;
}
}
⑩ c語言編一函數將一十進制整數轉換為十六進制整數,謝謝
最簡單了
根據格式化輸出函數printf()就可以了
例如:
a=10;
printf("%xd",a);
輸出結果就是十六進制的了即:16