代码练习系列:问题 B 数制转换
2017-11-08 16:23
267 查看
题目描述
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。
输入
输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
输出
可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,…,9,A,B,…,F)。
样例输入
4 123 10
样例输出
27
提示
用字符串存储和表示不同进制的数。
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。
输入
输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
输出
可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,…,9,A,B,…,F)。
样例输入
4 123 10
样例输出
27
提示
用字符串存储和表示不同进制的数。
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int m,b,n; while(scanf("%d %d %d",&m,&b,&n) != EOF){ int y = 0,product = 1; while(b != 0){ y += (b % 10) * product; b /= 10; product *= m; } char c[40]; itoa(y,c,n); int num = strlen(c); for(int i = 0;i < num;i++){ if(c[i]>='a'&&c[i] <='f'){ c[i] = c[i] - 32; } printf("%c",c[i]); } printf("\n"); } return 0; }
#include <stdio.h> #include <string.h> int main() { int m,b,n; while(scanf("%d %d %d",&m,&b,&n) != EOF){ int y = 0,product = 1; while(b != 0){ y += (b % 10) * product; b /= 10; product *= m; } char z[40]; int num = 0; do{ if(y % n < 10){ z[num++] = y % n + '0'; }else{ z[num++] = (y % n - 10) + 'A'; } y = y / n; }while(y != 0); for(int i = num - 1;i >= 0;i--){ printf("%c",z[i]); } printf("\n"); } return 0; }
相关文章推荐
- 代码练习系列:问题 G 数字分类 (20)
- 代码练习系列:问题 A 统计同成绩学生人数
- 代码练习系列:问题 B Day of Week
- 代码练习系列:问题 E 学生查询
- 代码练习系列:问题 A 日期差值
- 代码练习系列:问题 D 八进制
- 代码练习系列:问题 E 日期累加
- 代码练习系列:问题 H 部分A+B (15)
- 代码练习系列:问题 A 又一版 A+B
- 代码练习系列:问题 C 等腰梯形
- 代码练习系列:问题 C 打印日期
- 代码练习系列:问题 F A+B和C (15)
- 代码练习系列:问题 A 字符串连接
- 代码练习系列:问题 B Hello World for U
- 代码练习系列:问题 C 进制转换【转载】
- 代码练习系列:问题 A 输出梯形
- C#基础系列问题六整洁代码(转)
- 动手敲代码——栈(经典问题练习)
- 练习程序:算法系列14:狼、羊、菜和农夫过河问题
- 数学建模常用Matlab/Lingo/c代码总结系列——最小费用最大流问题