输入一个十六进制的字符串,输出其相应的十进制数。

版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/87876800

1. 题目

输入一个十六进制的字符串,以\n结束,输出其相应的十进制数。
解:如16进制数ABC化为10进制……
ABC(16)÷10 = 112 余 8
112(16)÷10 = 1B 余 4
1B(16)÷10 = 2 余 7
2(16)÷10 = 0 余 2
反向取余数是2748(10)

2. 代码

#include <stdio.h>
#include <string.h>
#include <math.h>
#define max 100
int main() {
	char s[max];
	int date=0,i=0,len,temp;
	printf("请输入字符串:");
	gets(s);
	len = strlen(s) - 1;
	while(s[len]!='\0') {
		if(s[len]>='0'&&s[len]<='9') {
			temp = (s[len]-'0')*pow(16,i);
			date = date + temp;
		}
		if(s[len]>='a'&&s[len]<='f') {
			temp = (s[len]-'a'+10)*pow(16,i);
			date = date + temp;
		}
		if(s[len]>='A'&&s[len]<='F') {
			temp = (s[len]-'A'+10)*pow(16,i);
			date = date + temp;
		}
		len--;
		i++;
	}
	printf("字符串%s转换成十进制数为%d",s,date);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/nanhuaibeian/article/details/87876800