分析:
? ? 當用戶運行該程序時,程序會提示用戶輸入一個十六進制數(shù)。用戶需要在命令行中輸入一個有效的十六進制數(shù),例如:"1A3F"。
? ? 接下來,程序調用了名為 xbed 的函數(shù),并將用戶輸入的十六進制數(shù)作為參數(shù)傳遞給該函數(shù)。
在函數(shù) xbed 中,我們定義了兩個變量 i 和 sum,其中 i 用于循環(huán)遍歷輸入的十六進制數(shù),sum 用于存儲最終的十進制值。
? ? ?然后,使用一個 for 循環(huán)來遍歷輸入的十六進制數(shù)。在每次循環(huán)中,我們首先檢查當前字符是否在 '0' - '9' 的范圍內,如果是,則表示該字符是一個數(shù)字。我們將其轉換為對應的十進制數(shù),并更新 sum 變量。
? ? 如果當前字符不是數(shù)字,則繼續(xù)檢查它是否在 'A' - 'F' 或 'a' - 'f' 的范圍內。如果是,則表示該字符是一個字母(A-F或a-f)。我們將其轉換為對應的十進制數(shù),并更新 sum 變量。
? ? 如果當前字符既不是數(shù)字也不是字母,則說明輸入的字符串不是一個有效的十六進制數(shù)。程序輸出一條錯誤提示信息,并使用 exit 函數(shù)終止程序的執(zhí)行。
? ? 當循環(huán)結束后,我們打印出轉換后的十進制數(shù) sum。
代碼:
#include<stdlib.h>
int main()
{
void xbed(char b[]);
int i = 0;
char a[10000];
printf("十六進制:");
scanf("%s", a);
xbed(a);
}
void xbed(char a[])
{
int i = 0, sum = 0;
for(;a[i];i++)
{
if (a[i] >= '0' && a[i] <= '9')
sum = sum * 16 + a[i] - 48;
else if (a[i] >= 'A' && a[i] <= 'F')
sum = sum * 16 + a[i] - 55;
else if (a[i] >= 'a' && a[i] <= 'f')
sum = sum * 16 + a[i] - 87;
else
printf("這不是16進制"); exit(EXIT_FAILURE);
}
printf("十進制:");
printf("%d\n", sum);
}
運行結果:文章來源:http://www.zghlxwxcb.cn/news/detail-759247.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-759247.html
到了這里,關于C語言:寫一個函數(shù),輸入一個十六進制數(shù),輸出相應的十進制數(shù)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!