2024年3月GESP C++编程2级

阅读量: 72 编辑
2024年3月

GESP CCF 编程能力等级认证  C++编程二级

共 27 题,编程题有参考答案

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

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

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

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

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

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

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;

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

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;

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

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;

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

int n, masks, days, cur;
n = 17, masks = 10, days = 0;
cur = 2;
while (masks != n) {
    if (cur == 0cur == 1)
        masks += 7;
    masks -= 1;
    days += 1;
    cur = (cur + 1) % 7;
}
cout << days;

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

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 << "否";

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

int n, i;
cin >> n;
i = n % 5;
if (_______) //在此处填写代码
    cout << "晒网";
else
    cout << "打鱼”;

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

int n, a, k;
cin >> n;
a = 0;
k = n;
while (n > 0) {
    a = _______; // 在此处填写代码
    n /= 10;
}
if (a == k)
    cout "是回文数";
else
    cout "不是回文数";

13、给定两个整数n与 k ,打印出⼀个栅栏图形,这个栅栏应该分成n段,段与段之间的间隔为 + , 段内的填充 为 k个 - 。 形如n=5,k=6时,图形如下所示。以下程序代码用于绘制该图形,横线处应填写?( )

int n, k, i, j;
n = 5, k = 6;
for (i = 0; i < n; i++) {
    ______ //在此处填写代码
        for (j = 1; j < k; j++) 
            cout << '-';
}
cout << '+';

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

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

16、如果有以下C++代码,那么 cout << t 的结果为 28.5 。()

double s;
int t;
s = 18.5;
t = int(s) + 10;

17、Xyz , xYz , xyZ 是三个不同的变量。()

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

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

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

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

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

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

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

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

26、乘法问题

小 A 最近刚刚学习了乘法,为了帮助他练习,我们给他若干个正整数,并要求他将这些数乘起来。对于大部分题⽬,小 A 可以精准地算出答案,不过,如果这些数的乘积超过10⁶ ,小 A 就不会做了。请你写⼀个程序,告诉我们小 A 会如何作答。

【输入描述】

第⼀行⼀个整数n ,表示正整数的个数。接下来n行,每行⼀个整数 a。小 A 需要将所有的a乘起来。保证n≤50,a≤100 。

【输出描述】

输出⼀行,如果乘积超过10⁶,则输出 >1000000 ;否则输出所有数的乘积。

【特别提醒】

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

【输入样例】

2
3
5

【输出样例】

15

【参考程序】

//爱码岛编程 
#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    long long product = 1;
    for (int i = 0; i < n; ++i) {
        int a;
        cin >> a;
        if (product * a > 1000000) {
            cout << ">1000000" << endl;
            return 0;
        }
        product *= a;
    }
    cout << product << endl;
    return 0;
}

27、小杨的日字矩阵

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

|---|
|xxx|  
|---|  
|xxx|  
|---|

请你帮小杨根据给定的 打印出对应的“日字矩阵”。

【输入描述】

⼀行⼀个整数N(5≤N≤49 ,保证N为奇数)。

【输出描述】

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

【特别提醒】

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

【输入样例】

1 7

【输出样例】

|-----|
|xxxxx| 
|xxxxx| 
|-----|  
|xxxxx|
|xxxxx|  
|-----|

【参考程序】

// 爱码岛编程
#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            char ch;
            if (j == 0 || j == n - 1) {
                ch = '|';
            } else if (i == 0 || i == n - 1 || i == n / 2) {
                ch = '-';
            } else {
                ch = 'x';
            }
            cout << ch;
        }
        cout << endl;
    }
    return 0;
}
爱码岛编程公众号
微信扫码关注
爱码岛编程小程序
微信扫码打开
苏ICP备13052010号
©2023 南京匠成信息科技有限公司