CCF-GESP 等级考试 2024年3月认证C++一级真题解析

2024年03月真题

1 单选题

第 1 题 C++表达式(3 - 2) * 3 + 5的值是( )。

  • A. -13
  • B. 8
  • C. 2
  • D. 0

正确答案:B. 8

解析:

  • 首先计算括号中的表达式 (3 - 2),得到 (1)。
  • 接下来进行乘法运算 (1 * 3),得到 (3)。
  • 最后进行加法运算 (3 + 5),得到 (8)。
  • 因此,表达式的值是 (8)。

第 2 题 C++语句 cout << "5%2=" << 5 % 2 执行后的输出是( )。

  • A. 2 2
  • B. 1 1
  • C. 5%2=2
  • D. 5%2=1

正确答案:D. 5%2=1

解析:

  • 此语句首先输出字符串 “5%2=”。
  • 接着计算表达式 5 % 2,即5除以2的余数,结果为1。
  • 因此,整个语句的输出是 “5%2=1”。

第 3 题 执行C++语句cin >> a时如果输入5+2,下述说法正确的是( )。

  • A. 变量a将被赋值为整数7
  • B. 变量a将被赋值为字符串,字符串内容为5+2
  • C. 语句执行将报错,不能输入表达式
  • D. 依赖于变量a的类型。如果没有定义,会有编译错误

正确答案:D. 依赖于变量a的类型。如果没有定义,会有编译错误

解析:

  • A: 不正确。cin >> a 不会对输入的 “5+2” 进行表达式计算,而是尝试将其作为整体读入,这在期望一个整数时将失败。
  • B: 也不正确。即使 a 是字符串类型,输入的 “5+2” 将被当作普通文本,但这并不符合题干的描述要求。
  • C: 表达了一种可能性,即无法处理表达式,但不完全准确,因为错误的具体性质取决于 a 的类型和输入处理。
  • D: 正确。这一选项正确指出了结果依赖于 a 的类型,并且如果 a 没有被定义,则确实会产生编译错误。如果 a 定义为整型,cin 将尝试解析输入,但 “5+2” 并非有效的整数,导致读取失败。

第 4 题 下面C++代码执行后的输出是( )。

int a = 1;
cout << "a+1= " << a+1 << endl;
  • A. a+1= 2
  • B. a+1=2
  • C. 2=2
  • D. 2= 2

正确答案:A. a+1= 2

解析:

  • 代码中的 cout 语句输出字符串 "a+1= " 后紧跟变量 a 加 1 的结果。
  • 由于在 “a+1=” 和 a+1 的计算结果之间存在一个空格,输出将显示为 “a+1= 2”。
  • endl 用于在输出后添加一个新行,不影响 a+1 和其结果之间的空格。
  • 因此,正确的输出是 “a+1= 2”,与选项A匹配。

第 5 题 下面C++代码执行后的输出是( )。

int a = 1;
printf("a+1=%d\n", a+1);
  • A. a+1= 2
  • B. a+1=2
  • C. 2=2
  • D. 2= 2

正确答案:B. a+1=2

解析:

  • 代码中使用了 printf 函数来格式化输出。
  • 第一个参数是格式化字符串 "a+1=%d\n",其中 %d 用于插入整数。
  • 第二个参数 a+1 计算结果为2。
  • 因此,整个输出是 “a+1=2”,其中等号和数字2之间没有空格。

第 6 题 下面C++代码执行时输入21后,有关描述正确的是( )。

int N;
cin >> N;
if(N % 3 == 0)
    cout << "能被3整除";
else if (N % 7 == 0)
    cout << "能被7整除";
else
    cout << "不能被3和7整除";
cout << endl;
  • A. 代码第4行被执行
  • B. 第4和第7行代码都被执行
  • C. 仅有代码第7行被执行
  • D. 第8行代码将被执行,因为input()输入为字符串

正确答案:A. 代码第4行被执行

解析:

  • 输入的数值是21,它同时是3和7的倍数。
  • 在C++中,cin 直接读取数值,而不是字符串,所以D选项的描述错误。
  • 代码首先检查21是否能被3整除,这是真的,因此执行第4行的代码 cout << "能被3整除";,并输出"能被3整除"。
  • 由于 if 条件已经满足,else ifelse 部分都将被跳过。
  • cout << endl; 是条件块外的语句,所以它将在任何情况下都会执行,用于在输出后添加一个新行。
  • 因此,正确的描述是第4行代码被执行。

第 7 题 下面C++代码第2行,总共被执行次数是( )。

for(int i=-10; i<10; i++)
    cout << i << " ";
  • A. 10
  • B. 19
  • C. 20
  • D. 21

正确答案:C. 20

解析:

  • 循环从 i = -10 开始,继续执行直到 i < 10 成立时停止。在 i 达到10之前,循环将结束。
  • 因此,循环将为每个整数从-10到9执行一次,共计20个整数。
  • 这意味着第2行代码,即 cout << i << " "; 将被执行20次。
  • 因此,选项C是正确的答案。

第 8 题 下面C++代码执行后的输出是( )。

int tnt = 0;
for(int i=0; i<10; i++)
    if(i % 3 && i % 7)
        tnt += i;
cout << tnt << endl;
  • A. 0
  • B. 7
  • C. 18
  • D. 20

正确答案:D. 20

解析:

  • 代码中的 for 循环遍历从0到9的整数。
  • if 条件 i % 3 && i % 7 检查 i 是否既不是3的倍数也不是7的倍数。这意味着只有当 i 同时不被3和7整除时,条件才为真。
  • 在0到9的范围内,1, 2, 4, 5, 8 不是3或7的倍数。
  • 这些数值的总和是:1 + 2 + 4 + 5 + 8 = 20。
  • 因此,程序的输出是20。

第 9 题 下面C++代码执行后的输出是( )。

int N = 10;
while(N){
    N -= 1;
    if(N % 3 == 0)
        cout << N << "#";
}
  • A. 9#6#3#
  • B. 9#6#3#0#
  • C. 8#7#5#4#2#1#
  • D. 10#8#7#5#4#2#1#

正确答案:B. 9#6#3#0#

解析:

  • 初始值 N = 10,然后进入 while 循环,条件是 N 不为0。
  • 在循环内部,首先 N 被减1,然后检查 N % 3 是否等于0。
  • 迭代的过程中,N 递减并检查:9, 8, 7, 6, 5, 4, 3, 2, 1, 0。
  • N 为9, 6, 3, 0时,满足条件 N % 3 == 0,因此它们被输出并跟随一个 #
  • 所以输出结果是 9#6#3#0#

第 10 题 下面C++代码用于判断键盘输入的整数是否为质数。质数是只能被1和它本身整除的数。在横线处应填入代码是( )。

int N;
cin >> N;
int cnt = 0; // 记录N被整除的次数
for(int i=1; i<N+1; i++)
    if(________________)
        cnt +=1;
if(cnt == 2)
    cout << N << "是质数";
else
    cout << N << "不是质数";
  • A. N % i
  • B. N % i == 0
  • C. N / i == 0
  • D. N / i

正确答案:B. N % i == 0

解析:

  • 选项B N % i == 0 正确地检查变量 N 能否被 i 整除。如果结果为0,表示 N 可以被 i 整除,这是检测质数的正确方法。
  • 质数定义为只能被1和自身整除的数。在循环中,如果 N 被任何数(除了1和它自己)整除,则它不是质数。
  • 此代码通过计数 N 只被1和自身整除(即 cnt 等于2)来判断 N 是否为质数。
  • 其他选项要么不进行正确的整除检查(A和D),要么判断错误(C)。

第 11 题 下面关于整型变量int x的赋值语句不正确是( )。

  • A. x=(3.16);
  • B. x=3.16;
  • C. x=int(3.16);
  • D. x=3.16 int;

正确答案:D. x=3.16 int

解析:

  • A, B, C都是有效的C++语句,尽管它们会将浮点数强制转换为整数,因此,3.16会被转换为3。
  • A. 使用括号进行赋值是有效的,C++会自动将3.16转换为整型。
  • B. 直接赋值浮点数到整型变量也会自动转换。
  • C. 显式地将浮点数转换为整型也是有效的。
  • D. 选项中的 “x=3.16 int” 语法是不正确的,C++中没有这种赋值语法格式。

第 12 题 C++语言中下面可以完成数据输入的语句是( )。

  • A. printf语句
  • B. scanf语句
  • C. default语句
  • D. cout语句

正确答案:B. scanf语句

解析:

  • A. printf语句:这是一个输出语句,用于向用户显示信息,而不是输入数据。
  • B. scanf语句:这是标准的输入语句,在C++中用来从标准输入(通常是键盘)读取数据。
  • C. default语句:这通常用于switch语句中,不涉及输入或输出。
  • D. cout语句:这也是一个输出语句,用于向标准输出流(通常是屏幕)输出数据。

因此,唯一用于输入的语句是scanf

第 13 题 在Dev C++中对一个写好的C++源文件要生成一个可执行程序需要执行下面哪个处理步骤?( )

  • A. 创建
  • B. 编辑
  • C. 编译
  • D. 调试

正确答案:C. 编译

解析:

  • A. 创建:创建是指创建新的文件或项目,与生成可执行文件无直接关系。
  • B. 编辑:编辑是修改代码的过程,但它本身不涉及编译或生成可执行文件。
  • C. 编译:这是将C++源代码转换成机器代码的过程,是生成可执行程序的必要步骤。
  • D. 调试:调试是用于找出程序中的错误和问题的过程,虽然重要,但不直接生成可执行文件。

因此,要从Dev C++中的C++源文件生成可执行程序,必须执行编译过程。

第 14 题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( )

  • A. 小程序
  • B. 计时器
  • C. 操作系统
  • D. 神话人物

正确答案:C. 操作系统

解析:

  • A. 小程序:这指的是在一些平台上运行的简化的应用程序,不是操作系统。
  • B. 计时器:这是一种工具或设备功能,用于测量时间间隔,不是操作系统。
  • C. 操作系统:鸿蒙OS(HarmonyOS)是华为开发的操作系统,用于多种设备,包括智能手表、手机、平板电脑等。
  • D. 神话人物:虽然“鸿蒙”在中国古代神话中有所指涉,但在这个上下文中,它指的是华为的操作系统。

因此,鸿蒙在这里指的是一种操作系统。

第 15 题 中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。

  • A. 制造自动驾驶汽车
  • B. 创立培训学校
  • C. 发明汉字激光照排系统
  • D. 成立方正公司

正确答案:C. 发明汉字激光照排系统

解析:

  • A. 制造自动驾驶汽车:这与王选先生的专业领域和贡献不符。
  • B. 创立培训学校:虽然教育是重要的领域,但这不是王选先生主要被认可的贡献。
  • C. 发明汉字激光照排系统:王选先生最为著名的贡献是发明汉字激光照排技术,这项技术极大地改善了中文印刷技术,对中国的出版和印刷业有重大影响。
  • D. 成立方正公司:虽然王选先生确实创立了方正公司,该公司在推广其汉字激光照排技术中发挥了重要作用,但选项C更直接地描述了他的核心贡献。

因此,他的重大贡献是发明了汉字激光照排系统。

2 判断题

已更新模板。根据新模板,这里是重生成的选择题及其解析:

第 1 题 在C++代码中变量n被赋值为27,则 cout << n%10 执行后输出的是7。( √ )

解析:

  • % 运算符是取余运算符,n % 10 将计算 27 除以 10 的余数,结果为 7

第 2 题 C++语句printf("%d#%d&",2,3) 执行后输出的是2#3&。 ( √ )

解析:

  • printf 是一个格式化输出函数。此处使用 %d 占位符按顺序输出整数 23,并在它们之间加入特殊字符 #&

第 3 题 C++函数scanf()必须含有参数,且其参数为字符串型字面量,其功能是提示输入。( × )

解析:

  • scanf() 的参数是字符串型字面量,但其功能是读取输入,而不仅仅是提示输入。

第 4 题 C++表达式 "10"*2 执行时将报错,因为 "10" 是字符串类型而2是整数类型,它们数据类型不同,不能在一起运算。( √ )

解析:

  • 在C++中,字符串字面值和整数不能直接进行算术运算。这会导致编译错误,因为没有定义如何将字符串和整数相乘。

第 5 题 在C++中,while可能是死循环,而for循环不可能是死循环。( × )

解析:

  • 这是错误的。for 循环完全可以编写成死循环,例如使用 for(;;)

第 6 题 在C++,break语句用于提前终止当前层次循环,适用于while循环,但不适用于for循环。( × )

解析:

  • 这是错误的。break 语句可以用在任何类型的循环中,包括 forwhile 循环,用于立即退出循环。

第 7 题 C++语言中3.0和3的值相等,所以它们占用的存储空间也相同。( × )

解析:

  • 虽然数值相等,但3.0作为浮点数与整数3在内存中的存储方式完全不同。

第 8 题 在C++的程序中,cin是一个合法的变量名。( √ )

解析:

  • 虽然 cin 是在C++标准库中预定义的标准输入流对象,但它并不是C++的保留关键字。因此,从语法上讲,使用 cin 作为变量名是允许的。
  • 不过,使用 cin 或其他标准库名称作为变量名通常不被推荐,因为这会导致代码可读性和维护性的问题,可能引起混淆。

第 9 题 小杨今年春节回奶奶家了,奶奶家的数字电视可以通过遥控器输入电视剧名称来找到想播放的电视剧,所以可以推知里面有交互式程序在运行。( √ )

解析:

  • 数字电视使用交互式程序来响应用户的输入,例如通过遥控器搜索和选择电视剧,这表明其内部运行了交互式软件。

第 10 题 任何一个for循环都可以转化为等价的while循环( √ )

解析:

  • 这是正确的。for 循环可以通过重写条件和迭代部分来改写为 while 循环,保持逻辑一致性。

3 编程题

3.1 编程题1

题目名称:小杨买书
题面描述

小杨同学积攒了一部分零用钱想要用来购买书籍,已知一本书的单价是13元,请根据小杨零用钱的金额,编写程序计算最多可以购买多少本书,还剩多少零用钱。

输入格式

输入一个正整数 ( m ),表示小杨拥有的零用钱数。

输出格式

输出包含两行,第一行为购买图书的本数,第二行为剩余的零用钱数。

样例

输入

100

输出

7
9

输入

199

输出

15
4

参考程序:

#include <iostream>
using namespace std;

int main() {
    int m;
    cin >> m; // 读取小杨拥有的零用钱
    cout << m / 13 << endl; // 计算并输出最多可以购买的书籍数量,每本书13元
    cout << m % 13 << endl; // 输出剩余的零用钱
    return 0;
}

解释:
这个问题非常直接,要求计算能购买的最大书本数和剩余的零用钱。因为书的价格固定为13元,所以通过整除操作 m / 13 可以得到最大书本数,通过取余操作 m % 13 可以得到购买书后的剩余零用钱。

该程序使用C++的标准输入输出库 iostream 来处理输入和输出。整除和取余是通过 /% 操作符完成的,分别计算书本数量和剩余金钱。

这个题目适用于理解基本的算术运算和输入输出操作在C++中的应用。

3.2 编程题 2

题目名称:找因数
题面描述

小A最近刚刚学习了因数的概念,具体来说,如果一个正整数 (a) 可以被另一个正整数 (b) 整除,那么我们就说 (b) 是 (a) 的因数。请你帮忙写一个程序,从小到大输出正整数 (a) 的所有因数。

输入格式

输入一行一个正整数 (a)。保证 (a ≥ 1000)。

输出格式

输出若干行,为 (a) 的所有约数,从小到大排列。

样例

输入

1

输出

1

输入

6

输出

1
2
3
6

输入

10

输出

1
2
5
10

参考程序:

#include <iostream>
using namespace std;

int main() {
    int a;
    cin >> a; // 读取输入的正整数
    for (int i = 1; i <= a; ++i) { // 从1到a遍历所有可能的因数
        if (a % i == 0) { // 检查i是否是a的因数
            cout << i << endl; // 输出因数
        }
    }
    return 0;
}

解释:
这个程序的核心在于遍历从1到 (a) 的所有整数,并检查它们是否是 (a) 的因数。如果是因数,就将其输出。使用 % 运算符可以判断 (a) 是否可以被 (i) 整除。整个程序保证了所有的因数按照从小到大的顺序输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/647326.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

是的,我换logo了!

大家好&#xff0c;我是记得诚。 当你收到推文的时候&#xff0c;会发现记得诚换logo了&#xff01; 之前是这样的。 现在是这样的。 这个新logo&#xff08;头像&#xff09;是2年前在淘宝上请人做的&#xff0c;价值37人民币&#xff0c;但一直没有换上。当时还发了一个朋友…

spring cloud alibaba sentinel 配置过程 流控 降级热点 授权

目录 1.基础理论 2.配置 3.加入依赖和配置文件 4.流控 1.基础理论 Sentinel是阿里开源的项目&#xff0c;提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 丰富的应用场景 &#xff1a;Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心…

透视App投放效果,Xinstall助力精准分析,让每一分投入都物超所值!

在移动互联网时代&#xff0c;App的推广与投放成为了每一个开发者和广告主必须面对的问题。然而&#xff0c;如何精准地掌握投放效果&#xff0c;让每一分投入都物超所值&#xff0c;却是一个令人头疼的难题。今天&#xff0c;我们就来谈谈如何通过Xinstall这个专业的App全渠道…

简单的UDP网络程序:多人群聊系统

本章重点 能够实现一个简单的udp客户端/服务器; 1.创建套接字 我们把服务器封装成一个类&#xff0c;当我们定义出一个服务器对象后需要马上初始化服务器&#xff0c;而初始化服务器需要做的第一件事就是创建套接字。 ⭐参数说明&#xff1a; domain&#xff1a;创建套接字的域…

AIGC 004-T2I-adapter另外一种支持多条件组合控制的文生图方案!

AIGC 004-T2I-adapter另外一种支持多条件组合控制的文生图方案&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 T2I-Adapter 论文提出了一种名为 T2I-Adapter 的轻量级适配器模块&#xff0c;旨在增强文本到图像 (T2I) 扩散模型的语义理解和生成能力。 论文指出…

在 Visual Studio 2022 (VS2022) 中删除 Git 分支的步骤如下

git branch -r PS \MauiApp1> git push origin --delete “20240523备份” git push origin --delete “20240523备份”

asrpro softspi SD卡读写

采样 50M 1M&#xff1b;采样时间足够长&#xff0c;采样频率1M 避免信息遗漏 引脚 cs pa2 mosi pa3 sck pa5 miso pa6 vcc ->5v gnd ->gnd ARDUINO SD库与移植&#xff08;原本是打算移值tw ch32v103的sd库的&#xff0c;但没有对比&#xff0c;只能选择arduino ; …

GDB对Linux信号的处理方式

前言 在软件开发过程中&#xff0c;调试工具是程序员不可或缺的助手。GDB&#xff08;GNU Debugger&#xff09;作为一个强大的调试器&#xff0c;广泛应用于Linux系统中的C/C程序调试。然而&#xff0c;信号处理机制的复杂性常常给调试带来挑战。特别是在处理异步和同步信号时…

React中 将UI 视为树

当 React 应用程序逐渐成形时&#xff0c;许多组件会出现嵌套。那么 React 是如何跟踪应用程序组件结构的&#xff1f; React 以及许多其他 UI 库&#xff0c;将 UI 建模为树。将应用程序视为树对于理解组件之间的关系以及调试性能和状态管理等未来将会遇到的一些概念非常有用。…

加入MongoDB AI创新者计划,携手MongoDB共同开创AI新纪元

加入MongoDB AI创新者计划&#xff01; MongoDB对AI创新和初创企业的支持既全面又广泛&#xff01;无论您是领先的AI初创企业还是刚刚起步&#xff0c;MongoDB Atlas都是支持您愿景的最佳平台。 AI 初创者计划The AI Startup Track AI初创者计划为早期初创企业提供专属福利&…

CHI协议_1

作者&#xff1a;someone链接&#xff1a;https://www.zhihu.com/question/304259901/answer/3455648666来源。 1. AMBA CHI简介 一致性总线接口&#xff08;CHI&#xff09;是AXI一致性扩展&#xff08;ACE&#xff09;协议的演进。它是Arm的AMBA总线的一部分。AMBA是一种免…

鸿蒙ArkTS声明式开发:跨平台支持列表【触摸事件】

触摸事件 当手指在组件上按下、滑动、抬起时触发。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独…

WEB攻防【1】——ASP应用/HTTP.SYS/短文件/文件解析/Access注入/数据库泄漏

ASP&#xff1a;常见漏洞&#xff1a;本文所写这些 ASPX&#xff1a;未授权访问、报错爆路径、反编译 PHP&#xff1a;弱类型对比、mdb绕过、正则绕过&#xff08;CTF考得多&#xff09; JAVA&#xff1a;反序列化漏洞 Python&#xff1a;SSTI、字符串、序列化 Javascript&…

openEuler 22.03 LTS SP3源码编译部署OpenStack-Caracal

openEuler 22.03 LTS SP3源码编译部署OpenStack-Caracal 说明机器详情安装操作系统注意事项基础准备Controller节点 && Compute节点 && Block节点关闭防火墙关闭selinux设置静态IP更新安装前准备Controller节点 && Compute节点 && Block节点设…

Linux系统启动原理

Linux系统启动原理及故障排除 Centos6系统启动过程 修改系统启动级别 vim /etc/inittabCentos7启动流程 加载BIOS信息&#xff0c;进行硬件检测 根据BIOS设定读取设备中的MBR&#xff0c;加载Boot loader 加载内核&#xff0c;内核初始化以后以模块的形式动态加载硬件 并且加…

嵌入式进阶——蜂鸣器

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 蜂鸣器原理图测试发声乐理知识乐理应用PWM测试发声PWM驱动封装 蜂鸣器 蜂鸣器是一种能够产生固定频率的声音的电子元件。它通常由…

MySQL数据库中的多表查询/连接查询操作

类型&#xff1a;内连接 &#xff0c;外连接{左外连接&#xff0c;右外连接} 之所以要使用连接查询的意义就是为了&#xff0c;借助数据库可以避免大量的数据重复。 进行连接查询的前提是要求多张表之间存在相关联的字段。 这里指的相关联的字段就是表与表之间存在着关系&am…

linux 常用命令:find grep ps netstat sudo df du rm

rm 命令 删除 -r 是递归参数&#xff08;recursive&#xff09;&#xff0c;用于删除目录及其内容。如果不加这个参数&#xff0c;rm 命令无法删除非空目录。-f 是强制参数&#xff08;force&#xff09;&#xff0c;用于强制删除文件或目录&#xff0c;不会进行任何确认提示…

windows 搭建 go开发环境

go语言&#xff08;或 Golang&#xff09;是Google开发的开源编程语言&#xff0c;诞生于2006年1月2日下午15点4分5秒&#xff0c;于2009年11月开源&#xff0c;2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势&#xff0c;Go语言从底层原生支持并发&#xff0c;无须…

Android network — 进程指定网络发包

Android network — 进程指定网络发包 0. 前言1. 进程绑定网络1.1 App进程绑定网络1.2 Native进程绑定网络 2. 源码原理分析2.1 申请网络requestNetwork2.2 绑定网络 BindProcessToNetwork 3. 总结 0. 前言 在android 中&#xff0c;一个app使用网络&#xff0c;需要在manifest…