题目
本题是谭浩强《C程序设计课后习题》题7.16。
题目:
16、写一个函数,输人一个十六进制数,输出相应的十进制数。
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、解题思路
思路:
根据十六进制转10进制的规律进行转换:
1,每进一位需要乘以16
2,是大写字母时,需要将大写字母-字符A再+10
3,是小写字母时,需要将小写字母-字符a再+10
4,是0-9之间的数时,因为原来的数据是字符型,我们需要将其减去一个字符型的0才能变成整形参与运算。
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.主函数部分
代码如下(示例):
int Transpose(char str[]){int i = 0;int n=0;while (str[i]){if (str[i] >= 'A' && str[i] <= 'Z')n = n * 16 + str[i] - 'A' + 10;if (str[i] >= 'a' && str[i] <= 'z')n = n * 16 + str[i] - 'a' + 10;if (str[i] >= '0' && str[i] <= '9')n = n * 16 + str[i]-'0';//必须要加上-‘0’,这样保证两边是整形数据运算。i++;}return n;}void main(){char str[128];printf("请输入一个十六进制数:");gets(str);printf("Ox%s=%d", str, Transpose(str));}
三、执行结果
输入:
请输入一个十六进制数:1A
输出:
Ox1A=26