《湖南理工学院2022年C语言程序设计预测卷及答案.docx》由会员分享,可在线阅读,更多相关《湖南理工学院2022年C语言程序设计预测卷及答案.docx(54页珍藏版)》请在优知文库上搜索。
1、2022年C语言程序设计预测卷(一)一、单项选择题(每小题2分,共40分)1、对于存储同样一组数据元素而言,OA、顺序结构比链接结构多占存储空间B、顺序结构与链接结构相比,更有利于对元素的插入、删除运算C、顺序结构比链接结构易于扩充空间D、顺序结构占用整块空间而链接结构不要求整块空间【答案】D【解析】顺序结构的存储空间就是存放数据信息的空间,不需要附加空间,而链接结构M点(即元素)的存储空间包括两部分:一部分存放数据信息,一部分存放指针信息,因此A选项是错误的:在顺序结构中,要插入、删除元素需移动其他元素:而在链接结构中,插入、删除元素不需要移动其他元素。因此,选择项B是错误的;顺序结构中,存
2、储空间必须事先定义,在运算过程中难以扩充:链接结构中,元素之间通过指针链接,空间易于扩充。因此选择项C也是错误的;顺序结构中,元素之间的关系通过存储单元的邻接关系来表示,其存储空间必须占用整块空间:链接结构中,节点之间的关系通过指针来表示,不要求整块空间。因此,D是正确答案。2、是不正确的C语言赋值语句。A、x=l,y=2XCx=y=5D、y=int(x);【答案】D3、分析下列程序:ttincludemain()int*pl,*p2,*p;inta=6,b-9;PI=&a;p2=&b;if(a9,69,6【答案】A【解析】通过Pl二&a,p2=&b分别将a、b的地址赋给指针pl、p2,接着执
3、行if语句,发现aVb成立,则通过交换pl、p2的值,即交换a、b所在存储单元的地址,但是a、b的值并没有发生变化。4、执行循环语句后,i变量的值是i=4;while(i-);printf(,z%d,z,i);A、OB、-1C、1D、有错误【答案】B5、调用函数f(27)的输出结果是ovoidf(intn)(if(naD、k【答案】B9、下列选项中,表示字符串末尾的结束标志是oA、nB、,r,C、,0,D、NULL【答案】C【解析】字符串末尾结束标志为010、以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能defineMIN-2147463647
4、intfindmax(intx,intn)inti,max;for(i=0;in;i+)(max=MIN;if(max在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定【答案】B12、关于C语言中数的表示,以下叙述中正确的是oA、只有整型数在允许范围内能精确无误地表示,实型数会有误差B、只要在允许范围内整型数和实型数都能精确地表示C、只有实型数在允许范围内能精确无误地表示,整形数会有误差D、只有用八进制表示的数才不会有误差【答案】A13、在C语言中,以作为字符串结束标志A、n,B、,C、OD、O
5、,【答案】D14、以下选项中不能正确把CI定义成结构体变量的是A、typedefstruct(intred;intgreen;intblue;COLOR;COLORcl;B、structcolorcl(intred;intgreen;intblue;;C、structcolor(intred;intgreen;intblue;)cl;D、struct(intred;intgreen;intblue;)cl;【答案】B15、有以下程序main()(chara=a,b,c,d,e,f,g,h,O;inti,j;i=sizeof(a);j=strlen(a);printf(,z%d,%dn”,i,j
6、);)程序运行后的输出结果是OA、9,9B、8,9C、1,8D、9,8【答案】D16、F面程序的运行结果是oincludemain()inta=l,b=10;do(b-=a;a+;)while(ba=lfb=-1Da=4,b9【答案】B【解析】本题考查两个知识点:自加自减运算符和do-while循环语句。do-WhiI。循环条件是bVO,所以循环体语句只执行一次。17、有以下定义和语句structworkers(intnum;charname20;charc;srruct(intday;intmonth;intyear;s;;structworkersw,*pw;Pw二&w能给W中year成员
7、赋1980的语句是。A、*pw.year=1980;B、w.year-1980;C、pw-year=1980;D、w.s.year=1980;【答案】D18、设有如下定义:intx=10,y=4,z;4则语句:Printf(%dn,z=(x%y,xy);的输出结果是OA、1B、OC、2D、3【答案】C19、若有说明inta34;则a数组元素的非法引用是。A、 a02*1B、al3C、 a4-20D、 a04【答案】D【解析】此题考查的是数组元素的引用。对于已定义的数组aMN,数组元素的正确引用必须满足行卜标小于M,列下标小于N且为正整数。此题中,选项D)中列下标值出现溢出。20、设有如下定义s
8、tructss(charname10;intage;charsex;std3,*p=std;下面各输入语句中错误的是OA、scanf(%d,&(*p).age);B、scanf&std.name);C、sean(*%c,z,&std0.sex);Dscanf(,z%c,z,&(p-sex);【答案】B【解析】本题考核的知识点是结构型数组的应用。选项A中“&(*p).age”代表的是stdOage的地址,是正确的,选项C也是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正确的,选项B中的“std.name是错误的引用,因为Std是数组名,代表的是数组的首地址,地址没有成员
9、“name。所以B选项为所选。二、填空题(每小题2分,共20分)1、C语言中free(p)的作用是释放由所指向的内存区间。【答案】P2、若有语句doublex=17;inty;,当执行y=(int)(x5)%2;之后y的值是【答案】13、C语言源程序经过编译后,生成文件的后缀名是【答案】.c4、c语言规定,不能使用c语言中的做标识符。【答案】关键字5、c语言程序的三种基本结构是顺序结构、选择结构和。【答案】循环结构6、卜.列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1,1,2,3,5,8,13,21,例如,若给n输入7,则该项的斐波拉
10、契数值为13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main。函数,不得增行或删行,也不得更改程序的结构!试题程序:longfun(intg)(switch(g);(case0:return0;case1:case2:return1;)return(fun(g-l)+fun(g-2);)voidmain()(longfib;intn;printf(z/inputn:);scanf(%d,&n);printf(z/n=%dnz,n);fib=fun(n);printf(,zfib=%dnk11,z,fib);答确确/(2 z(nlC在c语言中,将字符串中大写字母转换成小写字母的函
11、数是【答案】strlwrstrlwr()ttstrlwr(字符串)8、从文件读入行,读取字符包括空格,使用函数O【答案】gets()9、输入一个字符,如果它是大写字母,则把它变成小写字母,如果它是一个小写字母,则把它变成大写字母,其它字符不变。请分析程序填空。main()(charch;scanf(,z%cz,&ch);if(l)ch=ch+32;elseif(ch=,a,&ch=a&ch=z,2ch=ch-3210、有以下程序#includemain()inti,n=0,0,0,0,0;for(i=l;i=4;i+)(ni=ni-l*3+1;Printf(%d,ni);程序运行后的输出结果是O【答案】,141340三、编程题(每小题分,共40分)1、编写程序:打印出杨辉三角形(要求打印出10行)。结构如下所示:111121133114641(本题10分)【答案】#includeintmain()inti,j;inta1010;printfnz,);for(i-0;il;for(i=2;i10;i+)for(j=l;ji;j+)aij=ai-ljl+ai-lj;for(i=0;i10;i+)for(j=0;j=i;j+