CCF编程能力等级认证GESP—C++2级—20240316

CCF编程能力等级认证GESP---C++2级---20240316

单选题(每题 2 分,共 30 分)

1、下列流程图的输出结果是?( )

cpp 复制代码
A. 优秀
B. 良好
C. 不及格 
D. 没有输出

2、以下选项中不符合 C++变量命名规则的是?( )

cpp 复制代码
A. student
B. 2_from 
C. _to
D. Text

3、以下选项中,不能用于表示分支结构的C++保留字是?( )

cpp 复制代码
A. switch
B. return 
C. else 
D. if

4、下列说法错误的是?( )

cpp 复制代码
A. while 循环满足循环条件时不断地运行,直到指定的条件不满足为止
B. if 语句通常用于执行条件判断
C. 在C++中可以使用 foreach 循环
D. break 和 continue 语句都可以用在 for 循环和 while 循环中

5、下列4个表达式中,答案不是整数8的是?( )

cpp 复制代码
A. abs(-8)
B. min(max(8, 9), 10) 
C. int(8.88)
D. sqrt(64)

6、下面C++代码执行后的输出是?()

cpp 复制代码
int n,a,m,i; 
n=3,a=5;
m=(a-1)*2;
for (i=0; i<n-1; i++)
	m = (m - 1) * 2;
cout << m;
cpp 复制代码
A. 8 
B. 14 
C. 26 
D. 50

7、下面C++代码执行后的输出是?()

cpp 复制代码
int n,i,result;
n=81; 
i=1,result=1; 
while(i*i<=n){
	if (n % (i * i) == 0)
    	result = i * i;
	i += 1;
}
cout << result;
cpp 复制代码
A. 16 
B. 36 
C. 49 
D. 81

8、下面C++代码执行后的输出是?()

cpp 复制代码
int s,t,ans; 
s=2,t=10; ans=0;
while (s != t){
    if (t % 2 == 0 && t / 2 >= s)
        t /= 2;
	else
        t -= 1;
    ans += 1;
}
cout << ans;
cpp 复制代码
A. 2 
B. 3 
C. 4 
D. 5

9、下面C++代码执行后的输出是?()

cpp 复制代码
int n, masks, days,cur; 
n=17,masks=10,days=0; 
cur=2;
while (masks != n){
    if (cur == 0 || cur == 1)
        masks += 7;
    masks -= 1;
    days += 1;
    cur = (cur + 1) % 7;
}
cout << days;
cpp 复制代码
A. 5 
B. 6 
C. 7 
D. 8

10、以下C++代码判断一个正整数N的各个数位是否都是偶数。如果都是,则输出"是",否则输出"否"。例如 N=2024时输出"是"。则横线处应填入( )。

cpp 复制代码
int N,Flag;
cin >> N;
Flag = true;
while (N != 0){
    if (N %2 != 0){
        Flag = false;
        _____________
	}
	else
		N /= 10;
}
if(Flag == true)
	cout << "是"; 
else
cout << "否";
cpp 复制代码
A. break
B. continue 
C. N = N / 10 
D. N = N % 10

11、有句俗话叫"三天打渔,两天晒网"。如果小杨前三天打渔,后两天晒网,一直重复这个过程,以下程序代码 用于判断,第n天小杨是在打鱼还是晒网,横线处应填写?( )

cpp 复制代码
int n,i;
cin >> n;
i=n%5;
if (__________________) // 在此处填写代码
	cout << "晒网"; 
else
	cout << "打鱼";
cpp 复制代码
A. i == 0
B. i == 4
C. i == 0 && i == 4 
D. i == 0 || i == 4

12、一个数的所有数字倒序排列后这个数的大小保持不变,这个数就是回文数,比如 101 与 6886 都是回文数, 而 100 不是回文数。以下程序代码用于判断一个数是否为回文数,横线处应填写?( )

cpp 复制代码
int n, a, k;
cin >> n;
a = 0;
k = n;
while (n > 0){
    a = ________
    n /= 10;
}
if (a == k)
    cout << "是回文数";
else
    cout << "不是回文数";
cpp 复制代码
A. 10 * a + n % 10 
B.a +n%10
C. 10 * a + n / 10 
D. a + n / 10

13、给定两个整数 与 ,打印出一个栅栏图形,这个栅栏应该分成 段,段与段之间的间隔为 + , 段内的填 充为 个 - 。形如 , 时,图形如下:

cpp 复制代码
+------+------+------+------+------+

以下程序代码用于绘制该图形,横线处应填写?( )

cpp 复制代码
int n, k, i, j;
n = 5, k = 6;
for (i = 0; i < n; i++){
    ________ //在此处填写代码
    for (j = 1; j < k; j++)
        cout << '-';
}
cout << '+';
cpp 复制代码
A. cout << '+' << endl;
B. cout << '+' << ' ' << endl; 
C. cout << '+';
D. cout << '+' << ' ';

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

cpp 复制代码
A. 小程序
B. 计时器 
C. 操作系统 
D. 神话人物

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

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

判断题(每题 2 分,共 20 分)

1、如果有以下C++代码:

cpp 复制代码
double s;
intt;
s = 18.5;
t=int(s)+10;

那么 cout << t 的结果为 28.5 。
2、Xyz,xYz,xyZ是三个不同的变量。

3、cout << (8< 9< 10)的输出结果为true。

4、for (i = 0; i < 100; i+=2) ; 语句中变量i的取值范围是0到99。

5、C++中 cout << float(2022) 与 cout << float('2022') 运行后的输出结果均为2022。

6、已知 A 的ASCII码值为65,表达式 int('C')+abs(-5.8) 的值为72.8。

7、bool() 函数用于将给定参数或表达式转换为布尔类型。语句 bool(-1) 返回的是 false 值。( )

8、如果变量 a 的值使得C++表达式 sqrt(a)==abs(a) ,则 a 的值为0。( )

9、小杨今年春节回奶奶家了,奶奶家的数字电视要设置ip地址并接入到WIFI盒子才能收看节目,那这个WIFI盒 子具有路由器的功能。

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

编程题 (每题 25 分,共 50 分)

乘法问题

【问题描述】

小A最近刚刚学习了乘法,为了帮助他练习,我们给他若干个正整数,并要求他将这些数撑起来。

对于大部分题目,小A可以精准地算出答案,不过,如果这些数的乘积超过 1 0 6 10^6 106,小A就不会做了。

请你写一个程序,告诉我们小A会如何作答。
【输入描述】

第一行一个整数n,表示正整数的个数。

接下来n行,表示一个整数a,小A需要将所有的a乘起来。

保证 n < = 50 , a < = 100 n <= 50, a <= 100 n<=50,a<=100。
【输出描述】

输出一行,如果乘积超过 1 0 6 10^6 106,则输出>1000000; 否则输出所有数的乘积。
【特别提醒】

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
【样例输入 1】

2

3

5
【样例输出 1】

15
【样例输入 2】

3

100

100

100
【样例输出 2】

1000000
【样例输入 3】

4

100

100

100

2
【样例输出 3】

>1000000

小杨的日字矩阵

【问题描述】

小杨想要构造一个N * N 的日字矩阵( N为奇数),具体来说,这个矩阵共有N 行,每行 N个字符,其中最左列、最右列都是 | ,而第一行、最后一行、以及中间一行(即第 n + 1 2 \frac{n + 1}{2} 2n+1 行)的第2 ~ N - 1个字符都是 - ,其余所有字符都是半角小写字母 x 。例如,一个 N = 5的日字矩阵如下:

cpp 复制代码
|---| 
|xxx| 
|---| 
|xxx| 
|---|

请你帮小杨根据给定的N打印出对应的"日字矩阵"。
【输入描述】

一行一个整数N(5 <= N <= 49,保证N为奇数)
【输出描述】

输出对应的"日字矩阵"。

请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出N行,每行除了换行符外恰好包含 N个字符,这些字符要么是 - ,要么是 | ,要么是 x 。你的输出必须和标准答案完全一致才能得分, 请在提交前仔细检查。
【特别提醒】

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
【样例输入 1】

5
【样例输出 1】

cpp 复制代码
|---|
|xxx|
|---|
|xxx|
|---|

【样例输入 2】

7
【样例输出 2】

cpp 复制代码
|-----| 
|xxxxx|  
|xxxxx|  
|-----|  
|xxxxx|  
|xxxxx|  
|-----|

参考答案

单选题

题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 B B B C B C D B C A D A C C C

判断题

题号 1 2 3 4 5 6 7 8 9 10
答案 × × × × ×

编程题1

cpp 复制代码
#include <iostream>

using namespace std;

int main() {
    long long n, ans = 1, a;
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> a;
        if (ans * a > 1000000) {
            cout << ">1000000" << endl;
            return 0;
        }
        ans *= a;
    }
    cout << ans << endl;
    return 0;
}

编程题2

cpp 复制代码
#include <iostream>

using namespace std;

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++){
        for (int j = 1; j <= n; j++){
            if (j == 1 || j == n){
                cout << '|';
            }else if(i == 1 || i == n || i == (n + 1) / 2){
                cout << '-';
            }else{
                cout << 'x';
            }
        }
        cout << endl;
    }
    return 0;
}
相关推荐
UestcXiye1 小时前
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列
c++·计算机网络·ip·tcp
好奇龙猫2 小时前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
霁月风2 小时前
设计模式——适配器模式
c++·适配器模式
sp_fyf_20242 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
香菜大丸3 小时前
链表的归并排序
数据结构·算法·链表
jrrz08283 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
oliveira-time3 小时前
golang学习2
算法
咖啡里的茶i3 小时前
Vehicle友元Date多态Sedan和Truck
c++
海绵波波1073 小时前
Webserver(4.9)本地套接字的通信
c++
@小博的博客3 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习