还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
全国计算机二级语言题库单选题道及答案C100以下哪个是正确的语言标识符?
1.CA.2variableB.variable_2C.variable-2D.if答案B解析语言标识符只能由字母、数字和下划线组成,且不能以数字开头,同时不能是语言C C的关键字选项以数字开头,选项包含非法字符,选项是关键字,所以选A C DBo若有定义则执行语句的值是?
2.inta=5;,aA.-40B.-50C.40D.50答案B解析根据运算符优先级,先计算然后即最后即a*a=25,a-=25,a=5-25=-20,a+=-20,a=-20+所以选-20=-50,B以下关于循环的说法,正确的是?
3.for循环只能用于已知循环次数的情况A.for循环的三个表达式都可以省略B.for循环的循环体必须用花括号括起来C.for循环不能嵌套使用D.for答案B解析循环的三个表达式都可以省略,例如是一个无限循环循环也可用于未知循for for;;for环次数的情况,循环体只有一条语句时可以不用花括号,循环可以嵌套使用,所以选for B以下哪种情况可以用语句跳出?
4.break只能跳出语句A.switch只能跳出循环语句B.可以跳出语句和循环语句C.switch可以跳出任何语句块D.答案C解析语句可以用于跳出语句和循环语句如、但不能跳出任break switchfor while do-while,意语句块,所以选C若有定义则⑶的值是?
5.intarr
[5]={l,2,3,4,5};,arrA.1B.2C.3D.4答案D解析数组下标从开始,表示数组中第个元素,值为所以选0arr
[3]44,D以下关于函数调用的说法,错误的是?
6.函数调用时实参和形参可以同名A.函数调用时实参和形参的类型必须一致B.函数调用时可以不传递实参C.函数调用时实参和形参的个数必须相同D.答案C解析函数调用时如果函数定义有参数,必须传递相应数量和类型的实参实参和形参可以同名,类型一般要一致,个数也要相同,所以选C若有定义则执行语句后,的值是?
7.char ch=A;,ch=ch+32;chD.int arr
[2]={1,2};funcarr[O],arr|1];答案B解析函数的参数是两个指针,需要传递变量的地址选项传递的是变量值;选项传func A C递的也是数组元素的值;选项虽然传递的是地址,但不如选项简洁明了,所以选D BBo以下关于枚举常量的说法,正确的是?
59.枚举常量可以在程序中重新赋值A.枚举常量的值只能是整数B.枚举常量的作用域是整个程序C.枚举常量可以和其他类型的数据进行运算D.答案B解析枚举常量在定义后不能重新赋值,其值只能是整数枚举常量的作用域根据定义位置而定,不一定是整个程序枚举常量可以和同类型的数据进行运算,与其他类型运算需要进行类型转换,所以选B若有定义则执行语句后,的值是
60.int a=4;,a=1;aA.2B.4C.8D.1答案A解析=是右移赋值运算符,的二进制是右移位后是即十进制的所以选40100,10010,2,A以下关于语句中的作用,正确的是?
61.switch break跳出整个语句A.switch跳出当前的分支B.case结束本次循环C.结束整个程序D.答案A解析在语句中,语句的作用是跳出整个语句,而不是只跳出当前分支switch breakswitch case它和循环无关,也不会结束整个程序,所以选A
62.若有定义int arr
[3]⑵={1,2,3,4,5,6};,则arr⑵
[1]的值是?A.5B.6C.4D.3答案B解析二维数组按行存储,表示第三行第二列的元素,值为所以选arr
[2][l]6,B以下关于函数的返回值类型,说法错误的是?
63.函数的返回值类型可以是自定义类型A.函数的返回值类型可以是指针类型B.函数的返回值类型可以和参数类型不同C.函数必须有返回值D.答案D解析函数的返回值类型可以是自定义类型、指针类型等,也可以和参数类型不同但函数不一定必须有返回值,当返回值类型为时表示没有返回值,所以选void D若有定义则以下连接字符串的操作正确的是
64.charstrl
[10],str2[]=worki”;,A.strl=strl+str2;B.strcatstrl,str2;C.forint i=0;istrlenstr2;i++strl[strlenstrl+i]=str2[i];以上都不对D.答案B解析数组名不能进行加法运算,选项错误选项没有考虑字符串结束符使用函ACstrcat数可以正确连接字符串,所以选B以下关于文件读写的说法,正确的是?
65.以上”模式打开文件时,如果文件不存在会创建文件A.以“模式打开文件时,如果文件已存在会清空文件内容B.w”以,”模式打开文件时,只能从文件开头写入数据C.以“模式打开文件时,可以进行文本文件的读取D.rb”答案B解析以模式打开文件时,如果文件不存在会打开失败;以“模式打开文件时,如果文件T w”已存在会清空文件内容;以力”模式打开文件时,是从文件末尾追加数据;以“模式打开文rb”件是用于二进制文件的读取,所以选B若有定义则表达式的值是?
66.int a=7,b=2;,a/bA.
3.5B.3C.4不确定D.答案B解析两个整数相除,结果会舍去小数部分,所以的值是选7/23,B以下关于数组名作为函数参数传递的特点,正确的是?
67.函数内部无法修改数组元素的值A.传递的是数组的副本,函数内外数组互不影响B.函数可以获取数组的真实长度C.传递的是数组的首地址,函数内部可以修改数组元素的值D.答案D解析数组名作为函数参数传递时,传递的是数组的首地址,函数内部可以通过这个地址修改数组元素的值函数无法直接获取数组的真实长度,因为只传递了首地址,所以选D若有定义则可以指向以下哪个函数?
68.void*pvoid;,pA.int funcvoid;B.void funcint;C.void funcvoid;D.char funcvoid;答案C解析是一个指向函数的指针,该函数返回值为无参数选项和返回值类型不匹配;p void,A D选项参数类型不匹配;只有选项符合要求,所以选B C C以下关于结构体嵌套的说法,正确的是?
69.结构体不能嵌套A.结构体嵌套时,内部结构体不能有自己的成员B.结构体嵌套可以实现复杂的数据结构C.结构体嵌套会导致程序出错D.答案C解析结构体可以嵌套,内部结构体可以有自己的成员通过结构体嵌套可以实现复杂的数据结构,合理使用不会导致程序出错,所以选C若有定义则执行语句后,的值是?
70.int a=9;,a=~1vv2;aA.9B.5C.13D.0答案B解析12得到4二进制0100,〜12是对其取反得到1011,9的二进制是1001,按位与运算后结果为即十进制的所以选0101,5,B
71.以下关于while循环和do・while循环的区别,正确的是?循环先判断条件,循环后判断条件A.while do-while循环至少执行一次循环体,循环不一定B.while do-while循环的循环体只能有一条语句,循环可以有多条语句C.while do-while循环不能嵌套,循环可以嵌套D.while do-while答案A解析循环先判断条件,条件为真才执行循环体;循环先执行循环体,再判断条while do-while件循环不一定执行循环体,循环至少执行一次两种循环的循环体都可以有多whiledo-while条语句,也都可以嵌套,所以选A若有定义则的值是
72.intarr
[5]={l,3,5,7,9};,*arr+3A.1B.3C.5D.7答案D解析数组名可以看作指向数组首元素的指针,指向数组的第四个元素下标为arr arr+3就是取该元素的值,为所以选3,*arr+37,D以下关于函数的存储类别,说法错误的是?
73.函数默认的存储类别是A.extern用修饰的函数只能在本文件中被调用B.static函数可以有存储类别C.auto函数的存储类别影响其作用域和链接属性D.答案C解析函数默认的存储类别是表示可以在其他文件中被调用用修饰的函数具有extern,static内部链接属性,只能在本文件中被调用函数没有存储类别,一般用于局部变量函auto auto数的存储类别确实会影响其作用域和链接属性,所以选C若有定义廿则表达式的值是?
74.char chB1ch+3A.EB.DC.CD.F答案A解析在码中,字符的值加上得到字符的值,所以表达式的值是ASCII E ASCII3,EASCIIE,选A以下关于动态数组的说法,正确的是?
75.动态数组在编译时确定大小A.动态数组使用完后不需要释放内存B.动态数组可以根据需要调整大小C.动态数组只能是一维的D.答案C解析动态数组是在程序运行时通过动态内存分配函数如来确定大小的,不是malloc realloc在编译时动态数组使用完后需要用函数释放内存动态数组可以使用函数根据需free realloc要调整大小,也可以是多维的,所以选C若有定义则表达式的值是?
76.inta=4,b=5;,a bA.0B.1C.4D.5答案B解析是逻辑与运算符,只要两个操作数都为非零值,结果就为这里和都不为所以1a b0,的值是选ab1,B以下关于数组和字符串的关系,说法正确的是?
77.字符串一定是数组,但数组不一定是字符串A.数组一定是字符串,但字符串不一定是数组B.数组和字符串是完全相同的概念C.字符串和数组没有任何关系D.答案A解析字符串是由字符组成的以结尾的数组,所以字符串一定是数组,但数组不一定是以\0’\0,结尾的,不一定是字符串,它们不是完全相同的概念,所以选A若有定义以下哪个函数可以赋值给
78.void*pfloat;,pA.void funcint;B.void funcfloat;C.int funcfloat;D.void funcdouble;答案B解析是一个指向函数的指针,该函数返回值为参数为类型选项参数类型不p void,float A匹配;选项返回值类型不匹配;选项参数类型不匹配;只有选项符合要求,所以选C D B B以下关于枚举类型的定义和使用,说法错误的是?
79.枚举类型定义时可以指定元素的值A.枚举类型的元素可以作为常量使用B.枚举类型的元素可以进行自增自减运算C.枚举类型的元素可以和整数进行比较D.答案C解析:枚举类型定义时可以指定元素的值,元素可以作为常量使用,也可以和整数进行比较但枚举类型的元素不可以进行自增自减运算,因为它们是常量,所以选C若有定义则执行语句后,的值是?
80.int a=12;,a|=1v1;aA.12B.14C.10D.8答案B解析得到二进制的二进制是按位或运算后结果为即十进制的1120010,121100,1110,所以选14,B以下关于循环的执行流程,说法正确的是?
81.for先执行循环体,再判断条件,最后更新循环变量A.先判断条件,条件为真则执行循环体,然后更新循环变量B.先更新循环变量,再判断条件,条件为真则执行循环体C.先执行循环体,再更新循环变量,最后判断条件D.答案B而析循环的执行流程是先执行初始化表达式,然后判断条件表达式,条件为真则执行循环for体,最后执行更新表达式,所以选B若有定义则⑵的值是
82.intarr
[2]
[3]={{1,2},{3}};,arr[l]A.1B.2C.3D.0答案D解析在初始化二维数组时,未提供初始值的元素会被初始化为所以的值为选0,arr[l]
[2]0,D以下关于函数的参数传递,说法错误的是?
83.实参和形参的类型要一致A.实参和形参的个数要相同B.传递数组时,传递的是数组的副本C传递指针时,传递的是指针的值D.答案C解析函数参数传递时,实参和形参的类型和个数一般要一致传递数组时,传递的是数组的首地址,不是数组的副本;传递指针时,传递的是指针的值即地址,所以选C
84.若有定义charstr[]二abc”;,则sizeofstr的值是A.3B.4不确定C.以上都不对D.答案B解析运算符计算的是数组所占的内存空间大小,字符串“包含个字符,但还有一sizeof abc”3个字符串结束符,\0,,所以数组str的大小是4,选B以下关于文件操作的错误处理,说法正确的是?
85.打开文件失败时不需要进行错误处理A.读取文件时不需要检查文件指针是否为空B.关闭文件失败不会影响程序的运行C.进行文件操作时应该检查函数的返回值以进行错误处理D.答案D解析打开文件失败、读取文件时文件指针为空、关闭文件失败等情况都可能影响程序的正常运行,进行文件操作时应该检查函数的返回值以进行错误处理,所以选D若有定义则表达式后,的值是?
86.int a=6,b=3;,a%=b;aA.2B.0C.3D.6答案B解析%=是取余赋值运算符,的结果是所以执行语句后的值为选6%30,a0,B以下关于数组的初始化方式,说法正确的是?
87.只能在定义数组时进行初始化A.可以在定义后通过赋值语句对整个数组进行初始化B.可以在函数内部对全局数组进行初始化C.可以使用循环对数组元素进行初始化D.答案D解析数组可以在定义时初始化,也可以在定义后使用循环对数组元素进行初始化不能通过赋值语句对整个数组进行初始化,全局数组的初始化在程序开始时进行,不是在函数内部,所以选D若有定义则以下调用正确的是?
88.void funcint**p;,A.int a=5;funca;B.int a=5;int*pa=a;funcpa;C.int a=5;int*pa=a;funcpa;D.int a=5;funca;答案C解析函数的参数是一个二级指针,需要传递一个指针的地址选项传递的是变量的func A地址;选项传递的是一级指针;选项传递的是变量值;只有选项传递的是一级指针的B DC地址,符合要求,所以选C以下关于结构体变量的赋值,说法正确的是?
89.结构体变量不能直接赋值A.结构体变量可以直接赋值,只要类型相同B.结构体变量赋值时,成员变量的顺序可以不同C.结构体变量赋值时,成员变量的类型可以不同D.答案B解析只要结构体类型相同,结构体变量可以直接赋值赋值时成员变量的顺序和类型都要一致,所以选B若有定义则执行语句八后,的值是?
90.int a=8;,a=2;aA.10B.6C.8D.2答案A解析是按位异或赋值运算符,的二进制是的二进制是按位异或运算后结果为♦81000,20010,即十进制的所以选1010,10,A以下关于语句在嵌套循环中的作用,说法正确的是?
91.continue只能跳出内层循环A.只能跳出外层循环B.可以根据需要指定跳出哪一层循环C.只能结束本次内层循环D.答案D解析语句在嵌套循环中只能结束本次内层循环,直接进入下一次内层循环,不能跳continue出外层循环,也不能指定跳出哪一层循环,所以选D若有定义则的值是
92.intarr
[4]={l,3,5};,arr
[3]A.1B.3C.5D.0答案D解析数组初始化时,如果提供的初始值个数少于数组元素个数,剩余元素会被初始化为所0,以的值为选arr
[3]0,D以下关于函数的递归调用,说法错误的是?
93.递归调用必须有终止条件A.递归调用会增加程序的运行时间B.递归调用不会占用额外的内存空间C.递归调用可以使代码更简洁D.答案C解析:递归调用必须有终止条件,否则会陷入无限递归递归调用由于存在函数调用的开销,会增加程序的运行时间递归调用会占用额外的栈空间,用于保存每一次递归调用的上下文信息递归调用可以使代码更简洁,所以选C若有定义则表达式的值是?
94.char ch=5;,ch-2A.3B.3C.5D.2答案B解析在码中,字符是连续的,字符减去字符可以得到对应的数字差值,所以ASCII0-95-2的值是选3,B以下关于静态局部变量的说法,正确的是?
95.静态局部变量在函数调用结束后就会被销毁A.静态局部变量的作用域是整个程序B.静态局部变量在函数第一次调用时初始化,之后不再初始化C.静态局部变量只能在函数外部定义D.答案C解析静态局部变量在函数第一次调用时初始化,之后再次进入函数时不会重新初始化,它不会在函数调用结束后被销毁其作用域是定义它的函数内部,只能在函数内部定义,所以选C若有定义则表达式的值是
96.int a=3,b=4;,ab++a:++bA.3B.4C.5不确定D.答案C解析因为〉为假,所以三目运算符返回的值,先将自增为然后返回所以选a b++b b5,5,C以下关于数组和指针的运算,说法错误的是?
97.指针可以和整数进行加法运算A.指针可以和指针进行减法运算B.数组名可以和整数进行加法运算C.数组名可以和指针进行减法运算D.答案D解析指针可以和整数进行加法运算,用于移动指针指向不同的元素指针和指针可以进行减法运算,得到它们之间的元素个数数组名可以隐式转换为指针,所以也可以和整数进行加法运算但数组名不能和指针进行减法运算,所以选D若有定义则可以指向以下哪个函数
98.void*pdouble,double;,pA.void funcint,int;B.void funcdouble,double;C.int funcdouble,double;D.void funcfloat,float;答案B解析是一个指向函数的指针,该函数返回值为有两个类型的参数选项参数p void,double A类型不匹配;选项返回值类型不匹配;选项参数类型不匹配;只有选项符合要求,所C DB以选B以下关于宏函数和普通函数的区别,说法正确的是?
99.宏函数在编译时展开,普通函数在运行时调用A.宏函数的参数有类型检查,普通函数没有B.宏函数的执行效率比普通函数低C.宏函数和普通函数的调用方式完全相同D.答案A解析宏函数在编译时进行文本替换展开,普通函数在运行时进行函数调用宏函数的参数没有类型检查,普通函数有类型检查宏函数由于没有函数调用的开销,执行效率比普通函数高宏函数和普通函数的调用方式不同,宏函数是简单的文本替换,所以选A若有定义则执行语句二后,的值是
100.int a=15;,a〜7;aA.8B.7C.15D.0答案A解析的二进制是,是对其取反得到的二进制是按位与运算后结果为70111〜71000,151111,即十进制的所以选1000,8,AA.A1B.aC.BD.b答案B解析在码中,大写字母和小写字母相差的码值加上得至宾的码ASCII32,A ASCII32U ASCII值,所以选B以下关于指针的说法,正确的是?
8.指针只能指向变量A.指针变量必须初始化B.指针的大小与所指向的数据类型有关C.可以对指针进行加减运算D.答案D解析指针可以指向变量、数组、函数等;指针变量不一定要初始化;指针的大小在同一系统中是固定的,与所指向的数据类型无关;可以对指针进行加减运算,所以选D以下哪个是正确的结构体定义形式?
9.A.struct{int a;char b;}s;B.struct s{int a;char b;};s;C.struct{int a;char b;}s
[10];D.struct s{int a;char b;}s;答案A解析选项是正确的匿名结构体定义并声明变量的形式;选项语法错误;选项定义了A B C一个结构体数组;选项重复使用了变量名不符合语法,所以选D s,A若有定义则执行语句后,和的值分别是?
10.int a=10,b=20;,int temp=a;a=b;b=temp;a bA.10,20B.20,10C.10,10D.20,20答案B解析该语句通过临时变量交换了和的值,所以变为变为选temp a b a20,b10,B以下关于循环的说法,正确的是?
11.do-while循环至少执行一次循环体A.do-while循环的条件判断在循环体执行之前B.do-while循环不能嵌套使用C.do-while循环的循环体只能有一条语句D.do-while答案A解析循环先执行循环体,再进行条件判断,所以至少执行一次循环体它可以嵌套do-while使用,循环体可以有多条语句,所以选A若有定义则⑵的值是
12.intarr[]
[3]={{1,2,3},{4,5,6}};,arr[l]A.4B.5C.6D.3答案C解析二维数组arr中,anil]⑵表示第二行第三列的元素,值为6,所以选C以下关于函数返回值的说法,错误的是?
13.函数可以没有返回值A.函数的返回值类型可以是结构体类型B.函数的返回值只能通过语句返回C.return函数的返回值类型必须与函数定义时指定的类型一致D.答案C解析函数可以没有返回值(用类型),返回值类型可以是结构体类型等函数一般通过void语句返回值,但也可以通过指针等方式间接返回信息,返回值类型通常要与函数定义时return指定的类型一致,所以选C
14.若有定义char str[]=hello”;,则str的长度是?A.5B.6C.4不确定D.答案B解析字符串包含个字符,但在语言中字符串以结尾,所以数组的长度是hello”5C KO,str6,选B以下关于文件操作的说法,正确的是?
15.打开文件时必须指定文件的打开模式A.文件操作只能对文本文件进行B.关闭文件可以不调用函数C.fclose读取文件时不需要检查文件是否打开成功D.答案A解析打开文件时必须指定打开模式,如“只读、只写等文件操作可以对二进制文件r”等进行,关闭文件必须调用函数,读取文件前要检查文件是否打开成功,所以选fclose Ao若有定义则表达式的值是?
16.int a=3,b=4;,ab a:bA.3B.4C.OD.1答案A解析这是一个三目运算符表达式,因为为真,所以返回的值选ab a3,A以下关于数组名的说法,正确的是?
17..数组名是一个常量指针,指向数组的首元素A数组名可以像指针一样进行自增自减运算B.数组名可以作为函数的返回值C.数组名可以直接赋值给另一个数组名D.答案A解析数组名是一个常量指针,指向数组的首元素数组名不能进行自增自减运算,不能作为函数的返回值,也不能直接赋值给另一个数组名,所以选A若有定义则以下调用正确的是?
18.void funcint*p;,A.int a=5;funca;B.int a=5;funca;C.int arr
[5];funcarr
[0];D.int arr
[5];funcarr
[0];答案B解析函数的参数是一个指针,需要传递变量的地址选项传递的是变量值,选项传func AC递的也是数组元素的值,选项虽然是数组首元素地址,但不如选项简洁准确,所以选DBB以下关于递归函数的说法,错误的是?
19.递归函数必须有终止条件A.递归函数的效率一定比迭代函数高B.递归函数会占用较多的栈空间C.递归函数是自己调用自己的函数D.答案B解析递归函数必须有终止条件,否则会陷入无限递归递归函数会占用较多的栈空间,它是自己调用自己的函数但递归函数的效率不一定比迭代函数高,有时会有较多的重复计算,所以选B若有定义则表达式的值是
20.floatf=
3.14;,intfA.
3.14B.3C.4不确定D.答案B解析是强制类型转换,将类型的转换为血类型,会直接舍去小数部分,所以值为intf floatf选3,B以下关于循环的说法,正确的是?
21.while循环的循环体可以为空A.while循环的条件表达式只能是关系表达式B.while循环不能嵌套使用C.while循环的循环体执行次数一定大于D.while0答案A解析循环的循环体可以为空,条件表达式可以是各种表达式,循环可以嵌套使用,while while循环的循环体执行次数可能为当条件一开始就不满足时,所以选while0A若有定义则数组的所有元素的值是
22.int arr
[5]={0};,arr都为A.0都为随机值B,第一个元素为其余为随机值C.0,第一个元素为随机值,其余为D.0答案A解析这种初始化方式会将数组的所有元素初始化为所以选0,A以下关于函数重载的说法,在语言中?
23.C可以实现函数重载A.不可以实现函数重载B.函数名相同但参数不同就是函数重载C.函数名相同但返回值不同就是函数重载D.答案B解析语言不支持函数重载,函数重载是的特性,所以选C C++B若有定义则以下输入语句正确的是?
24.char ch;,A.scanfn%cu,ch;B.scanfn%cH,ch;C.scanf%s”,ch;D.scanfn%sH,ch;答案B解析函数输入字符时,需要传递变量的地址,所以选选项和用于输入字符串,scanf BCD这里不适用以下关于动态内存分配的说法,正确的是?
25.动态内存分配使用的函数是不需要包含头文件A.malloc,动态内存分配的内存空间在栈上B.动态内存分配的内存空间使用完后不需要释放C.动态内存分配可以根据需要调整分配的内存大小D.答案D解析动态内存分配使用等函数,需要包含头文件动态内存分配的内存空间malloc vstdlib.h,在堆上,使用完后需要用函数释放可以使用函数根据需要调整分配的内存大小,free realloc所以选D若有定义则表达式的值是?
26.int a=7,b=3;,a%bA.2B.OC.1D.3答案A解析%是取余运算符,的结果是所以选7%32,A以下关于数组作为函数参数的说法,正确的是?
27.数组作为函数参数时,传递的是数组的副本A.数组作为函数参数时,函数内对数组元素的修改不会影响原数组B.数组作为函数参数时,必须指定数组的大小C.数组作为函数参数时,传递的是数组的首地址D.答案D解析数组作为函数参数时,传递的是数组的首地址,函数内对数组元素的修改会影响原数组,不一定要指定数组的大小,所以选D若有定义则是?
28.void*pint;,p一个函数,返回宿是参数是A.void,int一个指向函数的指针,该函数返回值是参数是B.void,int一个整型变量C.一个指向整型变量的指针D.答案B解析定义了一个指向函数的指针该函数返回值是参数是所以选void*pint p,void,int,B以下关于枚举类型的说法,正确的是?
29.枚举类型的元素默认从开始编号A.1枚举类型的元素可以是不同的数据类型B.枚举类型的元素可以在定义后重新赋值C.枚举类型可以提高程序的可读性D.答案D器析枚举类型的元素默认从开始编号,元素必须是同一数据类型整型,枚举类型的元素在定义后不能重新赋值,它可以提高程序的可读性,所以选D若有定义则执行语句后,的值是?
30.int a=10;,a=2;aA.20B.40C.12D.8答案B解析《是左移运算符,相当于的二进制左移位,相当于乘以结果是a«=2a=a«2,1024,40,所以选B以下关于语句的说法,正确的是?
31.switch语句的表达式只能是整型或字符型A.switch语句的后面必须是常量表达式B.switch case语句的子句必须放在最后C.switch default语句的每个后面都必须有语句D.switch case break答案B解析语句的表达式可以是整型、字符型、枚举类型等后面必须是常量表达式,switch casedefault子句可以放在任意位置,后面不一定要有语句,所以选casebreakB若有定义则对数组元素⑵的正确引用是
32.intarr
[3]
[4];,arr[l]A.*arr+1
[2]B.**arr+1+2C.*arr+1
[2]D.*arr[l]+2答案B解析二维数组可以通过指针的方式引用元素,指向第二行,指向第二行第*arr+l*arr+l+2三列元素的地址,就是该元素的值,所以选**arr+1+2B以下关于函数参数传递方式的说法,正确的是?
33.语言只有值传递一种参数传递方式A.C指针作为函数参数时是引用传递B.数组作为函数参数时是引用传递C.结构体作为函数参数时是引用传递D.答案A解析语言只有值传递一种参数传递方式,指针、数组、结构体作为函数参数时,传递的也C是它们的值地址或副本,不是真正意义上的引用传递,所以选A
34.若有定义charstrl
[10]=heno”,str2
[10];,则以下复制字符串的操作正确的是A.str2=strl;B.forint i=0;i10;i++str2[i]=strl[i];C.strcpystr2,strl;以上都不对D.答案C解析数组名不能直接赋值,选项错误选项没有考虑字符串结束符使用函数A BVT strcpy可以正确复制字符串,所以选C以下关于文件指针的说法,正确的是?
35.文件指针指向文件的内容A.文件指针是一个普通的指针变量B.文件指针在使用前不需要初始化C.文件指针可以同时指向多个文件D.答案B解析文件指针是一个普通的指针变量,指向一个文件信息区它指向的不是文件内容,使用前需要初始化,一个文件指针同一时间只能指向一个文件,所以选B若有定义则表达式的值是?
36.int a=5,b=6;,ab a++:b++A.5B.6C.7不确定D.答案B解析因为〉为假,所以返回的值,先返回的值然后自增为所以选abb++b6,b7,B以下关于数组越界的说法,正确的是?
37.数组越界一定会导致程序崩溃A.数组越界不会影响程序的正常运行B.数组越界可能会导致不可预期的结果C.数组越界只会访问到相邻的数组元素D.答案C解析数组越界不一定会导致程序崩溃,也可能会影响程序正常运行,它可能会访问到其他内存区域,导致不可预期的结果,不一定只是相邻的数组元素,所以选C若有定义则以下调用正确的是?
38.void funcint a[];,A.int arr[5|;funcarr;B.int arr
[5];funcarr;C.int a=5;funca;D.int arr
[5];funcarr
[0];答案A解析函数的参数是一个整型数组,在语言中数组名代表数组首地址,所以可以直接将func C数组名作为实参传递给函数选项传递的是数组的地址的地址;选项传递的是一个整型变BC量;选项传递的是数组的第一个元素,均不符合函数参数要求,所以选D A若有定义则以下声明变量正确的是
39.typedef struct{int x;int y;}Point;,A.struct Point p;B.Pointp;C.struct{int x;int y;}p;D.typedef Pointp;答案B解析通过为结构体类型定义了别名之后可以直接使用来声明变量选项typedef Point,PointA错误地使用了structPoint;选项C没有使用定义的别名;选项D语法错误,所以选Bo若有定义则执行语句后,的值是?
40.inta=8;,a|=2;aA.2B.8C.10D.6答案C解析|=是按位或赋值运算符,的二进制是的二进制是按位或运算后结果为81000,20010,1010,即十进制的所以选10,C以下关于语句的说法,正确的是?
41.continue语句只能用于循环语句中A.continue语句会结束整个循环B.continue语句可以用于语句中C.continue switch语句之后的语句不会被执行D.continue答案A解析语句只能用于循环语句中,它的作用是跳过本次循环中语句之后的语continue continue句,直接进入下一次循环,不会结束整个循环,也不能用于语句,所以选switch A若有定义则的值是
42.intan
[4]={l,2,3};,arr
[3]A.1B.2C.3D.0答案D解析数组初始化时如果提供的初始值个数少于数组元素个数,剩余元素会被初始化为所0,以的值为选arr
[3]0,D以下关于函数嵌套调用的说法,正确的是?
43.函数不能嵌套调用A.函数嵌套调用会导致程序出错B.函数嵌套调用可以实现复杂的功能C.函数嵌套调用的层数不能超过层D.3答案C解析函数可以嵌套调用,通过函数嵌套调用可以将复杂的任务分解成多个小任务,实现复杂的功能,嵌套调用不会必然导致程序出错,嵌套层数也没有严格限制,所以选C若有定义则表达式的值是
44.char ch=9;,chA.9B.9C.0不确定D.答案B解析在码中,字符是连续的,字符减去字符可以得到对应的数字值,所以ASCII0-99-0的值是选9,B以下关于静态变量的说法,正确的是?
45.静态变量只能在函数内部定义A.静态变量在程序运行期间只初始化一次B.静态变量的作用域是整个程序C.静态变量的生命周期和自动变量一样D.答案B解析静态变量可以在函数内部或外部定义它在程序运行期间只初始化一次,之后再次进入函数时不会重新初始化静态变量的作用域根据定义位置有所不同,不一定是整个程序静态变量的生命周期是整个程序运行期间,和自动变量不同,所以选B.若有定义则执行语句后,的值是?46inta=l,b=2,c;,c=ab a:b;cA.1B.2C.OD.3答案B解析因为为假,所以三目运算符返回的值,即所以选ab b2,B以下关于数组和指针的关系,错误的是?
47.数组名可以隐式转换为指向数组首元素的指针A.可以通过指针来访问数组元素B.指针和数组是完全相同的概念C.指针可以指向数组的任意元素D.答案C解析数组名在很多情况下可以隐式转换为指向数组首元素的指针,通过指针可以方便地访问数组元素,指针也可以指向数组的任意元素但指针和数组不是完全相同的概念,数组有自己的大小和存储方式等,所以选C若有定义则以下赋值正确的是?
48.void*pint,int;,A.void funcint,int;p=func;B.void funcint a,int b;p=func;C.int funcint,int;p=func;D.void funcint;p=func;答案A解析是一个指向函数的指针,该函数返回值为有两个类型的参数选项中函数p void,int Afunc的类型和p指向的函数类型匹配,可以直接将函数名赋值给p;选项B中取函数地址的操作在语言中是多余的;选项中函数返回值类型不匹配;选项中函数参数个数不匹配,C CD所以选A以下关于宏定义的说法,正确的是?
49.宏定义只能定义常量A.宏定义在编译时进行替换B.宏定义的作用域是整个程序C.宏定义可以嵌套,但不能递归D.答案B解析宏定义不仅可以定义常量,还可以定义带参数的宏等宏定义在编译时进行简单的文本替换宏定义的作用域从定义处到文件结束或遇到指令宏定义可以递归,所以选#undefBo若有定义则执行语句后,的值是?
50.inta=15;,a=7;aA.7B.15C.8D.0答案A解析二是按位与赋值运算符,的二进制是的二进制是按位与运算后结果为151111,70111,即十进制的所以选0111,7,A以下关于循环嵌套的说法,正确的是?
51.for循环只能嵌套两层A.for嵌套的循环的循环变量必须不同B.for嵌套的循环的执行顺序是外层循环执行一次,内层循环执行完所有次数C.for嵌套的循环会导致程序效率降低D.for答案C解析循环可以嵌套多层,嵌套的循环的循环变量可以相同但可能会引起混淆嵌套for for的循环执行顺序是外层循环执行一次,内层循环执行完所有次数嵌套的循环不一定会for for导致程序效率降低,合理使用可以实现复杂功能,所以选C
52.若有定义intair⑵
[3]={{1,2},{3,4,5}};,则arr⑼⑵的值是A.1B.2C.0D.3答案C解析在初始化二维数组时,未提供初始值的元素会被初始化为0,所以arr
[0]⑵的值为0,选C以下关于函数的参数默认值,在语言中?
53.C可以为函数参数设置默认值A.不可以为函数参数设置默认值B.只有在函数声明时可以设置参数默认值C.只有在函数定义时可以设置参数默认值D.答案B解苏语言不支持为函数参数设置默认值,这是的特性,所以选CC++B若有定义则的值是?
54.char str[]=abcOdeF;,strlenstrA.7B.3C.4不确定D.答案B解析函数计算字符串的长度,遇到就停止,所以”『的长度是选strlen abcOde3,B以下关于内存泄漏的说法,正确的是?
55.内存泄漏只会发生在动态内存分配中A.内存泄漏不会影响程序的正常运行B.内存泄漏是指程序使用了未分配的内存C.只要使用了动态内存分配就一定会发生内存泄漏D.答案A解析内存泄漏主要是指在动态内存分配中,分配的内存使用完后没有释放,导致这部分内存无法再被使用内存泄漏会影响程序的性能甚至导致程序崩溃它不是使用了未分配的内存使用动态内存分配不一定会发生内存泄漏,只要正确释放内存即可,所以选A若有定义则表达式的值是
56.inta=3,b=5;,aA.2B.8C.6D.O答案A解析八是按位异或运算符,的二进制是的二进制是按位异或运算后结果为30011,50101,0110,即十进制的所以选2,A以下关于数组初始化的说法,错误的是?
57.可以只初始化部分数组元素A.数组初始化时元素个数可以超过数组定义的大小B.字符数组可以用字符串常量初始化C.数组初始化时可以不指定数组大小D.答案B解析数组初始化时可以只初始化部分元素,剩余元素会被初始化为字符数组可以用字符0串常量初始化数组初始化时如果提供了初始值,可以不指定数组大小但数组初始化时元素个数不能超过数组定义的大小,所以选B若有定义则以下调用正确的是?
58.void funcint*a,int*b;,A.int x=1,y=2;funcx,y;B.int x=1,y=2;funcx,y;C.int arr
[2]={1,2};funcarr[O],arr[l];。
个人认证
优秀文档
获得点赞 0