GESP2024年9月认证C++二级( 第一部分选择题(9-15))


🎯 第9题 ------ 两个判断

1、代码:

cpp 复制代码
int a,b;
cin >> a >> b;   //  a = 1  b = 0
if(a&&b)          
    cout << ("1"); //&& 要左右两边为真,有0就是假
else if(!(a||b))
    cout << ("2"); // (a||b)为真,!(a||b)为假
else if(a || b)
    cout << ("3"); //  a||b 为真,输出 3
else
    cout << ("4");

2、✅ 正确答案:C、 3


3、逻辑运算符:

运算符 名称 功能描述 返回值规则
&& 逻辑与 两侧表达式同时为真 时返回true,否则返回false 左侧为false时直接返回false(短路求值);否则计算右侧表达式
|| 逻辑或 两侧表达式一侧为真 时返回true,否则返回false 左侧为true时直接返回true(短路求值);否则计算右侧表达式
! 逻辑非 对表达式结果取反truefalsefalsetrue 操作数为true时返回false,为false时返回true


🎯 第10题 ------ 数数循环次数

1、代码

cpp 复制代码
int loopCount = 0;
for (int i = 1; i < 5; i += 2)
    loopCount += 1;
cout << (loopCount);

2、🎬 一步步跑程序

(1)循环规则:

cpp 复制代码
i = 1
i < 5
每次 i += 2

(2)运行过程:

i = 1 ✅

loopCount = 1

i = 3 ✅

loopCount = 2

i = 5 ❌(不小于5)

停止!


(3)最终:

cpp 复制代码
loopCount = 2

(4)✅ 正确答案:B、 2


(5)🎯 关键注意点

i += 2 是跳着走!不要习惯看成 i++



🎯 第11题 ------ 打印数字三角形

1、题目给出的输出是:

cpp 复制代码
1
2 3
3 4 5
4 5 6 7
...

2、代码结构:

cpp 复制代码
for (int i=1; i< lineNum+1; i++){
    for(int ________)
        cout << j << " ";
}

3、🎬 观察规律

第一行:从 1 开始到1结束,打印1个数

第二行:从 2 开始到3结束,打印2个数

第三行:从 3 开始到5结束,打印3个数


4、每一行都是:

👉 从 i 开始

👉 打印 i 个数


5、所以内层循环应该是:

cpp 复制代码
j = i; j < i*2; j++

6、✅ 正确答案:C、 j = i; j < i*2; j++



🎯 第12题 ------ 数字倒过来

1、题目要求:

输入 123

输出 321
输入 120

输出 21


2、🎬 讲解

(1)我们用一个变量 rst 存结果。

每次:

cpp 复制代码
rst = rst * 10 + N % 10
N = N / 10

(2)效果举例:

N = 123

第一次:

rst = 3

N = 12
第二次:

rst = 32

N = 1
第三次:

rst = 321

N = 0

结束!


✅ 正确答案:A、rst = rst * 10 + N % 10 N = N / 10


3、拆数题模版:

cpp 复制代码
while (N > 0){
  
   n%10;  //求余数,取个位数,在前

   n/10;  //整数,去除个位数,在后

}


🎯 第13题 ------ 平均分程序

1、代码里:

cpp 复制代码
while (1)

很多小朋友会害怕 😆

其实它表示:

"无限循环,直到 break"


2、判断选项:

A 说 while(1) 错误 ❌

后面有退出循环的条件,输入成绩的老师,随时输入-1都可以停止。


**B.**如果输入负数,将结束输入,并正确输出 ✅

cpp 复制代码
if (score < 0)
    break;

**C.**如果输入的学生成绩含有小数,程序将无法正常执行❌

输入小数不会出问题 ✅

因为:

cpp 复制代码
int score;

虽然定义的是整数!

但是输入小数不会程序无法执行。

但是计算结果有误差,这个出题写法,有欠缺。


**D.**变量 int score 初始值不确定,但不影响程序执行✅

cpp 复制代码
int score;
cin >> score;

通过键盘输入赋值,是正确的方法。


3、✅ 正确答案:A / C



🎯 第14题 ------ 判断质数

1、代码

cpp 复制代码
for(i = 2; i < num; i++)
    if ( ______ ){
        cout << "NO";
        break;
    }

2、🎬 讲解

(1)什么是质数?

👉 只能被1和自己整除


(2)判断方法:

从 2 开始试除:

如果:

cpp 复制代码
num % i == 0

(3)说明找到了因数

不是质数!


(4)所以横线填:

cpp 复制代码
num % i == 0

(5)✅ 正确答案:B



🎯 第15题 ------ 与7有关的数

1、规则:

  • 能被7整除

  • 或者含有数字7


2、代码中:

cpp 复制代码
while (!Flag && M){
    if (M % 10 == 7){
        Flag = true;
        break;
    }
    M /= 10;
}

3、看下题目选项

**A.**删除break语句不会导致死循环,但有时会导致结果错误

cpp 复制代码
    if (M % 10 == 7){
        Flag = true;   
        break;         //快速跳出
    }

删除break语句不会导致死循环,✅️

但有时会导致结果错误 ❌️


**B.**删除 M /= 10 将可能导致死循环

cpp 复制代码
M /= 10

循环永远不会变

就会:

💥 死循环!✅️


**C.**删除 M = N 并将其后代码中的M变量改为N,并调整输出同样能完成相关功能

cpp 复制代码
if (M % 7 == 0)
    Flag = true;      //   判断整除在前

while (!Flag && M){
    if (M % 10 == 7){
        Flag = true;  //   判断有数字7在后
        break;
    }
    M /= 10;
}

删除 M = N 并将其后代码中的M变量改为N,不影响结果✅


**D.**删除 break 语句不会导致死循环,但有时会影响效率

break 语句,在这个程序中是快速跳出,删除影响效率 ✅


4、✅ 正确答案:**A.**删除break语句不会导致死循环,但有时会导致结果错误


相关推荐
大鹏的NLP博客2 小时前
HuggingFace WordPiece Tokenizer in C++
c++·hf tokenizer
水饺编程2 小时前
Windows 编程基础:wsprintf 函数
c语言·c++·windows·visual studio
大地的一角2 小时前
(C++)自定义功能基础汇总
开发语言·c++
Hello eveybody2 小时前
什么是动态规划(DP)?(C++版)
c++·动态规划
橘色的喵2 小时前
现代C++嵌入式消息总线的回调优化: 从 std::function 到零开销分发
c++·function
yblackd3 小时前
UnrealEngine Win风格 窗口选择打开文件
c++·ue5·虚幻
橘色的喵3 小时前
C++17 vs C 编译产物体积:工业嵌入式场景的实测与分析
c语言·c++·c++17
闻缺陷则喜何志丹3 小时前
【进制】P2320 [HNOI2006] 鬼谷子的钱袋|普及+
c++·算法·进制
今儿敲了吗4 小时前
19| 海底高铁
c++·笔记·学习·算法