方法壹:
#include<stdio.h>
#include<math.h>
#include<string.h>
void xtod(char s[]);//定義轉制函數
int main()
{
char str[10];
printf("Please enter Hex number:");//輸入壹個字符串
scanf("%s",str);
xtod(str);//調用轉制函數
return 0;
}
//轉制函數
void xtod(char s[])
{
int i,j,n=strlen(s);
double num[10],sum;
//以下是判斷輸入的數是否是合法的十六進制數,不是就報錯並重新輸入
for(i=0;i<n;i++)
if(s<i><'0'||
(s<i>>'9'&&s<i><'A')||s<i>>'f'||
(s<i>>'F'&&s<i><'a')||n>10){
printf("Error!\nPlease enter Hex number:");
scanf("%s",s);
}
//以下將輸入的字符轉換為十進制數字
for(i=0;i<n;i++){
if(s<i>>='0'&&s<i><='9')
num<i>=s<i>-'0';
if(s<i>>='a'&&s<i><='f')
num<i>=(int)s<i>-87;
if(s<i>>='A'&&s<i><='F')
num<i>=(int)s<i>-55;
}
//將數字轉為十進制
for(i=0,j=n-1,sum=0.0;i<n;
sum+=num<i>*pow(16,j),i++,j--);
printf("Decimal number:%.0f\n",sum);
}
方法二、
#include<stdio.h>
void xtod(int x);//定義轉制函數
int main()
{
int i;
scanf("%x",&i);//輸入壹個十六進制數
xtod(i);//調用轉制函數
return 0;
}
//轉制函數
void xtod(int x)
{
printf("%d\n",x);
}
擴展資料:
①printf()函數是格式化輸出函數,壹般用於向標準輸出設備按規定格式輸出信息。
格式輸出,它是c語言中產生格式化輸出的函數(在stdio.h中定義)。用於向終端(顯示器、控制臺等)輸出字符。格式控制由要輸出的文字和數據格式說明組成。
要輸出的文字除了可以使用字母、數字、空格和壹些數字符號以外,還可以使用壹些轉義字符表示特殊的含義。
簡單點理解就是,在壹段程序中妳正確使用該函數,可以在該程序運行的時候輸出妳所需要的內容。
②printf函數是壹個標準庫函數,它的函數原型在頭文件“stdio.h”中。但作為壹個特例,不要求在使用printf函數之前必須包含stdio.h文件。
printf()函數的調用格式為:printf("<格式化字符串>",<參量表>)。
其中格式化字符串用於指定輸出格式。格式控制串可由格式字符串和非格式字符串兩種組成。
格式字符串是以%開頭的字符串,在%後面跟有各種格式字符,以說明輸出數據的類型、形式、長度、小數位數等。
如“%d”表示按十進制整型輸出,“%ld”表示按十進制長整型輸出,“%C”表示按字符型輸出等。
非格式字符串在輸出時原樣照印,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式字符串和各輸出項在數量和類型上應該壹壹對應。
參考資料:
百度百科——printf