例题(12.9) 数制转换
来源:互联网 发布:axure7 for mac 编辑:程序博客网 时间:2024/05/09 07:46
描述求任意两个不同进制非负整数的转换(2进制~36进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,...,9,a,b,...,z)或者(0,1,...,9,A,B,...,Z)。关于输入输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。 a,b是十进制整数,2 ≤ a,b < 36。关于输出输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,Z)。例子输入
不同进制的表示符号为(0,1,...,9,a,b,...,z)或者(0,1,...,9,A,B,...,Z)。关于输入输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。 a,b是十进制整数,2 ≤ a,b < 36。关于输出输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,Z)。例子输入
15 Aab3 7
例子输出210306
提示可以用字符串表示不同进制的整数#include <stdio.h>char symbol[256];/* 数对应的符号 */int value[256];/* 符号代表的数 */void setup(){int j;for (j = 0; j < 10; ++j){symbol[j] = '0' + j;value['0' + j] = j;}for (j = 10; j < 36; ++j){symbol[j] = 'A' + j - 10;value['A' + j - 10] = j;value['a' + j - 10] = j;}}long from_base(char *n, int a){long x = 0;while (*n){x = a * x + value[*n];n++;}return x;}char *to_base(long x, char *s, int b){do{*(--s) = symbol[x%b];x = x / b;} while (x);return s;}int main(){int a = 0, b = 0;char n[256] = { 0 };long x = 0;char *p = 0;scanf("%d %s %d", &a, n, &b);setup();x = from_base(n, a);p = to_base(x, n + 255, b);printf("%s\n", p);return 0;}
0 0
- 例题(12.9) 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- linux brctl
- Parallel 并发编程实例
- 最近使用karaf+Jetty使用feature碰到了很多问题
- 画图键盘快捷方式
- 如果劳务派遣用工超比例,可能要被重罚
- 例题(12.9) 数制转换
- 利用ashx操作OleDb数据库返回json数据
- 手机产品设计禁忌
- 学习10分钟,改变你的程序员生涯
- C#--总结
- 20141227 【 RFID 2.4GHz 读写器及标签代码 】
- 2-2-2 判断语句-流程图
- 分糖果
- glib配置错误