Sample Input
4
7
44
0x80685
-1
Sample Output
0x4
0x7
0x2C
525957
问题链接:UVA10473 Simple Base Conversion
问题简述:(略)
问题分析:这是一个进制转换问题。
- #include <cstdio>
- int main()
- {
- char str[32];
- while (gets(str)) {
- int n;
- if (str[1] == 'x') {
- sscanf(str,"%x",&n);
- printf("%d\n", n);
- } else {
- sscanf(str,"%d",&n);
- if (n < 0) break;
- printf("0x%X\n",n);
- }
- }
- return 0;
- }
本题中,C语言的sscanf将输入的字符串以所需要的形式(%x为十六进制,%d为十进制整数)存入n中,n再以printf函数用相应形式输出。sscanf巧妙的在内部进行进制转换后再存入n。不用我自行转换。
关于强大的sscanf可用上类似正则表达式的方法截取字符串,详见:http://blog.csdn.net/zhouwei1221q/article/details/44890617