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


🌟 第 9 题 ------ 双重 for 循环计数

1、先看题目:

cpp 复制代码
int loopCount = 0;
for (int i=0; i < 10; i++)
    for (int j=1; j < i; j++)
        loopCount += 1;

2、正确答案:C(36)


3、🧠 题目讲解

(1)我们来画个表:

当 i=0 → j 不执行

当 i=1 → j 不执行

当 i=2 → j=1 → 1次

当 i=3 → j=1,2 → 2次

当 i=4 → 3次

...

当 i=9 → 8次


(2)所以总数:

cpp 复制代码
1+2+3+4+5+6+7+8 = 36

(3)🎯 这是一个三角形计数,等差数列求和问题!



🌟 第 10 题 ------ 计数器的位置

1、先看题目:

cpp 复制代码
int loopCount = 0;
for (int i=0; i < 10; i++){
    for (int j=0; j < i; j++)
        if (i * j % 2)
            break;
        loopCount += 1;
}

2、关键代码

cpp 复制代码
for (int j=0; j < i; j++)
    if (i * j % 2)
        break;
loopCount += 1;

计数器在内循环的外面,只负责记录外循环的次数


3、外循环次数为0~9


4、正确答案: C、 10



🌟 第11题 ------ while 循环求和

1、先看题目:

cpp 复制代码
while (N){
    Sum += N;
    cin >> N;
}

2、正确答案:D 是错误说法


3、题目讲解

(1)while(N) 的意思是:

只要 N 不等于 0,就继续。


(2)如果输入:

5

3

-2

0

Sum = 5 + 3 - 2 = 6

输入 0 时停止。


3、选项 D 说:

把 while(N) 改成 while(N==0)

那会怎样?
一开始 N 不是 0,就根本不进循环 ❌

所以 D 是错的。



🌟 第12题 ------ 判断质数

1、正确答案:D


2、🧠 代码逻辑解释

cpp 复制代码
for (int i = 2; i < N; i++){
    if (i * i > N)
        break;
    if (N % i == 0){
        Flag = false;
        break;
    }
}

3、目前代码存在的问题:

目前代码默认输入数字是大于2的正整数。


4、看下各个选项:

**A.**如果输入正整数,上面代码能正确判断N是否为质数

答案是错误❌️

输入1,是正整数,不是质数,但是输出判断是质数。


**B.**如果输入整数,上面代码能正确判断N是否为质数

答案是错误❌️
输入负数,也误判是质数。


**C.**如果输入大于等于0的整数,上面代码能正确判断N是否质数

答案是错误❌️

输入1,是大于等于0的整数,不是质数,但是输出判断是质数。


**D.**如将 Flag = true 修改为 Flag = N>=2? true:false 则能判断所有整数包括负整数、0、正整数是否为质数

答案是正确、✅️



🌟 第13题 ------ 打印乘法图

(1)代码:

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

(2) 正确答案:A


(3)🧠会打印什么?

cpp 复制代码
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25

(4)每一行结束后换行。

代码本来就正确,不用改。



🌟 第14题 ------ continue 的魔法

cpp 复制代码
for (int i = 0; i < 10; i++){
    if (i % 2 == 0)
        continue;
    if (i % 2)
        cnt1 += 1;
    else if (i % 3 == 0)
        cnt2 += 1;
}

1、正确答案:A(5 2)


2、🧠 解释

(1)i 从 0 到 9

如果 i 是偶数:

直接 continue(跳过)


(2)所以只剩下:

1 3 5 7 9

都是奇数。


(3)接着:

if(i % 2)

奇数 %2 = 1 → true

(4)所以:

cnt1 += 1

共 5 次。


(5)那 cnt2 呢?

永远进不到。

(6)所以:

cpp 复制代码
cnt1 = 5
cnt2 = 0

答案是 B、5 0



🌟 第15题 ------ 幸运数大挑战

1、规则:

  • 如果 M 能被 N 整除 → 幸运数

  • 如果 M 里含有 N 且能被 N 整除 → 超级幸运数


2、正确答案:D


3、🧠 举例

N=3

M=63
63 % 3 == 0 ✅

63 里面有数字 3 ✅
所以:

63 是 3 的超级幸运数


4、看选项 A:

A.如果N=3,M=36输出:36是3的超级幸运数!

36%3==0→Lucky =true

检查36中是否含3:

36%10=6≠3

3%10=3==3→满足超级幸运数条件

输出应该是"36是3的超级幸运数!"

正确吗?

代码中循环时修改了M, 所以第一次printf输出时M已被除以10变为3了,而不是36

实际打印的是**"3是3的超级幸运数!"**而不是36

因此,选项A的输出和代码实际不符,不正确


B/C选项同样不正确


5、如果M的值不想改变怎么办?

cpp 复制代码
int oldM = M;

可以提前存下来,最后输出就没问题了。


相关推荐
十年编程老舅3 分钟前
C++ 原子操作实战:实现无锁数据结构
linux·c++·c++11·原子操作·无锁队列
米码收割机9 分钟前
【AI】OpenClaw问题排查
开发语言·数据库·c++·python
CppBlock20 分钟前
HPX vs TBB vs OpenMP:并行任务模型对比
c++·算法
17(无规则自律)21 分钟前
Leetcode第六题:用 C++ 解决三数之和
c++·算法·leetcode
wengqidaifeng26 分钟前
备战蓝桥杯----C/C++组 (一)所需C++基础知识(上)
c语言·数据结构·c++·蓝桥杯
tankeven27 分钟前
HJ126 小红的正整数计数
c++·算法
0 0 031 分钟前
CCF-CSP 37-2 机器人饲养指南(apple)【C++】考点:完全背包问题
开发语言·c++·算法
xiaoye-duck34 分钟前
《算法题讲解指南:优选算法-分治-归并》--49.计算右侧小于当前元素的个数,50.翻转对
c++·算法
_Twink1e34 分钟前
[算法竞赛]八、排序、排列
数据结构·c++·笔记·算法·排序算法
样例过了就是过了42 分钟前
LeetCode热题100 腐烂的橘子
数据结构·c++·算法·leetcode·bfs