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;

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


相关推荐
史蒂芬_丁21 分钟前
Qt, C++数据类型扩展问题
数据库·c++·qt
6Hzlia30 分钟前
【Hot 100 刷题计划】 LeetCode 118. 杨辉三角 | C++ 动态规划题解
c++·leetcode·动态规划
三道渊1 小时前
C语言:文件I/O
c语言·开发语言·数据结构·c++
是有头发的程序猿2 小时前
用Open Claw接口做1688选品、价格监控、货源对比
开发语言·c++·人工智能
计算机安禾2 小时前
【数据结构与算法】第19篇:树与二叉树的基础概念
c语言·开发语言·数据结构·c++·算法·visual studio code·visual studio
Zarek枫煜3 小时前
[特殊字符] C3语言:传承C之高效,突破C之局限
c语言·开发语言·c++·单片机·嵌入式硬件·物联网·算法
寻寻觅觅☆3 小时前
东华OJ-基础题-30-求最晚和最早日期(C++)
数据结构·c++·算法
_Twink1e4 小时前
[算法竞赛]九、C++标准模板库STL常用容器大全
开发语言·c++
bu_shuo4 小时前
c++中对数组求和
开发语言·c++
elseif1234 小时前
【Markdown】指南(上)
linux·开发语言·前端·javascript·c++·笔记