|
|
发表于 3 天前
|
查看: 12 |
回复: 0
一、选择题解析
-
关于存储介质,以下选项中,不会因为附近强磁场干扰而损坏或丢失数据的存储介质是( )。
- A. 硬盘
- B. U盘
- C. 内存
- D. 光盘
- 解析:光盘是通过光学原理记录数据的,其数据不受磁场影响。硬盘、U盘(闪存)和内存(RAM/ROM)均使用磁性材料或电荷存储,易受强磁场干扰。答案为 D。
-
流程图如下图所示,当输入n为5时,输出的result为( )。
(流程图示意:开始 -> 输入n -> result=1, i=1 -> 判断 i<=n? -> 是: result=result*i, i=i+1 -> 否:输出 result -> 结束)
- A.
5
- B.
10
- C.
120
- D.
153
- 解析:流程图描述的是一个计算
n的阶乘(n!)的过程。5! = 5*4*3*2*1 = 120。答案为 C。
-
在C++语言中,以下哪个选项能正确表示double类型的数据( )。
- A.
3.1415
- B.
‘3’
- C.
"3.1415"
- D.
3
- 解析:
double是双精度浮点数类型。A选项是浮点数字面量;B选项是字符;C选项是字符串;D选项是整型。答案为 A。
-
已知大写字母‘A’的ASCII编码为65,则变量ch定义语句正确的是( )。
- A.
char ch = 65;
- B.
char ch = ‘65’;
- C.
char ch = “65”;
- D.
char ch = ‘\65’;
- 解析:
char类型变量可以用ASCII码整数值(A)或字符字面量(单引号)赋值。B是包含两个字符的写法,错误;C是字符串;D是转义字符,但\65是八进制,对应十进制53的字符。要表示字符‘A’,A和char ch = ‘A’;均正确,但题目选项只有A符合。答案为 A。
-
以下C++代码执行后的输出是( )。
int main() {
int a = 3, b = 4;
a = a + b;
b = a - b;
a = a - b;
cout << a << “ “ << b;
return 0;
}
- A.
3 4
- B.
4 3
- C.
3 3
- D.
4 4
- 解析:这段代码是不借助临时变量交换
a和b的值。初始a=3, b=4。执行a = a+b后 a=7;b = a-b即b=7-4=3;a = a-b即a=7-3=4。最终a=4, b=3。答案为 B。
-
判断整数a是否能被5整除的C++表达式是( )。
- A.
a % 5 == 1
- B.
a % 5 == 0
- C.
a / 5 == 0
- D.
a / 5 == 1
- 解析:判断整除使用取模运算符
%。能被5整除意味着a除以5的余数为0。因此表达式应为a % 5 == 0。答案为 B。
-
以下C++代码执行后,输出是( )。
int main() {
int cnt = 0;
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue;
}
cnt++;
}
cout << cnt;
return 0;
}
- A.
10
- B.
9
- C.
5
- D.
4
- 解析:循环从
i=0到i=9。if (i % 2 == 0)判断i是否为偶数,若是则执行continue跳过本次循环中后面的cnt++语句。因此,只有奇数(1,3,5,7,9)会执行cnt++。奇数共有5个。答案为 C。
-
以下C++代码用于判断输入的整数是否为对称数(即逆序后与原数相同,如121)。则横线处应填入( )。
int main() {
int n, m, k;
cin >> n;
m = n;
________;
while (m) {
k = k * 10 + m % 10;
m = m / 10;
}
cout << (k == n ? “Y” : “N”);
return 0;
}
- A.
k = 1
- B.
k = n
- C.
k = 0
- D.
m = 0
- 解析:变量
k用于存储构造出的逆序数,其初始值必须为0,这样在循环k = k * 10 + m % 10中才能从个位开始正确拼接。例如n=121,k初始为0,循环后k依次变为1, 12, 121。答案为 C。
-
以下C++代码执行后的输出是( )。
int main() {
int sum = 0;
for (int i = 1; i < 20; i++) {
if (i % 3 == 0 || i % 5 == 0) {
sum += i;
}
}
cout << sum;
return 0;
}
- A. 求1到19所有数的和
- B. 求1到19中能被3或5整除的数的和
- C. 求1到19中能被3和5整除的数的和
- D. 以上说法都不正确
- 解析:循环条件
i < 20,因此i从1到19。判断条件i % 3 == 0 || i % 5 == 0,满足能被3整除或能被5整除的数,其i值会被累加到sum。答案为 B。
-
以下C++代码执行后的输出是( )。
int main() {
int a = 0, b = 0;
for (int i = 1; i < 10; i++) {
if (i % 2 == 0) {
a++;
} else {
b++;
}
}
cout << a << “ “ << b;
return 0;
}
- A.
5 5
- B.
4 5
- C.
5 4
- D.
4 4
- 解析:循环
i从1到9。a统计偶数个数,b统计奇数个数。偶数有2,4,6,8,共4个;奇数有1,3,5,7,9,共5个。答案为 B。
-
与if(a != 0)判断结果等价的C++表达式是( )。
- A.
!a
- B.
a == 0
- C.
a
- D.
a = 0
- 解析:
if(a != 0)判断a是否不等于0。在C++的条件判断中,非零值视为逻辑真(true),零值视为逻辑假(false)。因此if(a != 0)等价于if(a)(当a非零时为真)。选项A!a是逻辑非,当a为非零时!a为假,与原意相反。B是判断a是否等于0,与原意相反。D是赋值表达式,将0赋给a,然后判断赋值表达式的结果(0),永远为假。答案为 C。
-
以下C++代码用于判断输入的字符是否为英文小写字母,则横线处应填入( )。
int main() {
char ch;
cin >> ch;
if (________) {
cout << “是小写字母”;
} else {
cout << “不是小写字母”;
}
return 0;
}
- A.
‘a‘ <= ch <= ’z‘
- B.
ch - ‘a‘ <= 25
- C.
‘a‘ <= ch && ‘z‘ >= ch
- D.
ch >= ‘a‘ && ch <= ‘z‘
- 解析:判断一个字符
ch是否在小写字母a到z的范围内,需要同时满足ch >= ‘a‘和ch <= ‘z‘两个条件,用逻辑与&&连接。A选项的写法在数学上成立,但在C++中会先计算‘a‘ <= ch得到一个布尔值(0或1),再将这个布尔值与‘z‘比较,逻辑错误。B选项对大写字母也成立(例如‘C’-‘a’=-30 <=25)。C选项逻辑正确但书写顺序反了,可读性稍差。D选项是最标准和清晰的写法。答案为 D。
-
以下C++代码执行后的输出是( )。
int main() {
int a = 10, b = 50;
if (a < b) {
a = a + b;
b = a - b;
a = a - b;
}
cout << a << “ “ << b;
return 0;
}
- A.
10 50
- B.
50 10
- C.
60 -10
- D.
-40 90
- 解析:此代码与第5题类似,是交换操作,但包裹在一个
if(a < b)条件中。初始a=10, b=50,满足a<b,因此会执行交换操作。交换后a=50, b=10。答案为 B。
-
阅读以下C++代码,判断横线处填入哪个选项可以输出“偶数”( )。
int main() {
int num;
cin >> num;
if (________) {
cout << “偶数”;
} else {
cout << “奇数”;
}
return 0;
}
- A.
num % 2 = 0
- B.
num % 2 == 1
- C.
num / 2 == 0
- D.
num % 2 == 0
- 解析:判断偶数的条件是
num % 2 == 0。A选项是赋值表达式而非比较。B选项是判断奇数。C选项num/2==0仅在num为0或1时成立,不能判断偶数。答案为 D。
-
以下C++代码执行后,如果输入10,则输出是( )。
int main() {
int n, ans;
cin >> n;
if (n > 5 && n < 10) {
ans = n / 2;
} else if (n > 0) {
ans = n * 2;
} else {
ans = 0;
}
cout << ans;
return 0;
}
- A.
5
- B.
10
- C.
20
- D.
0
- 解析:输入
n=10。第一个条件n>5 && n<10(即5<n<10)不成立。进入else if判断n>0,成立,因此执行ans = n * 2,即ans=10*2=20。答案为 C。
二、判断题解析
-
在C++语言中,int类型数据在内存中占用4个字节。
- 解析:在C++标准中,
int类型所占的字节数取决于编译器和操作系统平台,通常是4个字节,但并非绝对(例如在某些嵌入式平台可能是2字节)。题目表述过于绝对。答案为 ×。
-
二进制数1010101按位取反后得到的结果是0101010。
- 解析:按位取反操作(
~)是对数据的所有二进制位进行反转。对于1010101(假设为7位),取反后应为0101010。但需要注意,在实际程序中,int类型的位数远多于7位,取反结果会包含很多前导1。不过仅就给出的7位二进制数而言,这个操作结果是正确的。但考虑到C++中整数的完整位数,表述不严谨。通常此类判断题默认在合适的位宽下判断。结合常见考法,此处可能判定为正确。但从严格意义上,整数位数未指明,结论不完全准确。根据常见解析,答案为 ×。(注:存在争议,但原题解析为×,可能考虑了整数默认位宽下的高位取反)
-
在C++语言中,main函数是程序的入口,每个程序都必须有且只有一个main函数。
-
在C++语言中,变量名可以以数字开头。
- 解析:C++变量命名规则规定,标识符(变量名、函数名等)必须以字母或下划线开头,不能以数字开头。答案为 ×。
-
在C++语言中,‘5‘是一个整数常量。
- 解析:单引号引起的是字符常量
‘5‘,其类型是char,ASCII码值为53,但它本身不是整数常量(如5)。答案为 ×。
-
在C++语言中,if语句的条件表达式必须用括号()括起来。
- 解析:
if语句的语法要求条件表达式必须放在括号内。答案为 √。
-
以下C++代码将输出3个“A”。
for (int i = 0; i < 3; i-- ) {
cout << “A”;
}
- 解析:循环变量
i初始为0,每次循环后执行i--(自减1),判断条件i < 3。i的值会从0变为-1, -2, -3 … 一直满足i < 3,因此这将成为一个无限循环,不会只输出3次。答案为 ×。
-
C++表达式(7.8 / 2)的计算结果是3.9,结果类型是double。
- 解析:
7.8是浮点数,2是整数,在除法运算中整数2会被提升为浮点数2.0,计算结果为3.9,类型为double。答案为 √。
-
以下C++代码将输出字符串“YZ”。
char ch = ‘X’;
ch += 2;
cout << ch;
- 解析:字符
‘X’的ASCII码为88。ch += 2后,ch的ASCII码变为90,对应字符‘Z’。因此输出是Z,而非“YZ”。答案为 ×。
-
C++表达式(‘B‘ - ‘A‘)的计算结果是1,结果类型是int。
- 解析:字符相减,实质是它们的ASCII码值相减。
‘B‘是66,‘A‘是65,结果为1。在C++中,字符类型char参与算术运算会自动提升为int类型,因此结果类型是int。答案为 √。
三、编程题思路点拨
编程题是检验算法与数据结构知识应用的关键。以下提供解题思路,强烈建议先独立思考和编写代码后再进行参考。
第1题:画三角形
【解题思路】
本题核心在于按行按列输出字符,并且字符需要按A到Z循环。
- 字符循环处理:初始化一个起始字符变量,例如
char current = ‘A’;。每输出一个字符后,将 current 加1 (current++)。当 current 超过 ‘Z‘ 时,需要将其重置为 ‘A‘。可以使用取模运算简化:‘A‘ + ( (当前序号 - 1) % 26 ),其中“当前序号”是从1开始计数的第几个字符。
- 双重循环结构:外层循环
i 控制行数(从1到n),内层循环 j 控制第i行输出的字符个数(从1到i)。在内层循环中计算并输出对应字符。
- 格式控制:每行输出完毕后输出换行符,并且注意题目要求右侧不要有多余空格,因此内层循环正常输出字符即可,不要在行尾添加空格。
【考纲知识点】 双重循环、判断。
第2题:百鸡问题
【解题思路】
这是一个经典的三元一次方程整数解问题,通常使用枚举法解决。
- 确定枚举范围:设公鸡数量为
a,母鸡数量为 b,小鸡数量为 c。根据题意,需要满足两个方程:
a * x + b * y + c / z = n (总花费为n,注意小鸡是z只1元)
a + b + c = m (总数量为m)
由于小鸡数量 c 必须是 z 的整数倍(因为按z只一份卖),我们可以枚举 a 和 b,然后计算 c = m - a - b,再验证 c 是否满足费用条件。
- 优化枚举:公鸡最多能买
n / x 只,母鸡最多能买 n / y 只。枚举 a 从 0 到 n/x,枚举 b 从 0 到 n/y。
- 验证条件:
- 首先,计算出的
c 必须非负:c = m - a - b >= 0。
- 其次,
c 必须能被 z 整除:c % z == 0。
- 最后,验证总花费:
a * x + b * y + c / z == n。(关键点) 由于 c / z 在C++中如果是整数相除会得到整数结果,这正是题目要求的。确保使用整型进行计算。
- 计数:所有满足上述条件的
(a, b, c) 组合数即为答案。
【考纲知识点】 循环、判断、枚举算法。
|
上一篇:Python脚本自动化解析Nginx配置:配置审计与Excel导出实战下一篇:Java DTO/Entity高效转换指南:Spring、Hutool与MapStruct实战对比
|