将之前一段时间在牛客上刷的题给大家分享一下。其中一道题是“进制转换”,较为简单,现在将通过的代码贴一下,供大家参考。
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示
#include <stdlib.h> #include <stdio.h> #include <string.h> int mihex(int count) { int mi=1; int i =0; for(i=0;i<count;i++) { mi*=16; } return mi; } int hextodec(char *input) { int len = strlen(input); int i=0; int sum=0; for(i=2;i<len;i++) { char c = input[i]; //printf('c=%c\n',c); if(c>='a'&&c<='f') { sum += ((c - 'a')+10)*mihex(len-i-1); } else if(c>='0'&&c<='9') { sum += (c - '0')*mihex(len-i-1); } else if(c>='A' && c<='F') { sum += ((c - 'A')+10)*mihex(len-i-1); } } return sum; } int main() { char inputstream[100]={0}; int a; //fgets(inputstream,sizeof(inputstream),stdin); //sscanf_s(inputstream,"0x%x",&a); while(scanf("%s",inputstream)!=EOF) { a = hextodec(inputstream); printf("%d\n",a); } }