试卷总分:100分
选择题 10题 20分
判断题 10题 20分
编程题 2题 60分
在C++程序中,函数定义的作用是?
有函数 void cal();,下面说法正确的是?
值传递时,函数内部修改形参的值,实参的值?
执行下面代码,输出结果为?
#include <iostream> using namespace std; void f(int &b) { b = b + 5; } int main() { int x=3; f(x); cout<<x; return 0; }
递归程序如果缺少结束条件,会造成?
函数strlen()的功能是?
下面哪一个不属于数学函数库?
枚举法解题的思路是?
下列哪个问题更适合用模拟法而不是枚举法解决?
用模拟法解决“小球下落反弹”问题:一球从100米高度自由落下,每次落地后反弹回原高度的一半,求第10次落地时共经过多少米。编写如下代码,关于这段代码,以下说法正确的是( )。
double h = 100, total = 0; for(int i = 1; i <= 10; i++) { total += h; // 下落 h /= 2; total += h; // 反弹 }
一个 C++程序中,main() 也是一个函数。
函数调用时,如果实参数量多于形参数量,程序一定可以正常运行。
值传递中,形参是实参的一份副本。
递归只能是函数直接调用自身。
递归函数中所有参数都是按引用传递。
C风格字符串末尾自带隐藏结束符'\0'。
strcmp("abc","abd")返回值大于 0。
枚举范围过大时,程序运行耗时会增加。
模拟法和枚举法是两种完全不同的算法,它们不可能在同一个问题中同时使用。
模拟法只能按照事件发生的正向顺序进行模拟,不能从结果反推过程。
有 A、B 两个水杯,容量分别为 ca、cb 毫升。初始两个杯子都为空。
一共有 4 种操作:
依次执行给定的所有操作,输出操作结束之后 A 杯子、B 杯子当前的水量。
第一行:两个整数 ca, cb,分别代表水杯 A、水杯 B 的容量。
第二行:一个整数 t,表示将要执行的操作次数。
接下来 t 行,每行一个整数,表示一次操作编号(只能是 1、2、3、4)。
一行两个整数,用空格隔开,表示 A 杯子、B 杯子最后的水量。
1≤ca,cb≤10^9,1≤t≤10^6
3 5
4
1
3
2
0 5
给定若干个由小写字母组成的单词。对每个单词,若其以 ing、er、ed、ly 中任一后缀结尾,则删除该后缀;否则原样输出。
每个单词最多只删除一次,删除后不再继续处理新得到的字符串。
第一行一个整数 t,表示单词个数。
接下来 t 行,每行一个由小写字母组成的单词,长度不超过 50。
共 t 行,每行输出对应单词处理后的结果。
1≤t≤10^6
每个单词长度为 |s|,满足 4≤|s|≤50。
5
playing
worker
walked
happy
erer
play
work
walk
er
ering
ingly
lyingered
ing
lyinger