2024 年12月
一、单选题 (每题 2 分,共 30 分)
第 1 题 2024年10⽉8⽇,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德(John J. Hopfield)和杰 弗⾥·⾟顿(Geoffrey E. Hinton)。这两位科学家的主要研究⽅向是( )。
A. 天体物理 B. 流体⼒学 C. ⼈⼯智能 D. 量⼦理论
正确答案:C
解析:
瑞典皇家科学院10月8日宣布,将2024年诺贝尔物理学奖授予约翰·J·霍普菲尔德(John J。Hopfield)和杰弗里·E·辛顿(Geoffrey E。 Hinton),以表彰他们利用人工神经网络实现机器学习的奠基性发现和发明。
第 2 题 下列软件中是操作系统的是( )。
A. ⾼德地图 B. 腾讯会议 C. 纯⾎鸿蒙 D. ⾦⼭永中
正确答案:C
解析:
高德地图:应用软件,提供地图数据和导航服务
腾讯会议:应用软件,是一款音视频会议软件
纯血鸿蒙:华为研发的操作系统
金山永中:应用软件,一款办公软件
第 3 题 有关下列C++代码的说法 ,正确的是( )。
printf("Hello,GESP!");
A. 配对双引号内 ,不可以有汉字
B. 配对双引号可以相应改变为英⽂单引号⽽输出效果不变
C. 配对双引号可以相应改变为三个连续英⽂单引号⽽输出效果不变
D. 配对双引号可以相应改变为三个连续英⽂双引号⽽输出效果不变
正确答案:D
解析:
双引号中的内容可以是任何符号,数字、汉字、字符等;B\C错误,D正确
第 4 题 C++表达式 12 - 3 * 2 && 2 的值是(
)。
A. 0 B. 1 C. 6 D. 9
正确答案:B.
解析:
考察运算符以及运算符的优先级。题目中出现了算术运算符 - 和 ;逻辑运算符 &&,算数运算符优先级高于逻辑运算符,先算,再算-,最后算逻辑与&&,结果为 真(1)
第 5 题 在C++中 ,假设N为正整数2 ,则 cout << (N / 3 + N % 3) 将输出( )。
A. 0 B. 2 C. 3 D. 4
正确答案:B.
解析:
考察运算符以及运算符的优先级。
第 6 题 C++语句 cout << 7%3 << ’ '<< “7%3”<< ’ ’ << “7%3={7%3}” 执⾏后的输出是( )。
A. 1 1 1=1 B. 1 7%3 1=1 C. 1 7%3 7%3= 1 D. 1 7%3 7%3={7%3}
正确答案:B.
解析:
考察输出运算符和字符串常量。7%3 结果 1,单引号以及双引号里内容原样输出
第 7 题 下⾯C++代码执⾏后 ,求出⼏天后星期⼏ 。如果星期⽇则输出“星期天”否则输出形如“星期1” 。横线上应填⼊的代码是( )。
int N, nowDay, afterDays;
cout << "今天星期几? " <<endl;
cin >> nowDay;
cout << "求几天后星期几? "<< endl;
cin >>afterDays;
N = nowDay+afterDays;
if( ____________)
printf("星期天");
else
printf("星期%d", N%7);
A. N % 7 != 0 B. N % 7 == 0 C. N == 0 D. N % 7
正确答案:B
解析:
取余运算符。一周7天,周一到周日(周零)正好是对7取余的余数,给了今天是星期几 nowDay 以及过的天数 afterDays,加起来对 7 取余的余数即可计算几天后的星期几,需要注意的是余数0表示周天。
第 8 题 下⾯C++代码执⾏后输出是( )。
int N=0,i;
for (i = 1; i < 10; i++)
N += 1;
cout << (N + i);
A. 54 B. 20 C. 19 D. 18
正确答案:C
解析:N初始值0,循环进行了9次,N加了9次1,循环结束N值为9, i 的值为10,最后输出 N+i=9+10=19
第 9 题 下⾯C++代码执⾏后输出的是( )。
int tnt = 0;
for (i = 0; i < 100; i++)
tnt += i % 10;
cout << tnt;
A. 4950 B. 5050 C. 450 D. 100
正确答案:C
解析:i是循环范围是0~99,i%10使得tnt累加的值范围是0到9;共循环了10次;
(0+1+2+3+4+5+6+7+8+9)*10(高斯算法),结果为450。
第 10 题 下⾯C++代码执⾏后输出的是( )。
int N=0,i;
int tnt = 0;
for (i = 5; i < 100; i+=5){
if (i % 2 == 0){
continue;
tnt += 1;
if (i >= 50)
break;
}
cout << tnt;
A. 10 B. 9 C. 6 D. 5
正确答案:C
解析:循环步长为5,i 的取值:5、10、15…,循环内,第4\5行,如果是偶数,跳过本次循环,第7\8行,大于等于50,跳出循环。因此 i 取值为5、15、25、35、45、55时计数器 tnt 加1,循环结束tnt值为6
第 11 题 下⾯的程序⽤于判断输⼊的整数N是否为能被3整除的偶数 ,横线处应填写代码是( )。
int N;
cin >> N;
if(__________)
cout << "能被3整除的偶数" << endl;
else
cout << "其他情形" << endl;
cout << endl;
A.(N%2)&&(N%3) B.(N%2==0)&&(N%3) C.(N%2)&&(N%3==0) D.(N%2==0)&&(N%3==0)
正确答案:D
解析:注意区分数据真假性和关系表达式的真假。偶数:能被2整除,N%2==0,余数为0。能被3整除,N%3==0,余数为0。两者需同时满足&&;
第 12 题 下⾯C++代码执⾏后的输出是( )。
int cnt;
cnt = 0;
for(int i = 1; i < 10; i++)
cnt += i++;
cout << cnt;
cout << endl;
A. 54 B. 45 C. 25 D. 10
正确答案:C
解析:i++:后自增运算,先赋值i,i再自增1。循环内 i 自增1,循环步长 i++,也是自增1,一次循环 i 相当于加了2次,因此每次循环累加到 cnt 上i的值为:1、3、5、7、9,结果25
第 13 题 int类型变量a的值是⼀个正⽅形的边长 ,如下图中的正⽅形的四条边长都为4 ,则下列哪个语句执⾏后能够使得正⽅形的周长(四条边长的和)增加4?( )。
+ + + + +
+ +
+ +
+ +
+ + + + +
A. a*4; B. a+4; C. a+1; D. ++a;
正确答案:D
解析:正方形周长增加4,边长增加1
第 14 题 C++表达式 (6 > 2) * 2 的值是( )。
**A.**1 B. 2 C. true D. truetrue
正确答案:B
解析:6>2 关系运算符,关系成立,结果为真,值为1,1*2,结果为2。
第 15 题 下⾯C++代码⽤于判断输⼊的整数是否为位增数,即从⾸位到个位逐渐增⼤,是则输出1 。如123是⼀个位增数 。下⾯横线处应填⼊的是( )。
int N;
int n1,n2;
cin >> N;
______________;
while(N){
n1 = N % 10;
if(n1 >= n2){
cout << 0;
return 1;
}
n2 = n1, N /=10;
}
cout << 1;
cout << endl;
return 0;
A. n2 = N%10 B. N /= 10 C. n2 = N/10, N %= 10 D. n2 = N%10, N /= 10
正确答案:D
解析:数位分离,交替使用除和取余运算可以从数中逐个剥离每一位的数。初始化操作,n2=N%10得到N的末尾数,N /= 10,把个位数剥离出去。
二、判断题 (每题 2 分,共 20 分)
第 1 题 在Windows的资源管理器中为已有⽂件A建⽴副本的操作是 Ctrl+C ,然后 Ctrl+V 。( √ )
解析:ctrl + c :复制 ctrl + v:粘贴
第 2 题 在C++中 ,表达式 8/3 和 8%3 的值相同。( √ )
解析:结果都是2
第 3 题 X是C++语⾔的基本类型变量 ,则语句 cin>>X, cout <<X 能接收键盘输⼊并原样输出。 ( × )
解析:定义的数据类型不一样,结果也不一样
第 4 题 下⾯C++代码执⾏后将输出10。 ( × )
int N = 0;
for (int i = 0; i < 10; i++){
continue;
N += 1;
}
cout << N;
解析:所有循环都被第3条语句continue跳过了,所有N的值还是0;
第 5 题 下⾯C++代码执⾏后将输出100 。 ( × )
int i;
for (i = 0; i <= 100; i++)
continue;
cout << i;
解析:i的值是101;
第 6 题 下⾯C++代码被执⾏时 ,将执⾏三次输出(即标记⾏L2将被执⾏⼀次) 。 ( × )
for (int i = 0; i < 10; i+=3)
cout << i; //L2
解析:被执行了4次(0、3、6、9);
第 7 题 C++语句 cout << (3,2) 执⾏后 ,将输出3和2 ,且3和2之间有逗号间隔。 ( × )
解析:逗号运算符主要用于函数调用中的参数分隔,或者在表达式中作为短路运算符。其格式为 expression1, expression2,整个表达式的值等于最后一个表达式的值。因此这里只输出2。
第 8 题 在C++代码中, studentName 、 student_name 以及 sStudentName 都是合法的变量名称。 ( √ )
解析:变量可以由数字,字符和下划线组成
第 9 题 在C++中 ,对浮点变量 float f ,则语句 cin >> f; cout << (f<1); 在输⼊是 2e-1 时 ,输出是0 。 ( × )
解析:科学计数法:2e-1表示2*10-1,其结果为0.2。0.2<1关系表达式成立,结果为1(真)
第 10 题 在C++的循环体内部 ,如果 break 和 continue 语句连续在⼀起 ,那么作⽤抵消 ,可以顺利执⾏下⼀次循环。 ( × )
解析:break,跳出循环,continue,跳过本次循环。互不干扰。
三、编程题 (每题 25 分,共 50 分)
3.1 编程题 1
. 试题名称:温度转换
. 时间限制: 1.0 s
. 内存限制:512.0 MB
3.1.1 题目描述
⼩杨最近学习了开尔⽂温度、摄⽒温度和华⽒温度的转换 。令符号 K 表⽰开尔⽂温度 ,符号 C 表⽰摄⽒温度 ,符号
F 表⽰华⽒温度 ,这三者的转换公⽰如下:
C=K - 73. 15
F = C * 1.8 + 32
现在⼩杨想编写⼀个程序计算某⼀开尔⽂温度对应的摄⽒温度和华⽒温度 ,你能帮帮他吗?
3.1.2 输入格式
⼀⾏ ,⼀个实数K,表⽰开尔⽂温度。
3.1.3 输出格式
⼀⾏ ,若输⼊开尔⽂温度对应的华⽒温度⾼于 212 ,输出 Temperature is too high! ;
否则,输出两个由空格分隔的实数 C和F ,分别表⽰摄⽒温度和华⽒度 ,保留两位⼩数。
3.1.4 样例
3.1.5 输入样例 1
412.00
3.1.6 输出样例 1
Temperature is too high!
3.1.7 输入样例 2
173.56
3.1.8 输出样例 2
-99.59 -147.26
3.1.9 数据范围
0 < K < 105
3.1.10 参考程序
#include <cstdio>
using namespace std;
int main() {
double k;
scanf("%lf", &k);//%lf:表示要读取一个双精度浮点数(double类型)
//%f 用于 float 类型(单精度浮点数)
//%lf 专用于double类型(双精度浮点数)
//注意:在 printf 中,%f可以同时输出 float和double,但在scanf中必须严格区分%f(float)和 %lf(double)。
double c = k - 273.15;
double f = 32 + c * 1.8;
if (f > 212)
printf("Temperature is too high!\n");
else
printf("%.2f %.2f\n", c, f);
return 0;
}
3.2 编程题 2
. 试题名称:奇数和偶数
. 时间限制: 1.0 s
. 内存限制:512.0 MB
3.2.1 题面描述
⼩杨有 n 个正整数 ,他想知道其中的奇数有多少个 ,偶数有多少个。
3.2.2 输入格式
第⼀⾏包含⼀个正整数 n ,代表正整数个数。
之后 n ⾏ ,每⾏包含⼀个正整数。
3.2.3 输出格式
输出两个正整数(⽤英⽂空格间隔) ,代表奇数的个数和偶数的个数 。如奇数或偶数的个数为0 ,则对应输出0。
3.2.4 样例
输入
5
1
2
3
4
5
输出:3 2
对于全部数据 ,保证有 1 ≤ n ≤ 105 且正整数大小不超过 105。
3.2.5参考程序
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int a=0,b=0;
cin>>n;
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(x%2!=0) a++;
else b++;
}
cout<<a<<" "<<b<<endl;
}