㈠ c語言十進制轉化為十六進制
十進制轉化為十六進制代碼:
#include"stdio.h"intmain()
{
intnum=0;
inta[100];
inti=0;
intm=0;
intyushu;
charhex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("請輸入一個十進制數:");
scanf("%d",&num);while(num>0){yushu=num%16;
a[i++]=yushu;
num=num/16;
}printf("轉化為十六進制的數為:0x");for(i=i-1;i>=0;i--)//倒序輸出{m=a[i];
printf("%c",hex[m]);}printf(" ");
}
程序運行結果:
(1)c語言初始化16進制數擴展閱讀:
進制轉換由一組數碼符號和兩個基本因素「基數」與「位權」構成。基數是指,進位計數制中所採用的數碼(數制中用來表示「量」的符號)的個數。位權是指,進位制中每一固定位置對應的單位值。
舉例:二進制數轉換為十進制數
二進制數第0位的權值是2的0次方,第1位的權值是2的1次方……
所以,設有一個二進制數:0110 0100,轉換為10進制為:
下面是豎式:
0110 0100 換算成十進制
第0位 0 * 20= 0
第1位 0 * 21= 0
第2位 1 * 22= 4
第3位 0 * 23= 0
第4位 0 * 24= 0
第5位 1 * 25= 32
第6位 1 * 26= 64
第7位 0 * 27= 0
公式:第N位2(N)
---------------------------
100
用橫式計算為:
0 * 20+ 0 * 21+ 1 * 22+ 0 * 23+ 0 * 24+ 1 * 25+ 1* 26+ 0 * 27= 100
0乘以多少都是0,所以我們也可以直接跳過值為0的位:
1 * 22+ 1 * 25+1*26= 100
㈡ 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語言將十進制數轉換為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("
");
}
(3)c語言初始化16進制數擴展閱讀:
十進制數轉換為二進制數方法
十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。
1. 十進制整數轉換為二進制整數 十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。
2.十進制小數轉換為二進制小數
十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。
然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。
㈣ C語言如何定義一個16進制數
例:
int main(){
int a;
scanf("%p",&a);//16進制數輸入%p是輸入一個十六進制的數scanf("%llx",&a);也可以輸入十六進制並且比較正規
printf("%d",a);//十進制輸出%d是輸出一個十進制的數
printf("0x%x",a);//16進制輸出printf("%llX ",a);也可輸出一個十六進制數如果紅色部分大寫X則輸出十六進制為大寫字母否則小寫x輸出為小寫字母
}
參考:
最大數字是15位,沒有超過__int64能表達的最大數。__int64最大能表示16位十六進制數。所以直接進行加減就行了,需要注意的是輸入輸出的格式以及十六進製表達負數的時候顯示的是補碼。
#include<stdio.h>
int main(void)
{
long long a,b,result;
while(scanf("%llx%llx",&a,&b)!=EOF){
result=a+b;
if(result>=0)
printf("%llX ",result);
else
printf("-%llX ",-result);
}
return 0;
}
long long 類型格式字元:
(4)c語言初始化16進制數擴展閱讀:
return用法:
作用是結束正在運行的函數,並返回函數值。return後面可以跟一個常量,變數,或是表達式。
函數的定義一般是這樣的,例如:
int a(int i)//第一個int是函數的返回值的類型,也就是return後面跟的值的類型,a是函數的名稱,括弧里的是傳遞給函數的參數,int是參數的類型,i是參數的名字
{
...//省略函數體內容
return b;//b必須與函數頭的返回值一致(此處為int型)
}
簡單函數舉例:
int addOne(int b)
{
return b+1;
}
該函數的作用是取得一個數,將這個數加上1,再將結果返回
調用時這樣:
int result=addOne(2);//此時result的值為3
函數括弧里的參數也可以為變數或能算出值的表達式
以上就是一個基本的函數,一般的函數都有返回值,也就是return後面跟的值,返回值可以為各種數據類型,如:int,float,double,char,a[](數組),*a(指針),結構或類(c++)
但不是所有函數都有返回值,如果某個函數無返回值,那麼返回值的位置則為「void」關鍵字,此時函數體中無返回值,即無return的值。但是函數中也可出現return,即一個空的return句子,其作用是使函數立即結束,如
void print()//括弧中為空表示無傳遞參數
{
printf("a");
printf("b");
return;//函數執行到此處結束
printf("c");
}//該函數只執行到return語句處,即屏幕上輸出的為"ab"
㈤ C語言中十六進制數
整型數據的十六進制數表示,
unsigned
int
hex_val
=
0x123;
//定義了一個整型變數並賦以初始值為一個十六進制常量。
if
(scanf("%x",
&hex_val)
!=
EOF)
{
printf("它的八、十進制分別=%o、%d\n",
hex_val,
hex_val);
}
也可以輸入一個由0-9-A-F中組成的連續的字元序列,然後檢查它是否為合法的十六進制數格式,最後,如果需要,可用函數strtoul將這個字元串指針作為base參數轉換成數值。
㈥ 在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語言中用最簡單的方法把十進制轉化為十六進制
代碼如下:
#include"stdio.h"
intmain()
{
intnum=0;
inta[100];
inti=0;
intm=0;
intyushu;
charhex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("請輸入一個十進制整數:");
scanf("%d",&num);
while(num>0)
{
yushu=num%16;
a[i++]=yushu;
num=num/16;
}
printf("轉化為十六進制的數為:0x");
for(i=i-1;i>=0;i--)//倒序輸出{
m=a[i];
printf("%c",hex[m]);
}
printf("
");
}
程序運行結果:
(7)c語言初始化16進制數擴展閱讀
C語言中,十進制轉換十六進制,可以先輸入十進制整數,然後去拼十六進制,十六進制由數字 0~9、字母 A~F 或 a~f(不區分大小寫)組成,使用時必須以0x或0X(不區分大小寫)開頭,只需把二進制除以16得到余數去上面定義的hex[16]數組進行取值接可以得到轉換的數字。
㈧ 10進制轉16進制c語言
用一個字元數組,初始化為「1,2,3,4,5,6,7,8,9,A,B,C,D,E,F」,也就是0到15
用十進制的數不斷模上16,得到的余數進入到一個棧中。計算完之後從棧中取值,在數組當中去找出數字,輸出就可以了
㈨ 用C語言編一個將十進制整數轉化為16進制數的程序
最簡單的,不涉及演算法的作法就是用printf的輸出格式 %x 輸出16進制
%x 輸出小寫的a、b、c、d、e、f %X輸出大寫的A、B、C、D、E、F
#include"stdio.h"
int main()
{
int a;
printf("請輸入一個10進制整數:" );
scanf( "%d", &a);
printf("該數轉換為16進制數為: %X\n",a);
return 0;
}
詳細的轉化方法:
#include <stdio.h>
int x[100];
int jzzh(int y,int ml)
{
int i,a;
i=ml;
x[0]=0;
for(a=1;;a++)
{
if(i!=0)
{
x[a]=i%y;
x[0]++;
}
else
break;
i=i/y;
}
return x[0];
}
int main()
{
long int y,ml;
long int a;
printf("請輸入需要轉換至進制數:");
scanf("%d",&y);
printf("請輸入數字:");
scanf("%d",&ml);
jzzh(y,ml);
for(a=x[0];a>=1;a--)
{
if(x[a]>=10)
{
printf("%c",x[a]+55);
}
else
{
printf("%d",x[a]);
}
}
printf("\n");
return 0;
}