编程模拟题-五级C++ 1 / 45 以下对字符串的函数描述错误的是( )。 A. splice(1,3) 用于删除或添加元素 B. strcpy(s1,s2) 用于复制字符串s2到字符串s1 C. strlen(s) 用于返回字符串s的长度 D. strchr(s, h) 用于返回字符h在字符串s中第一次出现的位置 本题从处理字符串时常用的几个函数的理解与应用方向考察学生编程操作能力。其中splice(1,3)并非字符串操作函数,而是在C++中处理数组和向量时使用的,它可以在数组或向量中插入或删除元素。因此,正确答案选A。 2 / 45 定义变量 int n = 5; 下面运行结果中,与其他3项不同的是?( ) A. n += 1 B. n ++ C. n + 1 D. ++ n 本题从不同加法操作符的作用方向考察学生编程操作能力。n += 1,n++和++n都会使n的值增加1,但n+1只是计算n+1的值,不会改变n的值。因此,正确答案选C。 3 / 45 观察以下程序,如果想输出4该如何修改程序?( ) A. a 的初始值赋值为3 B. 判断条件改成 a > b C. b + 1 改成 b + 3 D. b的初始值赋值为4 本题从方向考察学生编程操作能力。在这个程序中,使用了C++的条件运算符(?:),这个表达式的格式是 (条件) ? 表达式1 : 表达式2 。如果条件为真,表达式将值设为表达式1的结果,如果条件为假,表达式将值设为表达式2的结果。当前的代码是 cout <<(a<b?a*a:b+1);这段代码的含义是:如果a小于b,那么输出a的平方,否则输出b+1。由于当前a在这个条件下小于b,所以结果是a的平方,也就是 -1*-1 = 1。选项B,如果将判断条件更改为a>b,那么在现有的a和b值下(即a=-1,b=3),判断条件将为假,因此结果将是b+1,即4。因此,正确答案选B。 4 / 45 下列输出 g 的值是( )。 A.报错 B.10 C.0 D.5 本题从全局变量和局部变量的使用方法方向考察学生编程操作能力。全局变量g的初始值为10。然后,在main()函数中定义了一个局部变量g,并赋值为5。当在main函数内部寻找变量g的值时,由于在函数内部已经定义了同名变量,所以会优先使用函数内的局部变量。所以,最终输出的结果是5,因为在main函数内部cout<<g<<endl;这条语句中的g指的是局部变量,其值为5。因此,正确答案选D。 5 / 45 下列能将字符变量s中的小写字母转换成大写字母的操作是( ) A. s = S B. s.toUpperCase() C. s = s + 32 D. s = s — 32 本题从字符变量大小写转换方法方向考察学生编程操作能力。对于C++程序来说,字符变量s中的小写字母转换为大写字母应该用 ASCII 表来进行转换。在 ASCII 表中,小写字母比大写字母大32,所以减去32可以将小写字母转换为大写字母。因此,正确答案选D。 6 / 45 下列程序输出结果是( )。 A.3 B.5 C.4 D.6 从字符串操作和数组操作方向考察学生能力。在这段代码中,定义了一个二维字符数组,并按单词初始化。然后使用strlen函数计算str11的长度,也就是字符串”banana”的长度。strlen函数是一个常用的C语言库函数,用于计算在C风格字符串(以’�’结束)中的字符数量,不包括’�’。因此,”banana”这个词有6个字母。因此,正确答案选D。 7 / 45 在一个顺序表(1,3,4,6,8,9,12,20,22)中,用二分查找9,需要比较几轮?( ) A.3 B.4 C.5 D.6 本题从二分查找的算法应用方向考察学生编程操作能力。在二分查找中,每一轮都将剩余的搜索区间分为两部分。对于给定的顺序表,首先确定中间元素6,然后比较需要查找的元素9,因为9大于6,所以在第二轮中只需要查看6右边的部分。在第二轮中,又次确定中间元素12,此时9小于12,所以在第三轮中需要查找12左侧的部分。在第三轮中,只剩下一个元素9,与需要查找的元素相同。因此,总共需要比较3轮。因此,正确答案选A。 8 / 45 面向对象特点不包括( )。 A. 封装 B. 继承 C. 扩展 D. 多态 本题从面向对象编程的知识方向考察学生编程操作能力。关于面向对象编程(OOP)的特点,最经典的三个特性是封装、继承、多态,所以不包括C. 扩展。虽然扩展或者叫扩充是OOP编程时经常需要进行的操作,但它并不是OOP的核心特性之一。因此,正确答案选C。 9 / 45 当用户输入7 8时,下列程序输出数字( )。 A.0 B.11 C.15 D.1 本题从程序执行的推理和全局变量与局部变量的使用方法方向考察学生编程操作能力。该代码中,函数add()用于将其参数m和n相加并返回结果。在main()函数中,定义了两个局部变量m和n,并将用户的输入赋值给它们,然后调用add(m, n)输出结果。注意这里的函数参数m和n与全局变量m、n是相互独立的。假设用户输入7 8时,局部变量m的值将为7,n的值将为8,所以函数add(m, n)的结果将为7+8 = 15。所以,当用户输入7 8时,该程序将输出15。因此,正确答案选C。 10 / 45 以下关于数字类型内置函数的描述,正确的是( ) A. sin() 函数返回弧度角的余弦 B. sqrt() 函数返回参数的平方根 C. abs() 函数返回整数的取反值 D. floor() 函数返回参数的最小整数 本题从对内置函数的功能理解方向考察学生编程操作能力。sqrt() 是返回参数的平方根,而不是sin()返回弧度角的余弦,abs()返回整数的绝对值,而不是取反值。floor()返回不大于参数的最大整数,而不是最小整数。因此,正确答案选B。 11 / 45 字符串比较函数 strcmp 用于比较两个字符串是否相等,他比较的原理是什么?( ) A. 比较长度 B. 比较次数 C. 比较ASCII码 D. 比较二进制 本题从字符串操作的原理理解向考察学生编程操作能力。strcmp函数用于比较两个字符串是否相等。它首先从两个字符串的第一个字符开始比较,如果都相同则比较下一个字符,直到有字符不同或者字符串结束。其比较原理是通过比较每个字符的ASCII码值来确定。因此,正确答案选C。 12 / 45 cout << isalpha('n'); 返回值是( ) A. 大于0的值 B. 0 C. True D. N 本题从函数用法方向考察学生编程操作能力。isalpha()函数用来判断参数是否为字母,如果参数是字母的话,则函数返回一个大于0的值。因此,正确答案选A。 13 / 45 下列关于C++变量类型的描述,错误的是( ) A. double类型可包含52位小数 B. float类型可包含23位小数 C. void类型表示类型缺失 D. symbol类型表示不会重复的变量 本题从数据类型方向考察学生编程操作能力。在C++编程中,不存在symbol类型,而A、B、C选项中关于double、float和void类型的描述是正确的。因此,正确答案选D。 14 / 45 按照 “FIFO”原则组织数据的结构是( ) A. 栈 B. 链表 C. 堆 D. 队列 本题从数据结构的特性方向考察学生编程操作能力。按照 “FIFO”(First In, First Out,即先进先出)原则组织数据的数据结构是队列(Queue)。队列可以让元素在一端添加,在另一端移除。因此,正确答案选D。 15 / 45 下列程序最终输出结果为( )。 A.-1 B.0 C.1 D.-2 本题从字符串的比较方法方向考察学生编程操作能力。strcmp函数用于比较两个字符串。该函数将比较两个字符串的ASCII代码值,直到两个字符串的字符不同或者遇到null字符为止。其返回的值为:如果str1 < str2,返回值 < 0。如果str1 == str2,返回值等于0。如果str1 > str2,返回值 > 0。在这里,比较的是字符数组a和b的内容。”job”和”hi”的第一个字符对应的ASCII码值分别为’j’和’h’,由于ASCII值的大小顺序为 ‘h’ < ‘i’ < ‘j’,所以”job” > “hi”,所以strcmp(a, b)的返回值 > 0因此,正确答案选C。 16 / 45 有一个字符串数组 char a22 = {“a”,”b”,”c”,”d”,”e”},如何输出字母c?( ) A. cout << a2200 << endl; B. cout << a1100 << endl; C. cout << a2211 << endl; D. cout << a1111 << endl; 本题从字符串数组的索引方法方向考察学生编程操作能力。在这个例子中,字符c位于第2位置的数组下,且为该数组的第0位置,故输出语句应为cout << a2200 << endl;因此,正确答案选A。 17 / 45 定义整形m,int m = 1;下列选项能输出2的是?( ) A. cout << +m; B. cout << m++; C. cout << ++m; D. cout << m==1; 本题从基本操作符的掌握方向考察学生编程操作能力。选项A, cout << +m; 的输出为m的原始值1,"+"运算符并不会改变m的值。选项B, cout << m++; 这个选项会先输出m的原始值1,然后才对m进行递增操作。这是由于"m++"是后置递增运算符,它首先返回m的当前值,然后再增加m。选项C, cout << ++m; 这个选项会先对m进行递增操作,然后输出递增后的m。因为"++m"是前置递增运算符,它首先增加m,然后返回m的值。所以,这个选项会输出2。选项D, cout << m==1; 是一个比较操作,检查m的值是否为1。因为m的原始值是1,所以这个比较是真,C++中真的值为1,这个选项会输出1。因此,正确答案选C。 18 / 45 下面程序运行后,输出结果为( ) A. 10 9 8 7 6 5 B. 9 6 3 0 C. 8 6 4 2 0 D. 9 7 5 3 1 本题从循环逻辑和分支逻辑方向考察学生编程操作能力。代码逻辑是这样的:首先设置了一个变量x值为10,然后进入一个while循环,只要x不为0,就会进入循环。在循环中,首先会让x的值减1,然后判断减1后的x是否能被3整除,即x%3的结果是否为0。如果x%3的结果不为0(也就是说x不能被3整除),则执行’continue’,即跳过后面的语句,直接开始下一次循环。如果x%3的结果为0(也就是说x能被3整除),则打印x的值。所以,从x=10开始,每次都减1,只有在x的值为9, 6, 3, 0时,x能被3整除,所以这四个值会被打印出来。因此,正确答案选B。 19 / 45 判断字符串s1是否大于字符串s2的是( ) A. if(s1 > s2) B. if(strcmp(s1, s2)) C. if(strcmp(s1, s2) < 0) D. if(strcmp(s1, s2) > 0) 本题从条件语句编写方法方向考察学生程序应用能力。在C++中,s1 > s2不能比较字符串大小,应该使用strcmp函数。strcmp(s1, s2)函数是比较两个字符串的ASCII值,如果s1大于s2,那么返回值大于0,所以应整理为if(strcmp(s1, s2) > 0)。因此,正确答案选D。 20 / 45 算法的时间复杂度是指( ) A. 执行算法所需要的空间 B. 执行算法需要的变量 C. 执行算法需要的运算次数 D. 算法的代码量 本题从算法的时间复杂度定义方向考察学生知识认知能力。时间复杂度是对一个算法在运行过程中临时存储空间需求量的度量,它在算法分析中表示的是执行算法需要的运算次数。因此,正确答案选C。 21 / 45 小明想将hello放入一个数组中,下列选项正确的是?( ) A. int arr = "hello" B. char arr44 = 'hello' C. char arr55 = "hello" D. int arr55 = "hello" 本题从数组初始化的语法掌握方向考察学生编程操作能力。字符串”hello”含有5个字符以及一个结束字符’