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


相关推荐
2401_8920709819 小时前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
yuzhuanhei19 小时前
Visual Studio 配置C++opencv
c++·学习·visual studio
不爱吃炸鸡柳20 小时前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
十五年专注C++开发20 小时前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
‎ദ്ദിᵔ.˛.ᵔ₎20 小时前
STL 栈 队列
开发语言·c++
2401_8920709820 小时前
【Linux C++ 日志系统实战】高性能文件写入 AppendFile 核心方法解析
linux·c++·日志系统·文件写对象
郭涤生20 小时前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法
༾冬瓜大侠༿20 小时前
vector
c语言·开发语言·数据结构·c++·算法
cccyi720 小时前
【C++ 脚手架】etcd 的介绍与使用
c++·服务发现·etcd·服务注册
liu****21 小时前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
开发语言·数据结构·c++·算法·蓝桥杯