#4997. [客观题]进制转换程序阅读
[客观题]进制转换程序阅读
一.程序补全题
下列程序能够将输入的十进制整数转换成二进制并输出,尝试补全程序。
#include<bits/stdc++.h>
using namespace std;
int dTob(int d){
int b=①,q=②;
while(d>0){
int u=d%2;
b+=u*q;
d/=③;
q*=④;
}
return ⑤;
}
int main() {
int n;
cin>>n;
cout<<dTob(n);
return 0;
}
①
{{ select(1) }}
- 0
- 1
- -1
- d
②
{{ select(2) }}
- 0
- 1
- -1
- d
③
{{ select(3) }}
- 10
- 2
- u
- b
④
{{ select(4) }}
- 10
- 2
- u
- b
⑤
{{ select(5) }}
- u
- b
- d
- q
二.程序阅读题
阅读以下程序,回答问题
#include<bits/stdc++.h>
using namespace std;
int bToC(int b){
int c=0,q=1;
while(b>0){
c+=(b%10)*q;
b/=10;
q*=3;
}
return c;
}
int main() {
int n;
cin>>n;
cout<<bToC(n);
return 0;
}
- 输入122,程序将输出(){{ select(6) }}
- 17
- 16
- 15
- 14
- 该程序的作用是(){{ select(7) }}
- 把十进制的数转成三进制输出
- 把三进制数转成十进制输出
- 计算十进制数的数位和
- 计算三进制数的数位和
- 该程序在正常运行情况下,输出的取值范围是(){{ select(8) }}
- 为了解决该程序不能处理负数的问题,可以将第5行的b > 0改成b != 0(){{ select(9) }}
- 对
- 错
- 若输出结果为23,则输入的是(){{ select(10) }}
- 210
- 211
- 212
- 213
三.程序阅读题
阅读以下程序回答问题
#include<bits/stdc++.h>
using namespace std;
int fun(int b){
int d=0,q=1;
while(b>0){
d+=(b%2)*q;
b/=10;
q*=2;
}
return d;
}
int bToO(int b){
int res=0,q=1,f=1;
if(b<0){
f=-1;
b*=f;
}
while(b>0){//第18行
res+=fun(b%1000)*q;
b/=1000;
q*=10;
}
return res*f;
}
int main() {
int n;
cin>>n;
cout<<bToO(n);
return 0;
}
- 若输入10000,则输出结果为(){{ select(11) }}
- 2
- 10
- 20
- 100
- 若输入1011,则输出结果为(){{ select(12) }}
- 12
- 13
- 14
- 15
- 该程序能正常处理合理范围内的负数(){{ select(13) }}
- 对
- 错
- fun函数的功能是?(){{ select(14) }}
- 把二进制整数转化为十进制
- 把十进制整数转化为二进制
- 把二进制整数转化为八进制
- 把八进制整数转化为二进制
- 把第18行代码改成while(b),不改变程序的输出结果(){{ select(15) }}
- 对
- 错
四.程序阅读题
下列程序借助二进制与十六进制之间的特殊转换关系,实现十六进制正整数转换成二进制形式的过程.阅读程序回答问题
#include<bits/stdc++.h>
using namespace std;
int fun(int d){
int b=0,q=1;
while(d>0){
b+=(d%2)*q;
d/=2;
q*=10;
}
return b;
}
string hToB(string h){
string b="";
for(int i=h.size()-1;i>=0;i--){//第14行
int num;
if(h[i]>='A' && h[i]<='F'){
num=h[i]-'A'+10;
}else{
num=h[i]-'0';
}
string t=to_string(fun(num));//to_string函数能够将数字转成字符串形式,比如123转换为"123"
int cnt=4-t.size();//第22行
for(int j=0;j<cnt;j++){//第23行
t="0"+t;
}
b=t+b;
}
return b;
}
int main() {
string n;
cin>>n;
cout<<hToB(n);
return 0;
}
- 若输入1C,则输出(){{ select(16) }}
- 11100000
- 00011100
- 11100
- 28
- 若输出为101010111100,则输入应该为{{ select(17) }}
- AAB
- ABB
- ABC
- BBC
- 若输入中带有小写字母,则该程序会发生哪种错误?(){{ select(18) }}
- 死循环
- 数组越界
- 输出错误
- 编译错误
- 将第22、23行合并为for (int j = 0; j < 4 - t.size(); j++),不影响程序输出结果(){{ select(19) }}
- 对
- 错
- 把第14行改写成for(int i=0;i<h.size();i++) 不影响程序输出结果(){{ select(20) }}
- 对
- 错
五.程序阅读题
下列程序中的dToTC函数是将十进制整数转换成八位二进制原码,dToOC函数是将十进制整数转换成八位二进制反码,请阅读程序回答以下问题
#include<bits/stdc++.h>
using namespace std;
int dToB(int d){
int b=0,q=1;
while(b>0){
b+=(d%2)*q;
d/2;
q*=10;
}
return b;
}
string dToTC(int d){
string f=①;
if(d<0){
f=②;
d*=-1;
}
string tc=to_string(dToB(d));
int cnt=③-tc.size();
for(int i=0;i<cnt;i++) tc="0"+tc;
return f+tc;
}
string dToOC(int d){
string oc=dToTC(d);
if(d<0){
for(int i=④;i<8;i++){
oc[i]=⑤;
}
}
return oc;
}
int main() {
int n;cin>>n;
cout<<dToTC(n)<<' '<<dToOC(n);
return 0;
}
- 该程序可以正确处理输入的合理范围内的负整数(){{ select(21) }}
- 对
- 错
- 该程序能正确处理的数据范围是-128~127{{ select(22) }}
- 对
- 错
- ①②③处依次应填(){{ select(23) }}
- "0","1",7
- "1","0",7
- "0","1",8
- "1","0",8
- ④处应填(){{ select(24) }}
- 0
- 1
- 2
- 3
- ⑤处应填(){{ select(25) }}
- 1-oc[i]+'0'
- oc[i]-'0'+1
- 1-(oc[i]-'0')+'0'
- 0-(oc[i]-'1')+'1'