202
3年
第
6
届全国青少年人工智能创新挑战赛C++信息学专项真题
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
1. 下列有关分支结构的叙述中,不正确的是( )。
A.if(a==0) x++; 不是一个合法的C++语句
B.switch(3){……}是一个合法的C++语句
C.switch语句中不一定要使用break语句
D.if(a>b) m++;else m-- 是一个合法的C++语
2. 下列有关循环控制语句的叙述中,不正确的是( )。
A. while 循环语句是先循环后判断
B. for语句构成的循环可以用break 语句退出
C. while 语句构成的循环可以用for语句构成的循环来代替
D. for 语句的3个表达式均可以省略,但之间的分号不能省略
3. 在定义数组时,对数组元素赋初值,下列正确的是( )。
A. int a[5]={10,11,12,13,14,15};
B. int a[5]={ };
C. int a[5]=10,11,12,13,14;
D. int a[5]={10};
4. 若有定义char str[20]="Book ";则执行下面语句的输出结果是( )。
cout << strlen(str) << "," << sizeof(str) << endl;
A. 20,6
B. 6,20
C. 5,20
D. 20,5
5. 若定义int a = 066,则执行cout << a;语句后,输出的结果是( )。
A. 54
B. 66
C. 78
D. 102
6. 对长度为n的线性表进行顺序查找,时间复杂度为( )
A. O(n)
B. O(log2n)
C. O(n-1)
D. O(n+1)
7. 顺序查找适合线性表的存储结构为( )
A. 链接存储
B. 压缩存储
C. 散列存储
D. 索引存储
8. 若有以下代码,则数组 arr 的长度是( )
int arr [] = {1, 2, 3, 4, 5};
A. 3
B. 4
C. 5
D. 6
9. 下列哪个是 C++语言中用于获取字符串长度的函数( )。
A. length()
B. len()
C. getLength()
D. strlen ()
10. 在下列代码的横线处填写 (),可以保证输出是“1357”,不会有多余字符( )
#include
#include
using namespace std;
int main () {
char str [] = "1234567";
for (____________________) // 在此处填入代码
cout << str [i];
return 0;
}
A. int i = 0; i < strlen (str); i++
B. int i = 0; str [i] != \0 ; i++
C. int i = 1; i <= 7; i += 2
D. int i = 0; i <= 6; i += 2
11. 如果 a 和 b 均为 int 类型的变量,下列表达式能正确判断“a等于b”的是( )
A. ((a / b) == 1)
B. ((a & b) == a)
C. ((a ^ b) == 0)
D. ((a | b) == b)
12. 如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足“大于等于a且是4的倍数”的整数中最小的( )
A. (a & (~3))
B. ((a > 2))
C. (a ^ 3)
D. ((a - 1) | 3) + 1
13. 逻辑表达式( )的值与变量 A 的真假无关( )
A. (A ˅ B) ˄ ¬A
B. (A ˅ B) ˄ ¬B
C. (A ˄ B) ˅ (¬A ˄ B)
D. (A ˅ B) ˄ ¬A ˄ B
14. 输入行数,约定 ,输出以下图形。应在C++代码横线处填入( )
A. (lineCount - i - 1) * 2
B. (lineCount - i) * 2
C. lineCount - i - 1
D. lineCount - i
15. 某班级人数不知,连续输入成绩直到输入负数停止,输入结束后求出平均成 绩。在以下C++代码横线处应填入是( )
A. true
B. false
C. True
D. False
二、判断题(共 5 题,每题 2 分,共计 10 分)
1. 在 C++语言中,标识符中可以有下划线‘_ ’。同时,‘_ ’也是 C++语言的运算符( )
A.正确
D.错误
2. 如果 a 是 double 类型的变量,而且值为 3.5,则表达式 a * 10 的计算结果 为 35,且结果类型为 int( )
A.正确
D.错误
3. 在 if 语句中,如果条件成立时需要执行多条语句,可以使用大括号‘{ ’和 ‘}’将这些语句括起来( )
A.正确
D.错误
4. ++和==都是 C++语言的运算符,但+=不是( )
A.正确
D.错误
5. 表达式 sqrt(9.0)的计算结果为 3,且结果类型为 int( )
A.正确
D.错误
编程题
1、求和
题目描述
输入一个正整数 n,求出小于等于 n 的正整数中,能被 3 整除或者能被 5整除的正整数之和。
输入
输入一行,包含一个正整数 n(1<=n<=100)。
输出
输出一行,包含一个正整数,即为符合题意的正整数之和
样例输入
20
样例输出
98
筛选质数
题目描述
最近小明刚刚学到了质数的概念:质数又称素数。一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数叫做质数。最小的质数是 2,它也是唯一的偶数质数。最前面的质数依次排列为:2、3、5、7、11 等。小明觉得质数的概念非常有意思,所以他想知道 n 以内所有的质数,但是自己一个一个的找有点浪费时间,聪明的他一下就想到了 C++编程,可以使用编程的方法很快的找到 n 以内的所有质数。
现在要求输入一个正整数 n,输出小于等于 n 的所有质数。
输入
输入一行,包含一个正整数 n(1<=n<=100)。
输出
输出若干行,每行一个正整数,分别为小于等于 n 的所有质数。
样例输入
10
样例输出
2
3
5
7
和数
题目描述
给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。比如,对于数列1 2 3 4,这个问题的答案就是2,因为3=2+1,4=1+3。
输入
共两行,第一行是数列中数的个数n(1<=n<=100),第二行是
2023年第6届全国青少年人工智能创新挑战赛C++信息学专项真题