1 条题解

  • 1
    @ 2024-4-26 22:35:42
    1. 以下不可以做为C++变量的是( )。

    A. FiveStar

    B. fiveStar

    C. 5Star

    D. Star5

    【答案】C

    【考纲知识点】程序的基本概念

    【解析】在C++中,变量的命名规则要求以字母或下划线开头,后面可以是字母、数字或下划线的组合。选项A、B、D都符合这个规则,而选项C以数字开头,不符合变量命名规则,因此不可以作为C++变量。

    1. 在C++中,与 for(int i = 10; i < 20; i +=2) cout << i; 输出结果相同的是( )。

    A. for(int i = 10; i < 19; i +=2) cout << i;

    B. for(int i = 11; i < 19; i +=2) cout << i;

    C. for(int i = 10; i < 21; i +=2) cout << i;

    D. 以上均不对

    【答案】A

    【考纲知识点】程序的基本语句、基础运算

    【解析】选项A循环条件为for(for( intint i=10;i<19;i i = 10; i < 19; i += 22),与给定的for循环条件forfor (int(int i=10;i<20;ii = 10; i < 20; i +=2) 2)相同。这两个循环条件的区别在于循环结束的条件,选项A中的循环结束条件是i<19i < 19,而给定的forfor循环结束条件是i<20i < 20

    由于循环条件中的<运算符,选项A的循环会在i的值达到1919之前结束,因此输出结果与给定的forfor循环相同。

    1. 以下C++代码实现从小到大的顺序输出能整除N的数(N的因子),例如N=18时输出1 2 3 6 9 18,横线处应填入( )。

    image

    A. int i = 0; i < N; i++

    B. int i = 1; i < N; i++

    C. int i = 0; i < N+1; i++

    D. int i = 1; i < N+1; i++

    【答案】D

    【考纲知识点】程序的基本语句、基础运算

    【解析】选项A循环条件为forfor (int(int i=10;i<19;ii = 10; i < 19; i += 2) 2),与给定的forfor循环条件forfor (int(int i=10;i<20;i i = 10; i < 20; i += 2)2)相同。这两个循环条件的区别在于循环结束的条件,选项A中的循环结束条件是i<19i < 19,而给定的forfor循环结束条件是i<20i < 20

    由于循环条件中的<运算符,选项A的循环会在i的值达到1919之前结束,因此输出结果与给定的for循环相同。

    1. 下面C++代码用于判断输入的整数是否为对称数,如122112211232112321是对称数,但123123972972不是对称数。下面对该题对应代码的说法,正确的是( )。image

    A. 代码没有语法错误,如果N为对称数,第8行将能正确输出。

    B. 代码没有语法错误,但如果N为负数,将导致死循环。

    C. 代码存在语法错误,程序不能被执行。

    D. 代码没有语法错误,但不能达到预期目标,因为循环结束N总为0。

    【答案】D

    【考纲知识点】程序的基本语句、基础运算

    【解析】newNum 初始化为 00,进行的是赋值运算不是累加运算,不断循环之后结果N会变为00

    1. 下面C++代码用于判断N(大于等于22的正整数)是否为质数(素数)。下面对如下代码的说法,正确的是( )。image

    A. 代码能正确判断N是否为质数。

    B. 代码总是不能判断N是否质数。

    C. 删除第5行 break ,将能正确判断N是否质数。

    D. 代码存在漏洞,边界存在问题,应将第2行和第7行的 N/2N / 2 改为 N/2+1N / 2 + 1

    【答案】D

    【考纲知识点】程序的基本语句、基础运算

    【解析】需要取到N值的一半才能完全取到对应的一半的因子,例如4 需要遍历到 4/2=24/2=2,才能找到 22 这个因子,要能取到 22 也就是 N/2N/2 本身。

    1. 下面C++代码执行后的输出是( )。 image

    A. 22#33#00

    B. 11#22#00

    C. 11#00#

    D. 22#33#

    【答案】A

    【考纲知识点】程序的基本语句、基础运算

    【解析】在 ij i*j 是偶数的时候输出ii,那么满足的 i,ji,j 分别是 21)(32(2,1)(3,2)输出的 ii分别是 2233 以及循环结束之后的00

    1. 下面C++代码执行后的输出是( ) image

    A. 0

    B. 8#8

    C. 4

    D. 4#4

    【答案】A

    【考纲知识点】程序的基本语句、基础运算

    【解析】在 iji*j 是偶数的时候 cnt++cnt++ ,额外注意 jj 每次自增 22ii 的取值有 1199jj 的取值是 ii 以内所有的奇数,且每次cnt++cnt++求和后会直接结束内层循环,那么满足的ii,jj分别是 21)(41)(61)(81(2,1)(4,1)(6,1)(8,1),有44次,判断输出44#,然后在顺序执行,在输出一个44,答案为D。

    1. 下面C++代码执行后的输出是( )

      image

    A. 100100

    B. 9595

    C. 5555

    D. 00

    【答案】C

    【考纲知识点】程序的基本语句、基础运算

    【解析】在N是奇数的时候breakbreak,如果N是33的倍数N=5N-=5,否则N=20N-=20,那么NN的变化为100806055100,80,60,555555满足为奇数的条件,跳出循环输出 NN5555

    1. 下面C++代码执行后的输出是( )

    image A.11

    B. 1,31,3

    C. 15,1715,17

    D. 1,10,121,10,12

    【答案】D

    【考纲知识点】程序的基本语句、基础运算

    【解析】x 初始值为 11,当 xx 不是33的倍数的时候输出xx的值,x/10x/10 > 00 的时候会执行 break ,循环就要结束,等价替换为x>=10x>=10。否则x+=5x+=5,ifif条件3311执行,执行结束之后再x+=2x+=2。那么x的取值过程分别为

    • 第一次循环x=1 x=1,满足第一个条件输出11x=x+2=3x=x+2=3,
    • 第二次循环,x=3x=3,不满足第一个和第二个条件,执行else,x=x+5=8x=x+5=8,再计算x=x+2=10x=x+2=10,
    • 第三次循环,x=10x=10,满足第一个条件输出1010,这里需要注意第一个if已经满足了所以不用再看else if 的条件了,计算x=x+2=12x=x+2=12
    • 第四次循环,x=12x=12,不满足第一个if不输出,满足第二个if,循环跳出
    • 顺序执行最后的输出语句此时x=12x=12,输出1212 答案为D。
    1. 下面C++代码执行后的输出是( ) image

    A. 55

    B. 1010

    C. 2020

    D. 3030

    【答案】B

    【考纲知识点】程序的基本语句、基础运算

    【解析】计算循环的内层循环语句的下级代码的执行次数,对应i,j合法的取值分别有10)(20)(21)(30)(31)(32)(40)(41)(42)(43(1,0)(2,0)(2,1)(3,0)(3,1)(3,2)(4,0)(4,1)(4,2)(4,3)一共1010次循环。

    1. 以下C++代码用于输出1-100(含)的整数平方数(完全平方数),如16是4的平方,横线处应填写( )

    image

    A. int(sqrt(i)) * int(sqrt(i)) = i

    B. int(sqrt(i)) == sqrt(i)

    C. int(sqrt(i)) * int(sqrt(i)) == i

    D. int(sqrt(i)) == int(i/sqrt(i))

    【答案】C

    【考纲知识点】程序的基本语句、基础运算

    【解析】判断相等的符号为==,排除A, sqrt函数的原型为:double sqrt(double x);返回值为double,所以需要开跟完之后反向验证是否与原值相等。

    1. 下面的C++代码用于实现如下左图所示的效果,应在以下右图C++代码中填入( ) imageimage

    A. 与第88行下面填入一行: cout << nowNum;

    B. 与第22行下面填入一行: cout << endl;

    C. 与第77行下面填入一行: cout << nowNum;

    D. 与第99行下面填入一行: cout << endl;

    【答案】D

    【考纲知识点】程序的基本语句、基础运算

    【解析】需要在每次内循环结束之后换行。

    1. 某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。( )

    A. 麦克风

    B. 扬声器

    C. 油量表

    D. 传感器

    【答案】C

    【考纲知识点】计算机基础知识

    【解析】驾驶系统完成选路所必须的关键是获取乘客告知的目的地和获取路况信息,以便选择最优路线。在给定的选项中,麦克风用于接收乘客的声音输入,扬声器用于向乘客传达目的地信息,传感器用于获取车辆周围的环境和路况信息。

    然而,油量表并不是驾驶系统完成选路所必须的。油量表主要用于显示车辆的油量信息,而对于选路过程来说,油量并不是决定路线的因素。

    因此,选项C:油量表不是驾驶系统完成选路所必须的。

    1. 现代计算机是指电子计算机,它所基于的是( )体系结构。

    A. 艾伦·图灵

    B. 冯·诺依曼

    C. 阿塔纳索夫

    D. 埃克特-莫克利

    【答案】B

    【考纲知识点】计算机基础知识

    【解析】现代计算机所基于的是冯·诺依曼体系结构。冯·诺依曼体系结构是由冯·诺依曼于1945年提出的计算机体系结构概念,被广泛应用于现代计算机的设计和实现。该体系结构的主要特点包括程序存储器和数据存储器的统一、指令和数据以二进制形式存储、以及顺序执行指令等。

    艾伦·图灵是计算机科学与人工智能领域的重要人物,提出了图灵机的概念,但并非现代计算机所基于的体系结构。

    阿塔纳索夫和埃克特-莫克利是早期计算机领域的先驱者,但他们的工作不是现代计算机所基于的体系结构。

    因此,选项B:冯·诺依曼是正确答案。

    1. 输入一个正整数N,想找出它所有相邻的因数对,比如,输入12,因数对有(1,2)、(2,3)、(3,4)。下面哪段代码找不到所有的因数对?()。

    A. for(i=1;i<N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);

    B. for(i=2;i<N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);

    C. for(i=2;i<N/2;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);

    D. for(i=1;i<N/2;i++) if(!(N%i) && !(N%(i+1))) printf(“(%d,%d)\n”, i, i+1);

    【答案】B

    【考纲知识点】计算机基础知识

    【解析】选项B的代码是无法找到所有的因子对。 这段代码中,循环的起始值为22,循环的终止条件为i<Ni<N,因子对的判断条件为!(N!(N%i) && !(N%(i+1)),并输出因子对(i,i+1)(i, i+1)

    然而,这段代码存在一个问题。当ii取到N1N-1时,判断条件变为!(N!(N%(N1))(N-1)) && !(N(N%N)。由于任何数除以自身的余数为00,判断条件始终为真,导致输出一个错误的因子对(N1,N)(N-1, N)

    因此,选项B的代码段无法找到所有的因子对,它会错误地输出一个多余的因子对。

    • 1

    GESP23年12月二级选择题

    信息

    ID
    603
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    267
    已通过
    65
    上传者