GESP C++ 一级样题卷

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

1. 人们在使用计算机时所提到的 Windows 通常指的是( )。
A. 操作系统
B. 多人游戏
C. 上市公司
D. 家居用具
答案:A
解释:略
2. 计算机领域的图灵奖为了纪念( )科学家图灵。
A. 英国
B. 德国
C. 瑞典
D. 法国
答案:A
解释:略
3. 下列关于 C++语言的叙述,不正确的是()。
A. 变量使用前必须先定义
B. if 语句中的判断条件必须写在 ()中
C. for 语句的循环体必须写在{}中
D. 程序必须先编译才能运行
答案:C
解释:
for 语句的循环体可以不写在{}中,只要循环体是从属关系就可以了
4. 不可以作为 C++标识符的是( )。
A. a_plus_b
B. a_b
C. a+b
D. ab
答案:C
解释:
标识符又称变量名,可以由字母、数字和下划线,注意首字符不能是数字
5. 常量'3'的数据类型是( )。
A. int
B. char
C. bool
D. double
答案:B
解释:
标识符又称变量名,可以由字母、数字和下划线,注意首字符不能是数字
6. 按照 C++语言的语法,以下不是正确的变量定义语句是( )。
A. int a;
B. int a = 10;
C. int a(10);
D. a = 10;
答案:D
解释:

7. 下列符号不是 C++语言的运算符的是( )。
A. $
B. %
C. =
D. *
答案:A
解释:略
8. 如果用两个 int 类型的变量 a 和 b 分别表达直角三角形两条直角边的长度, 则下列哪个表达式可以用来计算三角形的面积?( )
A. a * b / 2
B. a / 2 * b
C. 1 / 2 * a * b
D. a * b * 0.5
答案:D
解释:
在 C++ 中,如果ab都是int类型的变量,那么我们需要注意整数除法的问题。

  • 选项 A (a * b / 2):这个表达式首先计算 a * b,然后将结果除以 2。由于 a 和 b 都是 int 类型,所以这个表达式可以正确地计算出面积。

  • 选项 B (a / 2 * b):这个表达式首先将 a 除以 2,然后将结果乘以 b。由于 a 和 b 都是 int 类型,所以 a / 2 可能会丢失小数部分,导致结果不准确。

  • 选项 C (1 / 2 * a * b):这个表达式首先计算 1 / 2,然后将结果乘以 a * b。但是,由于 1 和 2 都是 int 类型,所以 1 / 2 的结果是 0,导致整个表达式的结果也是 0

  • 选项 D (a * b * 0.5):这个表达式首先计算 a * b,然后将结果乘以 0.5。由于 0.5 是 double 类型,所以这个表达式可以正确地计算出面积,但结果会是 double 类型,而不是 int 类型。

所以,如果你希望结果是 int 类型,那么正确的答案是选项 A。如果你希望结果是 double 类型,那么正确的答案是选项 D。

9. 表达式(3 + 12 / 3 * 2)的计算结果为( )。
A. 10
B. 5
C. 11
D. 2
答案:C
解释:根据运算符的优先级,12/3=4,4*2=8,8+3=11
10. 如果 a 为 int 类型的变量,且 a 的值为 6,则执行 a = a + 3;之后,a 的值
会是( )。
A. 0
B. 3
C. 6
D. 9
答案:D
解释:略
11. 如果 a 和 b 均为 int 类型的变量,下列表达式能够正确判断“a 不等于 0 或
b 不等于 0”的是( )
A. !a == 0 && !b == 0
B. !(a == 0 && b == 0)
C. (a != 0) && (b != 0)
D. a && b
答案:B
解释:略
12. 如果 a 为 int 类型的变量,下列表达式不能正确表达“a 是奇数时结果为 0,否则结果非 0”的是( )。
A. a %= 2
B. a / 2 * 2 == a
C. a % 2 == 0
D. (a + 1) % 2
答案:A
解释:选项A:
a %= 2,a=a%2,如果a 为 0,选项A肯定是偶数
13. 在下列代码的横线处填写( ),可以使得输出是 “2010”

A. a = b; b = a;
B. a = max(a, b); b = min(a, b);
C. a = a + b; a = a - b; b = a - b;
D. int tmp = a; a = b; b = tmp;
答案:D
解释:从输入、输出来看,输出对输入的两个值进行了互换,所以选择D
14. 在下列代码的横线处填写( ),可以使得输出是“111111”。
A. i++
B. i += 3
C. i *= 2
D. i = i * 3 - 1
答案:B
解释:一共输出6个“1”,B选项:i=1,输出1;i=4,输出1;i=7,输出1;i=10,输出1;i=13,输出1;i=16,输出1;一共输出6个“1”,只有B选项符合
15. 执行以下 C++语言程序后,输出结果是( )。

A. 56
B. 13
C. 12
D. 60
答案:A
解释:注意if语句有问题,正常的if语句是“if(i>=3&&i<=5)”而题目给的是
所以这条语句在循环中跳过,sum=1+2+3+4+......+10=1+(1+10)*10/2=56

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

1. 操作系统是让用户可以操纵计算机完成各种功能的软件。( )
答案:错误
解释:
操作系统是让用户可以操纵计算机“运行”各种功能的软件
2. 要执行 Windows 的桌面上的某个程序,通常需至少连续点击程序图标 3 次。 ( )
答案:错误
解释:
通常需至少连续点击程序图标2 次
3. 注释是对于 C++程序员非常有用,但会被 C++编译器忽略。( )
答案:正确
解释:
4. C++语言中的标识符只能由大写字母和小写字母组成。( )
答案:错误
解释:
标识符又称变量名,可以由字母、数字和下划线,注意首字符不能是数字
5. 3.0 是一个 int 类型常量。( )
答案:错误
解释:
3.0 是float类型
6. 能用 while 语句编写的循环,就可以使用 for 语句编写出具有同样功能的循环。( )
答案:正确
解释:略
7. 在每个 if 语句中,都必须有 else 子句与 if 配对使用。( )
答案:错误
解释:略
8. C++语言中也遵循与“先乘除、后加减”类似的运算符优先级规则。( )
答案:正确
解释:略
9. 如果 a 为 int 类型的变量,且表达式(a % 4 == 0)的计算结果为真,说明 a 的值是 4 的倍数。( )
答案:正确
解释:略
10. 表达式(6.0 / 3.0)的计算结果为 2,且结果类型为 int 类型。( )
答案:错误
解释:
表达式 (6.0 / 3.0) 的计算结果为 2.0,结果类型也不是 int 类型,而是 double 类型

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

1. 【问题描述】
小明刚刚学习了小时、分和秒的换算关系。他想知道一个给定的时刻是这
一天的第几秒,你能编写一个程序帮帮他吗?
【输入描述】
输入一行,包含三个整数和一个字符。三个整数分别表示时刻的时、分、
秒;字符有两种取值,大写字母'A'表示上午,大写字母'P'表示下午。
【输出描述】
输出一行,包含一个整数,表示输入时刻是当天的第几秒。
【样例输入 1】
0 0 0 A
【样例输出 1】
0
【样例输入 2】
11 59 59 P
【样例输出 2】
86399
【参考程序】
#include <iostream>
using namespace std;
int main() {
int h = 0, m = 0, s = 0;
char noon = 'A';
cin >> h >> m >> s >> noon;
int sec = h * 60 * 60 + m * 60 + s; // 计算秒数
if (noon == 'P') // 处理上下午
sec += 12 * 60 * 60;
cout << sec << endl; // 输出秒数
return 0;
}
2. 【问题描述】
小明刚刚学习了如何判断平年和闰年,他想知道两个年份之间(包含起始
年份和终止年份)有几个闰年。你能帮帮他吗?
【输入描述】
输入一行,包含两个整数,分别表示起始年份和终止年份。约定年份在 1
到 2022 之间
【输出描述】
输出一行,包含一个整数,表示闰年的数量。
【样例输入 1】
2018 2022
【样例输出 1】
1
【样例输入 2】
2000 2004
【样例输出 2】
2
【参考程序】
#include <iostream>
using namespace std;

int main() {
    int s = 0, t = 0, cnt = 0;

    // 输入起始年份 s 和结束年份 t
    cin >> s >> t;

    // 循环遍历从 s 到 t 之间的年份
    for (int y = s; y <= t; y++) {
        // 判断是否是闰年的条件:能被 400 整除或者能被 4 整除但不能被 100 整除
        if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
            cnt++; // 如果是闰年,计数器加 1
    }

    // 输出在指定年份范围内的闰年个数
    cout << cnt << endl;
    return 0;
}

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值