还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机等级考试二级语言历年单选题道及答案C100以下关于语言变量定义的说法,正确的是()
1.C变量可以先使用后定义A.变量定义时必须赋初值B.不同类型的变量可以在同一语句中定义C.变量名可以使用语言的关键字D.C答案C解析语言中不同类型的变量可以在同一语句中定义,如变量必须先定义后使C“inta,floatb;用,定义时不一定要赋初值,变量名不能使用语言的关键字C若有定义,则表达式()的值是()
2.“int a=5,b=3;a+b/2A.
4.0B.4C.
3.5D.3答案B解析为除以是整数除法,结果取整为a+b8,824o以下哪个是语言的转义字符()
3.CA.\aB.*aC.nanD.a答案A解加’山是语言的转义字符,表示响铃区是字符常量,匕”是字符串常量,是标识符C a执行以下代码后,变量的值是()
4.xCint x=10;x+=5;、、AA.10B.15C.5D.20答案B解析等价于原来为加后变为x+=5x=x+5,x10,515以下哪种循环结构一定会执行一次循环体()
5.循环A.for循环B.while循环C.do-while以上都不是D.答案C解析循环是先执行循环体,再判断条件,所以一定会执行一次循环体do-while若有数组定义,则的值是()
6.“int arr
[5]={1,2,3,4,5};arr
[3]A.1B.2C.3D.4答案D以下关于函数指针的说法,正确的是
49.函数指针不能作为函数参数A.函数指针只能指向一个函数B.函数指针的类型和所指向的函数类型必须一致C.函数指针不能调用所指向的函数D.答案C解析函数指针的类型和所指向的函数类型必须一致函数指针可以作为函数参数,可以指向不同的函数,也可以通过函数指针调用所指向的函数
50.若有函数定义uint addint a,int b{return a+b;,以下定义函数指针并初始化的正确方式是A.int*pint,int=add;B.int*pint,int=add;二C.int pint,int add;D.*int pint,int=add;答案A解析定义函数指针的正确形式是返回类型*指针名参数类型列表,所以X int*pint,int=add;是正确的以下关于内存对齐的说法,正确的是
51.内存对齐会增加内存使用效率A.内存对齐只影响结构体的内存布局B.不同编译器的内存对齐规则相同C.内存对齐会导致结构体实际占用内存大于成员总大小D.答案D解析内存对齐会导致结构体实际占用内存大于成员总大小,它会降低内存使用效率,不仅影响结构体,也影响其他数据类型的内存布局,不同编译器的内存对齐规则可能不同若有结构体定义,在一般情况下,该结构体的大小是
52.struct Data{char c;int i;};字节A.5字节B.8字节C.4字节D.1答案B解析由于内存对齐,类型占字节,类型通常占字节,为了保证类型的地址是char1int4int4的倍数,后面会填充字节,所以结构体大小为字节char38以下关于预处理指令的说法,错误的是
53.include可以包含头文件A.#include可以包含自定义文件B.include只能包含一次文件C.#include有两种形式尖括号和双引号D.#include答案C解析可以多次包含同一个文件,它可以包含头文件和自定义文件,有尖括号用于包含include系统头文件和双引号用于包含自定义文件两种形式执行以下代码,输出结果是
54.C#include stdio.h#define SQUAREx x*xint main{int result=SQUARE2+3;printfn%dn,result;return0;A.25B.11C.5编译错误D.答案B解析宏替换后根据运算符优先级,结果为result=2+3*2+3,11以下关于递归函数终止条件的说法,正确的是
55.终止条件可以有多个A.终止条件必须是常量B.终止条件只能在递归函数开头判断C没有终止条件递归函数也能正常结束D.答案A品析递归函数的终止条件可以有多个,不一定要是常量,可以在函数体的合适位置判断,没有终止条件递归函数会无限递归,无法正常结束若有递归函数,
56.“int factorialintn{ifn==0||n==1return1;else return n*factorialn-1;}“调用的结果是factorial3A.3B.6C.9D.12答案B解析:⑴factorial3=3*factorial2=3*2*factorial=3*2*1=6以下关于二维数组作为函数参数的说法,正确的是
57.二维数组作为函数参数时,第一维大小必须指定A.二维数组作为函数参数时,第二维大小必须指定B.二维数组不能作为函数参数C.二维数组作为函数参数时,两维大小都不需要指定D.答案B解析二维数组作为函数参数时,第二维大小必须指定,第一维大小可以不指定若有函数定义
58.“void printArrayint arr[]
[3],int rows{forint i=0;irows;i++{forint j=0;j3;j++{printfn%d\arr[i][j];}}},调用该函数时,传入的二维数组第二维大小必须是任意大小A.B.2C.3与第一维大小相同D.答案C解析函数定义中指定了二维数组的第二维大小为调用时传入的二维数组第二维大小必须是3,3以下关于文件指针的说法,正确的是
59.文件指针只能指向文本文件A.文件指针在文件关闭后仍然有效B.文件指针可以用于读写文件C.一个文件指针只能打开一个文件D.答案c解析文件指针可以用于读写文件,它可以指向文本文件或二进制文件,文件关闭后文件指针无效,一个文件指针在同一时间只能打开一个文件,但可以在不同时间打开不同文件若有代码(,?),若文件打开失败,的值是()
60.“FILE*fp=fopen test.txt;”fpA.0B.1C.NULL随机值D.答案C解析函数打开文件失败时返回fopen NULLo以下关于字符处理函数的说法,正确的是()
61.函数用于判断字符是否为字母A.isdigit函数用于判断字符是否为数字B.isalpha函数用于将大写字母转换为小写字母C.tolower函数用于将小写字母转换为数字D.toupper答案C解析函数用于判断字符是否为数字,函数用于判断字符是否为字母,函数isdigit isalphatolower用于将大写字母转换为小写字母,函数用于将小写字母转换为大写字母toupper执行以下代码,输出结果是()
62.Cchar ch=A;printf(n%c,tolower(ch));A.A宣B.C.65D.97答案B解析函数将大写字母转换为小写字母宾并输出tolower A以下关于字符串处理函数的说法,错误的是()
63.函数用于复制字符串A.strcpy函数用于连接字符串B.strcat函数用于比较字符串长度C.strcmp函数用于计算字符串长度D.strlen答案C解析函数用于比较两个字符串的大小,不是比较字符串长度用于复制字符串,strcmp strcpy用于连接字符串,用于计算字符串长度strcat strlen若有代码;;(),则的值
64.“char strl
[20]=hello char str2
[20]=world strcat strl,str2;“strl是()A.“hello”B.“world”C.nhelloworldnD.hello world”答案C解析:函数将连接到后面,所以的值为strcatstr2strl strlhelloworldo以下关于指针运算的说法,正确的是()
65.指针可以和整数相加A.指针可以和指针相减,但结果无意义B.指针不能和指针比较大小C.指针不能进行自增自减运算D.答案A解析指针可以和整数相加,指针和指针相减得到的是两个指针之间元素的个数,指针可以比较大小,指针也可以进行自增自减运算若有定义,则指向的元素是
66.“int arr
[5]={1,2,3,4,5};int*p=arr;p+2A.1B.2C.3D.4答案C解析指向数组的首元素,指向数组的第个元素,值为arr p+233p以下关于结构体指针的说法,正确的是
67.结构体指针不能访问结构体成员A.访问结构体成员时,结构体指针必须用-运算符B.结构体指针不能作为函数参数C.结构体指针只能指向一个结构体变量D.答案B解析访问结构体成员时,结构体指针必须用-运算符,它可以访问结构体成员,可以作为函数参数,也可以指向不同的结构体变量若有定义,
68.“struct Person{char name
[20];int age;};struct Personp={Tom20};struct Person,则访问的成员的正确方式是*ptr=p;p ageA.ptr.ageB.ptr-ageC.^ptr.ageD.^ptr.age答案B解析:对于结构体指针访问其指向的结构体成员可以用或这里选ptr,age ptr-age*ptr.age,Bo以下关于位运算的应用,错误的是
69.可以用按位与运算判断一个数的奇偶性A.可以用按位异或运算交换两个数的值B.可以用左移运算实现乘法C.可以用右移运算实现除法,但只能是整除D.答案D解析右移运算实现除法时,对于正数是整除,但对于负数结果可能不符合预期按位与运算可以判断奇偶性,按位异或运算可以交换两个数的值,左移运算可以实现乘法若有代码,则的值是
70.“int x=5;int y=x1;yA.OB.1C.5D.2答案B解析的二进制是的二进制是按位与运算后结果为即所以的值是5101,1001,01,1,ylo以下关于函数调用时参数传递的说法,正确的是
71.实参和形参的存储单元是同一个A.传值调用时,形参的改变会影响实参B.传址调用时,实参传递的是变量的地址C.函数调用时,实参和形参的类型可以完全不同D.答案C解析传址调用时,实参传递的是变量的地址实参和形参有各自独立的存储单元,传值调用时形参的改变不影响实参,函数调用时实参和形参类型应尽量一致若有函数定义(),调用该函数不能实
72.“void swapinta,int b{int temp=a;a=b;b=temp;}现两个整数交换的原因是()函数没有返回值A,采用了传值调用B.函数参数类型错误C.函数体逻辑错误D.答案B解析该函数采用传值调用,形参的改变不影响实参,所以不能实现两个整数的交换以下关于数组名作为函数参数的说法,正确的是()
73.数组名作为函数参数时,传递的是数组的副本A.数组名作为函数参数时,函数内部不能修改数组元素的值B.数组名作为函数参数时,本质上传递的是数组首元素的地址C.数组名作为函数参数时,函数定义中必须指定数组的大小D.答案C解析•数组名作为函数参数时,本质上传递的是数组首元素的地址,函数内部可以修改数组元素的值,传递的不是数组的副本,函数定义中第一维大小可以不指定
74.若有函数定义“void printArray(intarr[],intsize){for(int i=0;isize;i++){printf(n%d”,),调用该函数时传入数组名,以下说法正确的是()arr[i];}}函数内部会重新分配一个和原数组一样大小的数组A.函数内部可以修改原数组的元素值B.函数只能处理固定大小的数组C.函数无法访问原数组的元素D.答案B解析函数内部可以通过传入的数组首地址访问和修改原数组的元素值,不会重新分配数组,也可以处理不同大小的数组以下关于枚举类型和整数的关系,正确的是()
75.枚举常量不能赋值给整数变量A.整数变量不能赋值给枚举变量B.枚举常量和整数可以进行比较C.枚举类型和整数类型完全不同,不能相互转换D.答案C解析枚举常量可以赋值给整数变量,整数变量在一定范围内也可以赋值给枚举变量,枚举常量和整数可以进行比较,它们在一定程度上可以相互转换若有定义
76.“enum Weekday{MON,TUE,WED,THU,FRI,SAT,SUN};enum Weekdayday=,则的值是()MON;int num=day;numA.OB.1C.2D.7答案A解析:枚举常量默认从开始编号,为,将值为赋值给整数变量的值o MONday MONnum,num为Oo以下关于宏定义和函数的区别,错误的是
77.宏定义在编译时展开,函数在运行时调用A.宏定义没有参数类型检查,函数有参数类型检查B.宏定义会增加程序的执行时间,函数不会C.宏定义可能会产生副作用,函数相对更安全D.答案C解析宏定义在编译时直接展开,不会增加程序的执行时间,而函数调用有一定的开销宏定义在编译时展开,无参数类型检查,可能产生副作用;函数在运行时调用,有参数类型检查,相对更安全执行以下代码,输出结果是
78.C#define MAXa,b aba:bint x=5,y=3;int result=MAXx++,y++;printfn%d%d%dn,result,x,y;A.564B.354C.553编译错误D.答案A_解析:宏替换后先比较和此时大,取result=x++y++x++:y++,x y,x=5,y=3,x x的值,之后再自增两次变为自增一次变为所以结果为x6,y4,564o以下关于文件读写操作的说法,正确的是
79.函数只能从文本文件中读取字符A.fgetc函数只能向文本文件中写入字符B.fputc函数只能读取二进制文件C.fread函数可以向文本文件或二进制文件写入数据D.fwrite答案D解析和可用于文本文件和二进制文件,和也可用于文本文件和二进制文fgetc fputcfread fwrite件函数可以向文本文件或二进制文件写入数据fwrite若要从文件中读取一个整数,以下正确的做法是
80.使用函数读取每个字符再转换为整数A.fgetc使用函数直接读取整数B.fscanf使用函数读取整个文件内容再提取整数C.fread以上都不对D.答案B解析函数可以按照指定格式从文件中读取数据,可直接用于读取整数一次读取fscanf fgetc一个字符,操作繁琐;一般用于按块读取二进制数据fread以下关于动态内存分配失败的处理,正确的是
81.不需要处理,程序会自动终止A.继续使用分配失败的指针B.检查返回值是否为若为进行相应处理C.NULL,NULL重新定义指针类型D.答案C解析使用动态内存分配函数(如)时,应检查返回值是否为若为表示分配malloc NULL,NULL失败,需进行相应处理,如输出错误信息、释放已分配的其他内存等若有代码()(())()处理代码,
82.“int*p=int*malloc10*sizeof int;if p==NULL{//}”这里检查是否为的目的是()p NULL确保分配的内存大小正确A.检查指针类型是否正确B.判断内存分配是否成功C.避免指针越界D.答案C解析函数分配内存失败时返回检查是否为是为了判断内存分配是否成malloc NULL,p NULL功以下关于和的区别,正确的是()
83.typedef#define是预处理指令,是关键字A.typedef#define只能为基本数据类型定义别名,可以为任意内容定义别名B.typedef#define定义的别名有类型检查,只是简单的文本替换C.typedef#define和作用完全相同D.typedef#define答案C解析是关键字,用于为类型定义别名,有类型检查;是预处理指令,只是简单typedef#define的文本替换不仅能为基本数据类型,也能为自定义类型定义别名typedef执行以下代码,说法正确的是()
84.Ctypedef intINTEGER;#define INTintINTEGER a=5;INTb=10;和的类型本质不同A.a b代码存在编译错误B.和都是类型的变量C.a bint只有是类型的变量D.a int答案C解析为定义了别名用替换所以和都是类型的变量typedef intINTEGER,#define INTint,a bint以下关于结构体嵌套的说法,正确的是()
85.结构体不能嵌套自身A.结构体嵌套时,内层结构体的成员不能被直接访问B.结构体嵌套会增加内存使用量,但不影响访问效率C.结构体嵌套只能嵌套一层D.答案B解析结构体可以嵌套自身(通过指针实现),可以嵌套多层结构体嵌套时,内层结构体的成员不能被直接访问,需要通过外层结构体成员逐层访问嵌套会增加内存使用量,也可能影响访问效率若有定义
86.“struct Date{int year;int month;int day;};struct Person{char name
[20];struct Datebirthday;};struct Personp;v,访问p的生日年份的正确方式是()A.p.yearB.p.birthday.yearC.p-birthday.yearD.birthday.year答案B解析是结构体变量,要访问其嵌套的结构体的成员,使用上p birthdayyear pirthday.year p不是指针,不能用不是独立变量,不能直接访问birthday以下关于共用体和结构体的区别,错误的是
87.共用体所有成员共享同一块内存,结构体成员有各自独立的内存A.共用体同一时间只能使用一个成员,结构体可以同时使用多个成员B.共用体的大小取决于最大成员的大小,结构体的大小是成员大小之和C.共用体和结构体的定义语法不同D,答案C解苏结构体的大小由于内存对齐等原因,不一定是成员大小之和共用体所有成员共享同一块内存,同一时间只能使用一个成员,大小取决于最大成员;结构体成员有各自独立内存,可同时使用多个成员,定义语法也不同若有定义;”,此时访问的值
88.“union Data{int i;float f;};union Datad;d.i=1d.f一定是A.10是不确定的B.编译错误C.会引发运行时错误D.答案B解析共用体成员共享同一块内存,给赋值后再访问由于和存储方式不同,d.i d.f,int floatd.f的值是不确定的以下关于函数嵌套调用和递归调用的说法,正确的是
89.函数嵌套调用是指函数调用自身,递归调用是指函数调用其他函数A.函数嵌套调用和递归调用都可能导致栈溢出B.函数嵌套调用没有终止条件,递归调用有终止条件C.函数嵌套调用效率一定比递归调用高D.答案B解析函数嵌套调用是指一个函数调用另一个函数,递归调用是指函数调用自身两者都可能因调用层次过深导致栈溢出函数嵌套调用和递归调用都可以有合适的逻辑控制,递归调用必须有终止条件嵌套调用和递归调用效率高低不能简单判定以下递归函数用于计算斐波那契数列第项,若较大,该函数存在的主要问题是、、、
90.n nCintfibonacciint n{ifn==0||n==1returnn;else returnfibonaccin-1+fibonaccin-2;代码逻辑错误A.计算结果错误B.效率低下,存在大量重复计算C.无法处理为负数的情况D.n答案C解析该递归函数计算斐波那契数列时:存在大量重复计算,如计算时会重复计fibonaccin-1算等,导致效率低下代码逻辑正确,能正确计算结果,可通过添加判断处理fibonaccin-2n为负数的情况以下关于指针和数组的关系,错误的是数组名可以隐式转换为指向首元素的指针
91.A.可以用指针访问数组元素B.指针和数组完全相同,使用上没有区别C.指针可以指向数组的任意元素D.答案C解析数组名在很多情况下可隐式转换为指向首元素的指针,可用指针访问数组元素,指针也能指向数组任意元素但指针和数组并不完全相同,数组有固定大小,指针是变量可指向不同地址,使用上有区别若有定义二,以下表达式中与等价的是
92.“intarr
[5]={1,2,3,4,5};int*p arr;“arr
[2]A.*p+2B.p
[2]以上都是C.只有正确D.A答案C解析指向数组的首元素,指向数组第个元素,等价于;指针也可像p arrp+23*p+2arr
[2]数组一样使用下标访问元素,⑵也等价于p arr
[2]o以下关于条件编译指令和的区别,正确的是
93.#ifndef#ifdef是判断宏未定义,是判断宏已定义A.#ifndef#ifdef和作用完全相同B.#ifndef#ifdef只能用于判断自定义宏,可用于判断系统宏C.#ifndef#ifdef和不能嵌套使用D.#ifndef#ifdef答案A解析用于判断某个宏是否未定义,若未定义则执行后续代码;用于判断宏是否已#ifndef#ifdef定义,若已定义则执行后续代码它们可嵌套使用,可用于判断自定义宏和系统宏执行以下代码,说法正确的是
94.、、、C#ifndef DEBUGprintfHNot in debug mode\nn;#elseprintfnIn debugmode\nn;#endifA.若DEBUG未定义,输出nNot indebug moden95若DEBUG未定义,输出HIn debugmode1C.无论DEBUG是否定义,都输出nNot indebug moden代码存在编译错误D.答案A解析#ifndef DEBUG判断DEBUG宏是否未定义,若未定义则执行printfuNot indebugmode\n”;,所以若DEBUG未定义,输出Notindebug modeHo以下关于函数指针数组的说法,正确的是
96.函数指针数组的元素只能指向同一个函数A.函数指针数组不能作为函数参数B.函数指针数组可以根据不同情况调用不同的函数C.函数指针数组的大小必须在定义时确定且不能改变D.答案C解析函数指针数组的元素可以指向不同的函数,可根据不同情况调用不同函数它可以作为函数参数,大小可在定义时确定,也可通过动态分配改变若有函数定义
97.“int addinta,int b{return a+b;}int subinta,int b{return a-b;}int⑵,调用的结果是*funcArr int,int={add,sub};funcArr[l]5,3A.2B.8C.5D.3答案A解析是函数指针数组,]指向函数,调用即调用结funcArr funcArrsub funcArr[l]5,3sub5,3,果为5-3=2o以下关于内存泄漏的说法,正确的是
97.内存泄漏只会在动态内存分配时出现A.内存泄漏对程序运行没有影响B.只要程序正常结束,就不会有内存泄漏C.内存泄漏会导致系统可用内存逐渐减少D.答案D解析内存泄漏主要在动态内存分配后未释放时出现,但其他情况也可能导致类似问题内存泄漏会使系统可用内存逐渐减少,影响系统性能,即使程序正常结束,之前未释放的内存也不会被回收若有代码〃后续代码未释放,这段代码存在的问题是
98.“int*p=int*mallocsizeofint;p编译错误A.运行时错误B.内存泄漏C.代码逻辑错误D.答案C解析使用分配了内存,但后续未使用函数释放该内存,会造成内存泄漏malloc free代码本身无编译和运行时错误,逻辑上缺少释放内存的步骤以下关于文件操作中缓冲区的说法,正确的是
99.文件操作没有缓冲区,数据直接读写到文件A.缓冲区的存在会降低文件读写效率B.缓冲区满或手动刷新时,数据才会真正写入文件C.只有文本文件操作有缓冲区,二进制文件没有D.答案C解析文件操作有缓冲区,数据先写入缓冲区,缓冲区满或手动刷新如使用函数时,数fflush据才会真正写入文件缓冲区的存在可提高文件读写效率,文本文件和二进制文件操作都有缓冲区
100.若有代码“FILE*fp=fopenMtest.txtn,nwn;fprintffp,nHelloM;//未调用fflush或fclose”,此时文件中已经写入A.“Hello”没有写入任何内容B.可能写入了部分内容C.无法确定是否写入内容D.答案D解析由于未调用或刷新缓冲区,数据可能还在缓冲区,未真正写入文件,但也有fflush fclose可能缓冲区已满自动写入,所以无法确定是否写入内容解析数组下标从开始,表示数组的第个元素,值为0arr
[3]44以下关于函数调用的说法,错误的是
7.函数可以嵌套调用A.函数调用时,实参和形参的类型必须一致
8.函数调用时,实参可以是常量、变量或表达式C.函数调用时,实参和形参的个数可以不同D.答案D解析函数调用时,实参和形参的个数必须相同,类型尽量一致函数可以嵌套调用,实参可以是常量、变量或表达式执行以下代码,输出结果是
9.Cint i;fori=0;i3;i++{printfn%d ti;A.O12B.123C.0123D.12答案A解析循环从开始,当时执行循环体,依次输出、、for i=0i3012以下关于指针的说法,正确的是
9.指针只能指向变量A.指针变量必须先初始化才能使用B.指针的大小和所指向的数据类型有关C.一个指针只能指向一种数据类型D.答案B解析•指针变量必须先初始化才能使用,否则可能指向一个随机地址指针可以指向变量、数组、函数等,指针的大小在同一系统中是固定的,一个指针可以通过强制类型转换指向不同的数据类型若有定义,则的值是
10.“char str□=hello;strlenstrA.5B.6C.7D.4答案A解析函数计算字符串的长度,不包括字符串结束符,,长度为strlenhello”5以下哪个是语言合法的标识符
11.CA.2abcB._abcC.intD.ab*c答案B解析语言标识符只能由字母、数字和下划线组成,且不能以数字开头,不能是关键字C符合要求,以数字开头,是关键字,包含非法字符_abc2abc intab*c执行以下代码,变量的值是
12.yCint x=5;int y=++x;A.5B.6C.4D.7答案B而析是前置自增运算符,先将的值加变为再将赋值给++xx16,6yo以下关于逻辑运算符的说法,错误的是
13.是逻辑与运算符A.是逻辑或运算符B.||是逻辑非运算符C.!逻辑运算符的运算结果只能是或D.01答案D解析逻辑运算符的运算结果在判断真假时通常用表示假,非表示真,但在一些表达式中00可以根据运算规则得到不同的非值若有定义,则的值是
14.“inta
[3]
[2]={{l,2},{3,4},{5,6}};a[l][l]A.IB.2C.3D.4答案D解析二维数组表示第行第列的元素,值为a[l][l]224o以下关于函数返回值的说法,正确的是
15.函数必须有返回值A.函数返回值的类型可以和定义时不一致B.函数返回值可以是一个数组C.函数可以没有返回值,用表示D.void答案D解析函数可以没有返回值,用表示函数返回值的类型必须和定义时一致,函数不能直void接返回数组,但可以返回指向数组的指针执行以下代码,输出结果是
16.Cint x=10;ifx5{printfnYesn;}else{printf,Non;A.YesB.NoC.YesNo无输出D.答案A解析大于满足条件,执行语句块,输出x=105,if ifYeso以下关于字符数组和字符串的说法,错误的是
17.字符数组可以存储字符串A.字符串以,结尾B.\yc.字符数组的长度一定等于存储的字符串长度可以用函数复制字符串D.strcpy答案C解析字符数组的长度可以大于存储的字符串长度,因为字符串需要以结尾,字符数组中可‘\0‘能有多余的空间若有指针定义,则的值是
18.int*p;inta=5;p=a;*pA.5指针的地址B.p变量的地址C.a不确定值D.答案A解析指向变量表示取所指向的变量的值,即的值p a,*p pa5o以下关于语句的说法,正确的是
19.switch语句中的后面只能是常量表达式A.switch case语句中必须有分支B.switch default语句中的后面可以是变量C.switch case语句只能处理整数类型的表达式D.switch答案A解析语句中的后面只能是常量表达式,分支不是必须的,不能是变量,switch casedefault switch语句可以处理整数类型、字符类型等可枚举类型的表达式执行以下代码,变量的值是
20.zCint x=3,y=4;int z=xyx:y;A.3B.4C.7D.1答案B解析这是一个三目运算符,为假,所以取的值,为xy yz4o以下哪个是语言的文件打开模式
21.CA.TB.nrnC.rD.read答案B解析语言文件打开模式用双引号括起来的字符串表示,表示以只读模式打开文件C若有数组定义“义,则的值是
22.tarr[]={1,2,3,4,5};”sizeofarr/sizeofarr
[0]A.5B.10C.20D.1答案A解析得到数组的总字节数,得到数组一个元素的字节数,相除得到数组sizeofarr sizeofarr
[0]元素的个数5o以下关于递归函数的说法,错误的是()
23.递归函数必须有终止条件A.递归函数调用自身B.递归函数效率一定比非递归函数高C.递归函数可以解决一些复杂的问题D.答案C解析递归函数效率不一定比非递归函数高,因为递归会有函数调用的开销,且可能会导致栈溢出递归函数必须有终止条件,会调用自身,可以解决一些复杂问题执行以下代码,输出结果是()
24.Cint i;()for i=5;i0;i-{()if i==3continue;printf(n%d”,i);A.54321B.5421C.54D.3答案B解析当等于时,执行语句,跳过本次循环的后续语句,继续下一次循环,i3continue所以输出5421以下关于结构体的说法,正确的是()
25.结构体成员只能是基本数据类型A.结构体变量不能作为函数参数B.结构体类型定义后必须立即定义变量C.结构体可以包含不同类型的成员D.答案D解析结构体可以包含不同类型的成员,成员可以是基本数据类型、数组、指针等结构体变量可以作为函数参数,结构体类型定义后不一定要立即定义变量若有定义,,贝
26.“struct Student{char name
[20];int age;};struct Students={Tom20};”ij的值是()s.ageA.nTomnB.20随机值C.无值D.答案B_解析表示结构体变量的成员,值为s.age sage20以下关于共用体的说法,错误的是()
27.共用体的所有成员共享同一块内存A.共用体同一时间只能使用一个成员B.共用体的大小等于最大成员的大小C.共用体成员的类型必须相同D.答案D解析:共用体成员的类型可以不同,所有成员共享同一块内存,同一时间只能使用一个成员,大小等于最大成员的大小执行以下代码,输出结果是()
28.cint a=10;int b=20;int temp=a;a=b;b=temp;printf(n%d%dn,a,b);A.1020B.2010C.1010D.2020答案B解析通过临时变量交换了和的值,所以输出temp ab2010以下关于位运算符的说法,正确的是()
29.是按位与运算符A.是按位异或运算符B.|是按位或运算符C.A是左移运算符D.〜答案A解析是按位与运算符,|是按位或运算符,八是按位异或运算符,是按位取反运算符〜若有定义,则表达式的值是()
30.“intx=5;x«2A.5B.10C.20D.40答案C解析表示将的二进制位左移位,相当于乘以的次方,左移位为x«2x2225220o以下哪个是语言的标准输入函数()
31.CA.printfB.scanfC.getcharD.putchar答案B解析是语言的标准输入函数,用于从键盘读取数据是输出函数,用于读scanf Cprintf getchar取单个字符,用于输出单个字符putchar若有数组定义口二”则的值是()
32.“charstrabc1,str[l]A.1a1B.VC.V,D.\0答案B解析数组下标从开始,表示字符串的第个字符,为02b以下关于函数重载的说法,在语言中()
33.C支持函数重载A.不支持函数重载B.部分支持函数重载C.只有在特定情况下支持函数重载D,答案B解析语言不支持函数重载,函数名必须唯一C执行以下代码,输出结果是()
34.Cint i;()for i=0;i5;i++{()if i%2==0break;printf(n%d”,i);A.01234B.13无输出C.D.O答案C解析当时,成立,执行语句,跳出循环,所以无输出i=0i%2==0break以下关于指针数组的说法,正确的是()
35.指针数组的元素都是指针A.指针数组不能存储字符串B.指针数组的大小是固定的C.指针数组只能存储整数指针D.答案A解析指针数组的元素都是指针,可以存储字符串指针等不同类型的指针,其大小可以在定义时指定,也可以通过动态分配改变若有定义,则是()
36.“int*arr
[3];“arr一个指向整数的指针A.一个包含个整数的数组B.3一个包含个指向整数的指针的数组C.3一个指向包含个整数的数组的指针D.3答案C解析定义了一个包含个指向整数的指针的数组int*arr
[3];3以下关于宏定义的说法,错误的是()
37.宏定义是在编译时进行替换的A.宏定义可以带参数B.宏定义可以嵌套使用C.宏定义的作用域是整个程序D.答案D解析宏定义的作用域从定义处到文件结束或被取消,不是整个程序宏定义在编译时#undef进行替换,可以带参数,也可以嵌套使用执行以下代码,输出结果是()
38.C()#define ADDa,b a+b二()int resultADD2,3*4;printf(n%d,result);、、AA.20B.14C.24D.10答案B解析宏替换后根据运算符优先级,先乘后加,结果为result=2+3*4,14以下关于文件操作的说法,正确的是()
39.文件打开后必须立即关闭A.文件操作完成后不需要关闭文件B.文件关闭后可以继续对其进行读写操作C.可以同时打开多个文件D.答案D解析:可以同时打开多个文件文件打开后不一定要立即关闭,但操作完成后必须关闭文件,关闭后不能再对其进行读写操作若要以追加模式打开一个文本文件,应该使用的打开模式是()
40.A.TB.nwnC.nanD.”rb”答案C解析表示以追加模式打开一个文本文件“是以只读模式打开,“是以只写模式打开并r”w”会清空原文件内容,是以二进制只读模式打开以下关于动态内存分配的说法,正确的是()
41.动态内存分配的空间在栈上A.使用函数分配内存不需要指定大小B.malloc动态分配的内存使用完后不需要释放C.可以使用函数释放动态分配的内存D.free答案D解析动态内存分配的空间在堆上,使用函数需要指定分配的内存大小,动态分配的内malloc存使用完后必须使用函数释放,否则会造成内存泄漏free若有代码()(()),则以下说法正确的是()
42.“int*p=int*malloc sizeofint;指向一个整数爰量A.p指向一个整数数组B.p没有分配到内存C.p分配的内存大小是不确定的D.p答案A解析该代码使用函数动态分配了一个整数大小的内存空间,并将其地址赋给指针malloc,所以指向一个整数变量P p以下关于的说法,正确的是()
43.typedef只能用于定义基本数据类型的别名A.typedef定义的别名和原类型本质不同B.typedef可以为自定义类型定义别名C.typedef定义的别名不能用于函数参数类型D.typedef答翥C解析可以为基本数据类型、自定义类型(如结构体、枚举等)定义别名,定义的别名typedef和原类型本质相同,可以用于函数参数类型执行以下代码,输出结果是()
44.Ctypedef intINT;INT num=10;printf(n%d\num);A.10随机值B.无输出C.编译错误D.答案A解析使用为定义了别名是类型的变量,值为输出typedef intTNT,num INT10,10以下关于枚举类型的说法,错误的是()
45.枚举类型的常量默认从开始编号A.0可以为枚举常量指定值B.枚举常量可以作为函数返回值C.枚举类型的大小一定是字节D.1答案D解析:枚举类型的大小取决于系统,不一定是字节枚举类型的常量默认从开始编号,可以10为其指定值,也可以作为函数返回值若有定义,贝的值是()
46.“enum Color{RED,GREEN,BLUE};enum Colorc=GREEN;”U cA.OB.1C.2不确定D.答案B解析枚举常量从开始编号,为为所以的值是RED0GREEN1,BLUE2,c1以下关于条件编译的说法,正确的是()
47.条件编译只能在预处理阶段处理A.条件编译不能嵌套使用B.条件编译只能根据宏定义进行判断C.条件编译的作用是提高程序运行效率D.答案A解析条件编译是在预处理阶段处理的,可以嵌套使用,不仅能根据宏定义判断,还能根据其他条件其主要作用是方便程序的调试和移植,不是提高运行效率执行以下代码,输出结果是()
48.C#define DEBUG#ifdef DEBUGprintf(nDebug mode\nn);#elseprintf(nRelease mode\nn);#endif、、AA.Debug modeB.Release mode无输出C.编译错误D.答案A解析因为定义了宏所以满足条件,输出DEBUG,#ifdef DEBUGDebug modeo。
个人认证
优秀文档
获得点赞 0