编程练习:进制转换(16→10)
程序员文章站
2024-03-17 13:25:40
...
思路:通过ASCII码获取整型数字存入数组,十六进制:0-9 A-F或a-f(0~15),非法字符不存入数组
根据数组中元素的下标计算出该位置的元素转换后的十进制值,求和后输出
※注意数字范围※
//进制转换:16进制数 →十进制
//注意输入的范围
//16进制:0-9 A-F(0~15)
//逐个字符存入数组中getchar
#include<stdio.h>
#include<math.h>
int main(){
int a[100]={0},i,j,k;
long long num;
char c;
i=0;num=0;
while((c=getchar())!='\n'){
if(c>='A'&&c<='F'){//A--65
a[i]=(int)c-55;
}
else if(c>='a'&&c<='f'){//a--97
a[i]=(int)c-87;
}
else if(c>='0'&&c<='9'){//0--48
a[i]=(int)c-48;
}
else{
i--;//非法字符不存入数组中
}
i++;
}//i最终的值为数组的实际长度
for(j=0;j<i;j++){
k=i-j-1;
num=num+a[j]*pow(16,k);
}
printf("%lld",num);
return 0;
}
上一篇: FreeMarker页面静态化