《山东中医药大学2023年C语言考试试卷(含六卷)含答案解析.docx》由会员分享,可在线阅读,更多相关《山东中医药大学2023年C语言考试试卷(含六卷)含答案解析.docx(68页珍藏版)》请在优知文库上搜索。
1、2023年C语言考试试卷(一)(总分100分,考试时长60分钟)一、单项选择题(每小题2分,共100分)1、以下关于IOng、int和short类型数据占用内存大小的叙述中正确的是A、均占4个字节B、根据数据的大小来决定所占内存的字节数C、由用户自己定义D、由C语言编译系统决定【答案】D2、下列C语言标识符中,合法的是oA、ifB、returnC、23aD、a23【答案】D3、以下叙述中正确的是。A、在C语言中,逻辑真值和假值分别对应1和0B、关系运算符两边的运算对象可以是语言中任意合法的表达式C、对于浮点变量X和y,表达式:x=y是非法的,会出编译错误D、分支结构是根据算术表达式的结果来判断
2、流程走向的【答案】B【解析】A选项中,在C语言中,逻辑真值对应非0;C选项中,表达式:x=y是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。4、下面程序段的输出结果是.x=3;doy=一;if(ly)printf(n*r,);continue;printf(rr,);)while(x=2);A、#B、#*C、死循环D、输出错误信息【答案】C5、下列哪个数组定义是正确的oA、inta5)5;B、 INTa10;C、 intan;D、 inta3+2;【答案】D6、以下不能作为合法常量的是oA、OllB、IelC、8.OEO.5D、115【答案】C
3、7、二维数组a有m行n列,则在aij之前的元素个数为。A、 j*n+iB、 i*n+jC、 i*n+j-lD、 i*n+j+l【答案】B8、有如下程序段int*p,a=l,b=2;P=&b;a=*p+a;执行该程序段后,a的值为A、2B、3C、4D、编译出错【答案】B9、下列选项中C语言中不合法的字符串常量的是oA.n12,B、yC.wnnhD、,ABCDx6d【答案】B【解析】字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选项A)、C)、D)都是合法的字符串常量,而选B)是一个字符常量。10、有如下程序段int*p,a=5,b-l;p-&a;a=*p+b;执行该程序段
4、后,a的值为A、5B、6C、7D、编译出错【答案】B11、以下叙述中不正确的是oA、在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值B、在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容C、在C中,外部变量的隐含类别是自动存储类别D、在C中,函数形参可以说明为register变量【答案】C12、下列不正确的转义字符是OA、B、,C、tD、088【答案】D【解析】是反斜线转义字符是水平跳格转义字符;版是换行转义字符;C语言中没有规定088为转义字符。13、下面关于数组的初始化正确的是oA、chara=,a,b,c,B、chara2=ta,b,c,C、chara23三,a,b,e,
5、d,e,f,D、chara=war,nbn,mcm【答案】D【解析】”是字符串符号,而不是字符符号。14、若有说明:int武3=1,2,3,4,5,6,7;则数组。的第一维的大小为:()A、2B、3C、4D、无确定值【答案】B15、下列程序的输出结果是omain()(charcl=97,c2=98;printf(n%d%cr,cl,c2);A、9798B、97bC、a98D、ab【答案】B16、下面不属于条件语句关键字的是oA、elseB、switchC、whiIeD、if【答案】C【解析】条件语句主要由if-else结构和switch多分支语句,while属于循环语句的关键字。17、以下函数
6、调用语句中实参的个数是()。func(el,e2),(e3,e4,e5);A、2B、3C、5D、语法错误【答案】A18、以下程序的输出结果是omain()(union(chari2;intk;)r;r.i0=2;r.il=0;printf(w%dnw,r.k);)A、2B、1C、0D、不确定【答案】A19、对于代码charcl8;scanf(m%sm,cl);printf(,n%sr,cl);在程序运行时,输入了thisprettyboy”,则对应的运行输出显示结果是A、 thispreB、 thisC、 thisprettyboyD、数组越界,不能显示【答案】B20、有以下程序structs
7、tu(charname10;intnum;voidf(char*name,intnum)structstus2=wsundanw,20044,npenghuan,20045;num=s0.num;strcpy(name,s0.name);main()(structstus2=,yangsanr,20041,lisiguor,20042,*p;P=&sl;f(p-name,p-num);printf(,%s%dnn,p-name,p-num);)程序运行后的输出结果是OA、 SunDan20042B、 SunDan20044C、 1.iSiGuo20042D、 YangSan20041【答案】A
8、21、设有定义:intn=0,*p=&n,*q=&p;则以下选项中,正确的赋值语句是A、 p=l;B、 *q=2;C、 q=p;D、 *p=5;【答案】D22、设inta=10,b=ll,c=12;表达式(a+b)c&b=C的值是A、2B、0C、-2D、1【答案】B【解析】解析:本题考查的是运算符的优先级,应该先计算a+b的值为21,然后与C比较大小的值为0,根据“&”的运算规则,整个表达式的值为0。23、在C语言中,关于变量的作用域,下列描述中错误的是cA、局部变量只在整个函数的运行周期中有效B、全局变量的作用域为整个程序的运行周期C、当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量D、
9、全局变量会覆盖掉所有与它重名的局部变量【答案】D【解析】当全局变量与局部变量重名时,全局变量会被屏蔽掉24、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是OA、for(i=l,p=l;i=5;i+)p*=i;B、for(i=l;i=5;i+)p=l;p*=i;C、i=l;p=l;while(i=5)p*=i;i+;D、i=l;p=l;dop*=i;i+;while(l=5)【答案】B【解析】选项B中for循环了5次,而每次循环的时候,都将P的值重新赋值为1后,再乘以当前数字i,最后的结果为5,显然不是5!的值,同样的分析可知选项A、选项C和选项D计算的都是5!。所以,4
10、个选项中选项B符合题意。25、下列变量定义中,错误的是0A、 intx=3;B、 floatf;d;C、Strings=,Hello!n;D、booleanb=true;【答案】B【解析】A选项定义了一个整型;C选项定义了一个字符串;D选项定义了一个布尔型变量:B选项中的f;d不符合标识符规范,因而选B。26、若有定义inta=12,n=5,则表达式a%=(n%2)运算后,a的值:A、0B、1C、12D、6【答案】A27、以下对一维数组a的正确说明是0A、 intn;scanf(n%dM,&n);intan;B、 intn=10,an;C、inta(10);D、defineSIZEIOinta
11、SIZE;【答案】D28、下面各选项中,属于非法的C整型常量的是OA、01B、 OxllC、081D、-32768【答案】C【解析】C语言的整型常量可以有三种表示形式:十进制形式:与日常所用的十进制数形式相同,不能以0开始。八进制形式:以数字0开头,由07组成。十六进制形式:以数字0x(或0X)开头,由09及AF(或af)组成。根据以上知识考查所给出的4个选项:选项A是一个八进制数;选项B是一个十六进制数;选项D是一个十进制数;选项C以0开始没有跟字母x(X),但后面的数字8并不是八进制中使用的数字,故它不是C语言的整型常量。29、以下叙述中不正确的是oA、空字符串(即两个双引号连写)只占一个
12、存储单元B、字符型常量可以放在字符型变量中C、字符型常量可以放在字符串变量中D、字符型常量可以与整数混合运算,而字符串常量不可以【答案】C30、下列说法中错误的是oA、静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值B、若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽C、静态全局变量可以被其他的编辑单位所引用D、所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失【答案】C【解析】静态全局变量只限于本文件所使用。静态全局变量只限于本文件所使用,不能被其他的文件所引用。31、请阅读程序:#in
13、cludeincludemain()(floata,b,c;scanf(,%f%f,&a,&b);c=ab;while(l)if(fabs(c)1.6)a=b;b=c;c=ab;elsebreak;)printf(,%fn,b);若运行时从键盘上输入3.62.4V回车,则输出结果是oA、1.500000B、1.600000C、2.000000D、2.400000【答案】D【解析】本题考查用break语句终止循环。程序中定义了两个实型变量a、b,并给SCanf()函数赋值,键盘输入3.62.4V回车后,a=3.6,b=2.4,c=ab=3.6/2.4=1.5,因为c=1.51.6,退出循环,输出
14、b的原值。表面上看,while(l)条件恒为真,将会产生死循环,但利用break语句可以终止循环。32、下列4种不同数制表示的数中,数值最小的一个是oA、八进制数52B、十进制数44C、十六进制数2BD、二进制数IOlOOl【答案】D【解析】:解答这类问题,一般都是将这些非十进制数转换成十进制数,才能进行统一地对比。非十进制转换成十进制的方法是按权展开。33、下列关于模板形参的描述中,错误的是OA、模板形参表必须在关键字template之后B、模板形参表必须用括瓠()括起来C、可以用ClaSS修饰模板形参D、可以用typename修饰模板形参【答案】B【解析】主要考查函数模板的定义,声明一个函数模板的格式为templateVV模板形参表声明V函数声明,其中V模板形参具有typenameV参数名、ClaSSV参数名、V类