2024年3月真题
一、单选题(每题2分,共30分)
第 1 题 若函数声明为 int f(int &x){ x+=3; return x; } ,则对声明的变量 int a=3 ,下⾯哪个调⽤能够改变 a 的值( )。
- A. f(&a);
- B. f(*a);
- C. f(a);
- D. f(a-3);
第 2 题 下⾯C++代码执⾏后,输出的是( )。
int main() { int x[]={2, 0, 2, 4}; char geSP[]="Grade Examination of SP"; cout << geSP[sizeof(x)] << endl; cout << endl; return 0; }
- A. G
- B. e
- C. n
- D. P
第 3 题 下⾯C++代码执⾏后输出是( )。
int foo(float *f) { return int(*f*2); } int main() { float fnum[10]={1.1}; fnum[1]=foo(fnum); cout << fnum[0]+fnum[1] << endl; cout << endl; return 0; }
- A. 1
- B. 1.1
- C. 3
- D. 3.1
第 4 题 对⼆维数组 int arr[3][16]; ,则 arr[1] 占⽤内存的⼤⼩为( )字节。
- A. 4
- B. 16
- C. 48
- D. 64
第 5 题 对⼆维数组 int arr[3][16]; ,若 arr 的地址是 0x28cc00,则 arr[1] 的值是()。
- A. 0x28cbc4
- B. 0x28cbd0
- C. 0x28cc00
- D. 不确定
第 6 题 下⾯C++代码执⾏后输出是( )。
int main() { char *p="I love GESP!"; cout << p+5 << endl; cout << endl; return 0; }
- A. e
- B. I lov
- C. e GESP!
- D. GESP!
第 7 题 下⾯C++代码执⾏以后输出的是( )。
int rc=5; int main() { int rc; cout << ++rc << endl; cout << endl; return 0; }
- A. 0
- B. 1
- C. 6
- D. 不确定
第 8 题 下⾯C++函数中采⽤的算法是( )。
int fib(int n) { int i, f[n]={0, 1}; for(int i=2; i<=n; i++) f[i]=f[i-1]+f[i-2]; return f[n]; }
- A. 递推
- B. 递归
- C. 迭代
- D. 循环
第 9 题 插⼊排序在最好情况下的时间复杂度是( )。
- A. O(1)
- B. O(N/2)
- C. O(N)
- D. O(N^2)
第 10 题 在如下的C++代码执⾏后,设第11和12⾏的输出地址值分别为 X 和 Y ,则下⾯正确的是( )。
struct pass { int no; char name[20]; int level; }; int main() { struct pass XiaoYang; cout << "&XiaoYang=" << &XiaoYang << endl; //第11行 cout << "&(XiaoYang.no)=" << &(XiaoYang.no) << endl; //第12行 cout << endl; return 0; }
- A. X > Y
- B. X == Y
- C. X < Y
- D. 不确定
第 11 题 如果⽂件 1.txt 中的内容如下,则执⾏下⾯C++代码时,注释了 #### 那⾏代码所输出的 x 的值为( )。
50 2024 3.16 I love GESP!
int main() { ifstream fin; string line; int x; fin.open("1.txt",ios::in); for (int i=0; i< 2; i++){ fin >> line; cout << line << endl; } fin >> x; cout << x << endl; //#### cout << endl; return 0; }
- A. 5
- B. 2024
- C. 3
- D. 0
第 12 题 执⾏下列C++代码时输出中的第2⾏是( )。
int main() { char *s[]={(char*)"2024",(char*)"3.16",(char*)"GESP"}; for (int i=0; i< 2; i++){ cout << *s+i << endl; } cout << endl; return 0; }
- A. 2024
- B. 3.16
- C. 024
- D. 3
第 13 题 C++语⾔中下⾯哪个关键字能够限定对象的作⽤域( )。
- A. extern
- B. static
- C. inline
- D. public
第 14 题 ⼩杨的⽗母最近刚刚给他买了⼀块华为⼿表,他说⼿表上跑的是鸿蒙,这个鸿蒙是( )。
- A. ⼩程序
- B. 计时器
- C. 操作系统
- D. 神话⼈物
第 15 题 中国计算机学会(CCF)在2024年1⽉27⽇的颁奖典礼上颁布了王选奖,王选先⽣的重⼤贡献是( )。
- A. 制造⾃动驾驶汽车
- B. 创⽴培训学校
- C. 发明汉字激光照排系统
- D. 成⽴⽅正公司
二、判断题(每题2分,共20分)
第 1 题 对 int a[]={2,0,2,4,3,1,6} ,执⾏第⼀趟选择排序处理后 a 中数据变为 {0,2,2,4,3,1,6} 。( )
第 2 题 如果待排序数据不能都装进内存,需要使⽤外排序算法。( )
第 3 题 定义变量 int a=5 ,则 cout << &++a 会输出 6 。( )
第 4 题 两个函数之间可以使⽤全局变量来传递数据。( )
第 5 题 定义数组 int a[2024][3][16]={2,0,2,4,3,1,6} ,则 cout << a[2023][2][15] 的结果不确定。( )
第 6 题 在 C++ 语⾔中,函数的参数为指针时,可以在函数内部修改该参数的值。( )
第 7 题 在 C++ 语⾔中 try ⼦句⾥抛出的结构体等类型的异常⽆法被 catch 捕获。( )
第 8 题 C++ 语⾔中 cout << 9^2 << endl; 会输出 81。( )
第 9 题 ⼩杨今年春节回奶奶家了,奶奶家的数字电视要设置 ip 地址并接⼊到 WIFI 盒⼦才能收看节⽬,那这个 WIFI 盒⼦具有路由器的功能。( )
第 10 题 任何⼀个 for 循环都可以转化为等价的 while 循环。( )
三、编程题(每题25分,共50分)
3.1 编程题 1
3.1.1 问题描述
对于两个字符串 A 和 B,如果 A 可以通过删除一个字符,或插入一个字符,或修改一个字符变成 B,那么我们说 A 和 B 是相似的。
比如 apple 可以通过插入一个字符变成 applee,可以通过删除一个字符变成 appe,也可以通过修改一个字符变成 bpple,因此 apple 和 applee、appe、bpple 都是相似的。但 applee 并不能通过任意一个操作变成 bpple,因此它们并不相似。
特别地,完全相同的两个字符串也是相似的。
给定 T 组 A 和 B,请你分别判断他们是否相似。
3.1.2 输入描述
第一行一个正整数 T。
接下来 T 行,每行两个用空格隔开的字符串 A 和 B。
保证 T ≤ 100,A, B 的长度不超过 50。保证 A 和 B 只包含小写字母。
3.1.3 输出描述
输出 T 行,对于每组 A 和 B,如果它们相似,则输出 similar,否则输出 not similar。
3.1.4 样例输入 1
5
apple applee
apple appe
apple bpple
applee bpple
apple apple
3.1.5 样例输出 1
similar
similar
similar
not similar
similar
3.2 编程题 2
3.2.1 问题描述
小杨同学为了提高自己的实力制定了做题计划,在第 n 天时,他必须要完成 n 道题,否则他就会偷懒。
小杨同学现在找到了一个题库,一共有 n 套题单,每一套题单中有一定数量的题目。但是他十分挑剔,每套题单他只会使用一次,每一天也只能使用一套题单里的题目,之后那套题单就会被弃之不用。对于每套题单,他不必完成题单内所有的题。
那么问题来了,小杨同学最多会做题几天才偷懒呢?
3.2.2 输入格式
第一行,1个数 n ,表示有多少套题单。
第二行,n个整数 a1,a2, … ,an,分别表示每套题单有多少道题。
3.2.3 输出格式
输出一行,小杨同学偷懒前最多做题天数。
3.2.4 样例输入 1
4
3 1 4 1
3.2.5 样例输出 1
3
对于全部数据,保证有1 ≤ n ≤ (10^6),1 ≤ ai ≤(10^9)