编程模拟题-五级C++ 1 / 45 定义如下变量 int m = 6,n = 1; 那么 m >>n的值是?( ) A.3 B.0 C.2 D.6 本题从位运算符的使用方法方向考察学生编程操作能力。’>>’是右移运算符,将数字的二进制形式向右移动指定的位数。比如6的二进制形式是110,向右移动1位后变成11,也就是3。因此,正确答案选A。 2 / 45 下列输出 g 的值是( )。 A.报错 B.10 C.0 D.5 本题从全局变量和局部变量的使用方法方向考察学生编程操作能力。全局变量g的初始值为10。然后,在main()函数中定义了一个局部变量g,并赋值为5。当在main函数内部寻找变量g的值时,由于在函数内部已经定义了同名变量,所以会优先使用函数内的局部变量。所以,最终输出的结果是5,因为在main函数内部cout<<g<<endl;这条语句中的g指的是局部变量,其值为5。因此,正确答案选D。 3 / 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。 4 / 45 以下程序运行后,输出的结果是( ) A. 1 2 1 B. 1 2 3 C. 1 2 2 D. 1 3 2 本题从函数的定义和调用记忆全局变量和局部变量的值的推理方向考察学生程序应用能力和编程操作能力。代码中,全局变量和函数内的局部变量名都叫做m,但他们其实是不同的变量。我们来分析一下这个程序:首先,在main()函数开始时,输出的是全局变量m,它的值是1,所以输出的是1。然后,调用fn()函数,fn()函数中有自己的局部变量m,初始化为2,所以在fn函数中,输出的是2。然后把fn()函数中的m重新赋值为3,但是这个m只在fn()函数中起作用。最后,回到main()函数,再次输出的是全局的m,它的值还是1,并未被fn函数中的m影响。所以,输出的结果是1 2 1因此,正确答案选A。 5 / 45 一个十进制数 -56,那么下列选项哪个是他的补码( )。 A. 10001111 B. 10111000 C. 11000111 D. 11001000 本题从对于负数在计算机中补码表示的理解方向考察学生知识认知能力。因此,正确答案选D。 6 / 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。 7 / 45 以下程序输出的m值是多少?( ) A. 10 B. 5 C. 0 D. 报错 本题从对于变量作用域和全局变量、局部变量的理解和应用方向考察学生编程操作能力和程序应用能力。根据C++的作用域规则,局部变量的生命周期仅限于其所在的代码块。而全局变量在整个程序运行期间都有效。在这个程序中,全局变量m被初始化为10,局部变量m被初始化为5。然后用cout输出m的值,此时由于局部变量的优先级高于全局变量,即在有局部变量和全局变量同名的情况下,局部变量将会覆盖全局变量,所以程序会输出局部变量m的值。因此,正确答案选B。 8 / 45 有关算法的描述,正确的是( ) A. 算法主要考虑时间复杂度、空间复杂度两个层面 B. 时间复杂度用大T表示 C. 空间复杂度用大S表示 D. 算法可以不考虑时间复杂度和空间复杂度 本题从对算法的认识和理解方向考察学生知识认知能力。算法的性能主要考虑时间复杂度和空间复杂度,时间复杂度的度量方法常用大O表示,空间复杂度用大O或者其他符号表示。因此,正确答案选A。 9 / 45 下列语句描述中,正确的是?( ) A. break 语句不影响循环体内部执行逻辑 B. continue 语句不影响循环体内部执行逻辑 C. continue 语句会立即终止当前循环 D. break 语句在循环体中,可以立即终止循环 本题从流程控制语句的理解方向考察学生编程操作能力。break语句在循环体中可以立即终止循环。continue语句会立即终止当前循环的剩余部分,并判断是否进行下一次循环。因此,正确答案选D。 10 / 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。 11 / 45 循环语句 while( a > b) { a–}; 等价于( ) A. if(a > b) { a = 1} B. if(a > b) { a — } C. for(; a > b; a –) D. for(a > b){a —} 本题从循环语句的编写规则方向考察学生编程操作能力。循环语句while(a > b){ a– } 等同于for循环for(; a > b; a –)。这两种结构在满足条件a > b 时都会执行a的递减运算。因此,正确答案选C。 12 / 45 以下函数声明正确的是?( ) A. int add(int a, int b); B. int add(a, b); C. int add(int a, b = 10); D. int add(a = 10, b = 2); 本题从函数声明的语法方向考察学生编程操作能力。正确的函数声明应该包括返回类型,函数名以及括号内的参数列表,参数列表应该包括参数的类型和名称。因此,正确答案选A。 13 / 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。 14 / 45 表达式 cout << (5 && 6) 将会输出什么值?( ) A. 1 B. 0 C. True D. False 本题从逻辑运算方向考察学生编程操作能力。在C++中,&&操作符用于逻辑AND操作。如果它的两个操作数都为非零,那么条件为真。 在这个表达式中,5和6都是非零的,所以表达式为真。在C++中,真值非零被打印为1。因此,正确答案选A。 15 / 45 小明想将hello放入一个数组中,下列选项正确的是?( ) A. int arr = "hello" B. char arr44 = 'hello' C. char arr55 = "hello" D. int arr55 = "hello" 本题从数组初始化的语法掌握方向考察学生编程操作能力。字符串”hello”含有5个字符以及一个结束字符’