根据信息素养大赛C++考点分析:

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

以上文件显示,考点是电子学会一二级要求知识点:

打开网易新闻 查看精彩图片

具体考试知识点分析以及样题:

一、一级知识点(3-5 年级,普及级) 1. 数据类型与变量定义

核心概念:

考察重点:判断变量定义是否合法、不同数据类型的取值范围。

易错点:变量名以数字开头、字符型用双引号(应为单引号)、布尔类型赋值为1/0(规范写法是true/false)。

2. 输入输出

核心概念:

考察重点:基本输入输出语句书写、多变量输入输出、endl换行使用。

易错点:输入用<<、输出用>>(方向写反)、忘记包含头文件。

3. 赋值运算

核心概念:

考察重点:复合赋值运算的计算顺序、连续赋值(如a = b = c = 10)。

易错点:混淆=(赋值)和==(相等判断)。

样题:执行以下代码后,变量a的值为( )

int a = 5; a += 3; a *= 2;

A. 16 B. 13 C. 11 D. 8

答案:A

4. 算术表达式

核心概念:

考察重点:整数除法与取余的结果计算、混合运算的优先级。

易错点:误以为10 / 3结果是3.33、取余运算用于负数。

样题:执行cout << 10 / 3 << " " << 10 % 3;,输出结果为( )

A. 3 1 B. 3.33 1 C. 3 0 D. 3.33 0

答案:A

5. 逻辑表达式

核心概念:

考察重点:逻辑表达式的结果判断、短路特性的理解。

易错点:混淆&&和||的逻辑、连续判断(如1 < a < 5应写为a > 1 && a < 5)。

样题:判断(5 > 3) && (2 < 4)的结果为( )

A. true B. false C. 1 D. 0

答案:A

二、二级知识点(在一级基础上拓展) 1. 条件语句

核心概念:

考察重点:多分支条件的逻辑书写、switch与if-else的适用场景。

样题:输入一个成绩(0-100),输出等级:≥90 为 A,≥60 为 B,<60 为 C。

打开网易新闻 查看精彩图片

易错点:if后漏写大括号导致逻辑错误、switch中忘记break导致穿透。

2. 循环语句

核心概念:

考察重点:循环次数计算、嵌套循环、break与continue的区别。

易错点:循环变量初始化错误导致死循环、嵌套循环的逻辑混乱。

样题:计算 1 到 100 的累加和,补全代码:

打开网易新闻 查看精彩图片

答案:i <= 100,最终输出5050。

3. 数组

核心概念:

考察重点:数组下标越界判断、数组遍历、初始化方式。

易错点:下标越界(访问arr[5]导致未定义行为)、混淆数组长度与最大下标。

样题:定义数组int arr[5] = {1,2,3,4,5};,访问最后一个元素的正确写法是( )A.arr[5]B.arr[4]C.arr[0]D.arr[6]

答案:B

4. 字符串

核心概念:

考察重点:字符串拼接、字符访问、长度计算。

易错点:忘记包含头文件、混淆string与char数组的操作。

样题:执行以下代码,输出结果为( )

打开网易新闻 查看精彩图片

A. 星火 B. 征途 C. 星火征途 D. 编译报错

5. 函数

核心概念:

考察重点:函数定义与调用、返回值使用、参数传递。

易错点:函数声明与定义不一致、返回值类型不匹配、忘记return语句。

样题:定义函数实现 “两数相乘后减第一个数”,补全代码:

打开网易新闻 查看精彩图片

调用calc(5,3),结果为( )答案:x * y - x,调用结果为5*3-5=10。

6. 简单排序算法

核心概念:

考察重点:排序过程模拟、算法稳定性判断。

易错点:冒泡排序的边界条件、选择排序的交换时机错误。

样题:对数组{3,1,4,2}进行升序排序,冒泡排序第一轮后数组变为( )A.{1,3,2,4}B.{1,2,3,4}C.{3,1,2,4}D.{1,3,4,2}

答案:A

7. 二分查找算法

核心概念:

考察重点:二分查找的适用条件、中间下标计算、边界更新。

易错点:在无序数组中使用二分查找、边界条件错误导致死循环或漏查元素。

样题:在有序数组{1,3,5,7,9}中查找5,二分查找第一次比较的数组下标是( )A. 0 B. 2 C. 3 D. 4

答案:B

级别

基础依赖

核心能力

一级

掌握 C++ 基础语法,能编写简单顺序执行程序

二级

一级全部知识点

掌握分支、循环、数组等结构化编程,能实现简单算法

青少年软件编程等级考试(C/C++)一 / 二级模拟试卷

考试时间:60 分钟 满分:100 分

一、单项选择题(每题 4 分,共 60 分)

1.下列 C++ 变量定义中,符合命名规则的是( )

A.int 1star = 10;B.float spark_road = 3.14;

C.char ch = "星";D.bool flag = 1;

2.执行代码int a = 5; a += 3; a *= 2;后,变量a的值为( )

A. 16 B. 13 C. 11 D. 8

3.执行cout << 10 / 3 << " " << 10 % 3;,输出结果为( )

A. 3 1B. 3.33 1C. 3 0D. 3.33 0

4.逻辑表达式(5 > 3) && (2 < 4)的结果为( )

A. trueB. falseC. 1D. 0

5.下列关于 C++ 输入输出的说法,正确的是( )

A. 输入语句为cin << n;B. 输出语句为cout >> n;

C. 必须包含头文件才能使用cin/cout

D.endl的作用是清空输出缓冲区,不会换行

6.下列代码中,能正确输出 1-10 中所有偶数的是( )

A.for(int i=1;i<=10;i++){if(i%2==1) cout<

B.for(int i=2;i<=10;i+=2){cout<

C.inti=1;while(i<=10){cout<

D.int i=0;while(i<=10){i+=2;cout<

7.定义数组int road[5] = {2,4,6,8,10};,访问最后一个元素的正确写法是( )

A. road[5]B. road[4]C. road[0]D. road[6]

8.执行以下代码,输出结果为( )

#include;intmain(){string s1="星火",s2="征途";cout<

A. 星火B. 征途C. 星火征途D. 编译报错

9.下列函数定义中,语法正确的是( )

A.intmarch(intx,inty){returnx*y-x;}

B.intmarch(x,y){returnx*y-x;}

C.voidmarch(intx,inty){returnx*y-x;}

D.intmarch(intx,inty){x*y-x;}

10.对数组{3,1,4,2}进行冒泡排序,第一轮排序后数组变为( )

A.{1,3,2,4}B.{1,2,3,4}C.{3,1,2,4}D.{1,3,4,2}

11.在有序数组{1,3,5,7,9}中使用二分查找5,第一次比较的数组下标是( )

A. 0B. 2C. 3D. 4

12.下列关于break和continue的说法,正确的是( )

A.break会跳过本次循环剩余代码,进入下一次循环

B.continue会跳出整个循环,不再执行后续循环

C.break可用于跳出循环或switch语句

D.continue可用于跳出switch语句

13.执行以下代码,循环体执行的次数是( )

for(inti=3;i<8;i++){cout<<"星火征途";}

A. 3 次B. 4 次C. 5 次D. 6 次

14.下列关于 C++ 数组的说法,错误的是( )

A. 数组下标从 0 开始B. 数组定义时必须指定长度

C. 同一数组内元素类型必须相同D. 可直接用=给数组整体赋值

15.输入成绩 85,执行以下代码,输出结果为( )

intscore;cin>>score;if(score>=90)cout<<"A";elseif(score>=60)cout<<"B";elsecout<<"C";

A. A B. B C. C D. 无输出

二、判断题(每题 2 分,共 20 分,对打√,错打 ×)

1.C++ 中变量名可以包含数字、字母和下划线,且必须以字母或下划线开头。( )

2.int a = 5;和int a(5);是等价的变量初始化方式。( )

3.算术表达式中,乘法*的优先级高于加法+。( )

4.逻辑表达式a || b中,若a为真,则b不会被计算。( )

5.if(0)语句中的代码块永远不会被执行。( )

6.for循环的初始化、条件、更新三个部分都可以省略。( )

7.数组int arr[5]的最大下标是 5。( )

8.C++ 中string类型可以直接用+进行拼接。( )

9.函数的形参和实参必须类型、数量完全一致。( )

10.二分查找算法可以在无序数组中使用。( )

三、程序填空题(每空 2 分,共 20 分)

题目 1:星火计数 —— 计算 1-100 累加和

intsum=0;for(inti=1;______;i++){sum+=i;}cout<

填空:________ 最终输出:________

题目 2:征途判断 —— 判断奇偶数

输入一个整数,判断是否为偶数,是则输出 “征途偶数”,否则输出 “征途奇数”。

intn;cin>>n;if(______){cout<<"征途偶数";}else{cout<<"征途奇数";}

填空:________ 输入 7 时输出:________

题目 3:星火数组 —— 遍历数组求和

int star[5]={1,2,3,4,5};int sum =0;for(int i =0; ______; i++){ sum += ______;}cout << sum;

填空 1:________ 填空 2:________ 最终输出:________

题目 4:征途函数 —— 计算两数乘积减第一个数

intcalc(intx,inty){return______;}

填空:________ 调用calc(5,3)结果:________

参考答案一、单项选择题

B 2. A 3. A 4. A 5. C 6. B 7. B 8. C 9. A 10. A 11. B 12. C 13. C 14. D 15. B

二、判断题

√ 2. √ 3. √ 4. √ 5. √ 6. √ 7. × 8. √ 9. √ 10. ×

三、程序填空题

i <= 100;5050

n % 2 == 0;征途奇数

i < 5;star[i];15

x * y - x;10