进制转换(2023年9月C++四级))
时间限制:1.0 s
内存限制:128.0 MB
问题描述
N进制数指的是逢N进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A 至 F 表示十至十五;本题中,十一进制到十五进制也是类似的)。
在本题中,我们将给出N个不同进制的数。你需要分别把它们转换成十进制数。
提示
对于任意一个L位K进制数,假设其最右边的数位为第0位,最左边的数位为第L-1位,我们只需要将其第i位的数码乘以权值Ki ,再将每位的结果相加,即可得到原K进制数对应的十进制数。下面是两个例子:
1. 八进制数 1362 对应的十进制数为1×83+3×82+6×81+2×80=754 ;
2. 十六进制数 3F0 对应的十进制数为 3×162+15×161+0×160=1008。
输入描述
输入的第一行为一个十进制表示的整数N。接下来N行,每行一个整数K,随后是一个空格,紧接着是一个K进制数,表示需要转换的数。保证所有 进制数均由数字和大写字母组成,且不以 0 开头。保证K进制数合法。
保证N≤1000;保证2≤K≤16
保证所有K进制数的位数不超过9。
输出描述
输出N行,每一个十进制数,表示对应K进制数的十进制数值。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入 1
2
8 1362
16 3F0
样例输出 1
754
1008
样例输入 2
2
2 11011
10 123456789
样例输出 2
27
123456789
相似题推荐
下面程序执行后输出 2010 。
int x = 10;
void f() { int x = 20; cout << x; }
int main() {
f();
cout << x;
} | A.正确 | B.错误 |
下面程序可以正常编译并输出 10 。
int calc(int x, int y = 10);
int calc(int x) { return x * 2; }
int calc(int x, int y) { return x * y; }
int main() {
cout << calc(5);
} | A.正确 | B.错误 |
下面程序能够把 Hello 写入 data.txt 文件中。
ofstream fout("data.txt");
cout << "Hello";
fout.close(); | A.正确 | B.错误 |
执行 climb(6) 的返回值为( )。
int climb(int n){
if(n <= 2) return n;
int a = 1, b = 2, c = 0;
for(int i = 3; i <= n; i++){
c = a + b;
a = b;
b = c;
}
return c;
} | A. 8 |
B. 13 |
| C. 5 |
D. 10 |
已知:
int a[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int (*p)[4] = a;则表达式 *(*(p + 2) + 1) 的值为( )。
| A. 6 |
B. 10 |
| C. 9 |
D. 11 |
