GESP2023年12月认证C++二级( 第一部分选择题(1-8))


🧩 第1题:变量名谁不合格?

1、题目问:

下面哪个 不能当变量名?

A. FiveStar

B. fiveStar

C. 5Star

D. Star5


2、🎈变量王国的法律

(1)在"变量王国"里,有一条法律:

👮 变量名字不能以数字开头!


(2)为什么呢?

因为编译器看到 5Star, 首先看到的5,这是个字面常量,不是变量:

它会直接搞蒙了。


3、🔎 判断一下

选项 合法吗? 原因
FiveStar 字母开头
fiveStar 字母开头
5Star 数字开头
Star5 字母开头

4、🎯 正确答案:C



🧩 第2题:for循环谁输出一样?

1、题目给:

cpp 复制代码
for(int i=10;i<20;i+=2)
    cout<<i;

2、🧠 我们模拟一下

从 10 开始

每次 +2

直到 i<20

输出:

cpp 复制代码
10 12 14 16 18

3、我们看选项:

A. i<19

👉 19 之前也会输出 10 12 14 16 18

✔ 一样!


B. 从 11 开始

👉 输出 11 13 15 17

❌ 不一样


C. i<21

👉 输出 10 12 14 16 18 20

❌ 多了 20


D. 都不对


4、🎯 正确答案:A



🧩 第3题:找因子循环从哪开始?

1、题目想输出 N 的因子:

例如 N=18

要输出:

cpp 复制代码
1 2 3 6 9 18

2、🧠 因子从几开始?

因子一定从 1 开始

不能从 0 开始 ❗

因为:

cpp 复制代码
N % 0   ❌ 会炸

3、否要包括 N?

必须包括 N 本身

所以循环应该:

cpp 复制代码
int i = 1; i < N+1; i++

也就是:

cpp 复制代码
i <= N

4、🎯 正确答案:D



🧩 第4题:对称数代码问题

1、题目是判断:

1221 是对称数

123 不是


2、🚨 问题关键

循环结束时:

cpp 复制代码
N 会变成 0

因为在拆数字的时候:

cpp 复制代码
N = N / 10;

最后 N 被除没了。


3、问题是?

如果你最后拿 N 去比较

那 N 已经是 0

就无法判断原来的数了!


4、🎯 正确答案:D

循环结束后 N 已经变成0,达不到预期效果,这是C++初学者经常遇到的坑。



🧩 第5题:判断质数的陷阱

1、质数:只能被 1 和自己整除


2、错误写法:

cpp 复制代码
for(int i=2;i< N/2;i++)
{
    if(N%i==0)
    {
        cout<< N <<"不是质数";
        break;
    }
}

问题来了!

如果N=4, N/2=2,

循环结束后没输出"不是质数"


3、正确写法应该:

修改循环条件

cpp 复制代码
将第2行和第7行的 N / 2 改为 N / 2 + 1 。

cpp 复制代码
for(int i=2;i<N/2+1;i++)
{
    if(N%i==0)
    {
        cout<< N <<"不是质数";
        break;
    }
}
if(i>=N/2+1)
   cout<< N <<"是质数"; 

4、🎯 正确答案:D



🧩 第6题:循环输出的魔法

1、输出选项:

A. 2#3#0

B. 1#2#0

C. 1#0#

D. 2#3#


2、这题目考:

  • 循环次数

  • 输出控制


3、根据代码:

cpp 复制代码
if(i * j % 2 == 0)
    cout << i << '#';
continue;

4、当i ==2 ,3时,符合条件

循环中输出

cpp 复制代码
2#3#

5、循环结束

cpp 复制代码
cout << " 0 ";

6、🎯 正确答案:A **.**2#3#0

(考察循环执行顺序)



🧩 第7题:break到底跳出那一层?

1、看break的位置

cpp 复制代码
cnt =0;
for(i =1;i<10;i++)
    for(j =1;j<i;j +=2)
        if(i*j % 2 ==0){
            cnt++;
            break;
        }
if(i>=10)
    cout <<cnt <<"#";
cout <<cnt ;

break是跳出内循环,继续外循环。


2、内循环的数字都是奇数

cpp 复制代码
for(j =1;j<i;j +=2)

3、计数器的次数

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

只有外循环,i = 2, 4, 6, 8 计数器计数


4、外循环结束时,i = 10

cpp 复制代码
if(i>=10)
    cout <<cnt <<"#";
cout <<cnt ;

5、🎯 正确答案:D

输出:4#4



🧩 第8题:循环 + 多分支结构

1、三重判断:

cpp 复制代码
N=100;
while(N >0)
    if(N % 2)        //第一判断 N是奇数
        break;
    else if(N % 3 ==0) //第二判断 N是3的倍数
        N -=5;
    else N -=20;    //第三判断 其他

2、N 的循环历程

100 --> 80--> 60--> 55--> break


3、🎯 正确答案:C

输出:55


相关推荐
刘琦沛在进步1 小时前
如何计算时间复杂度与空间复杂度
数据结构·c++·算法
消失的旧时光-19432 小时前
智能指针(三):实现篇 —— shared_ptr 的内部设计与引用计数机制
java·c++·c·shared_ptr
黄昏晓x2 小时前
C++----哈希表
c++·哈希算法·散列表
三月微暖寻春笋3 小时前
【和春笋一起学C++】(六十一)公有继承中的多态
c++·多态·virtual·基类·虚函数·公有继承
兩尛3 小时前
409. 最长回文串
c++·算法·leetcode
智者知已应修善业3 小时前
【pta反转加法构造回文数c语言1000位】2025-1-31
c语言·c++·经验分享·笔记·算法
汉克老师4 小时前
GESP2024年3月认证C++二级( 第三部分编程题(2)小杨的日字矩阵 )
c++·矩阵·循环结构·gesp二级·gesp2级·打印图形
yyjtx4 小时前
DHU上机打卡D27
c++·算法·图论
白太岁4 小时前
C++:(5) 单例模式与支持初始化失败的单例模式
c++·单例模式