《嘉兴学院往年C语言期末(含六卷)及答案.docx》由会员分享,可在线阅读,更多相关《嘉兴学院往年C语言期末(含六卷)及答案.docx(58页珍藏版)》请在优知文库上搜索。
1、嘉兴学院往年C语言期末(一)一、单项选择题(共20题,每小题2分,共40分)1、有定义语句:intX,y;若要通过SCanf(%d,%d,&x,&y);语句使变量X得到数值11,变量y得到数值12,下面四组输入形式中,错误的是_0A、1112/B、11,12/C、11,12/D、11,/12/2、表达式X&1等价于OAx=0B、X=1CX!=0DX!=13、若有Chara80,*s=a;不正确的输入语句是A、SCanf(%s”,s);B、gets(s);C、fscanf(stdin,z,%cz,s);D、fgets(s,80,stdin);4、设变量a、b、e、Cl和y都已正确定义并赋值。若有
2、以下if语句:if(ab)if(c=d)y=0;elsey=l;该语句所表示的含义是A、y=0,aB、 y=0,ay=l,abyLa2b且c#ClC、 y=0,aD、 y=0,ay=l,aB且CwDy=l,cd5、若变量已正确定义,有以下程序段i。;doPrintf(%d,”,i);whiIe(i+);Printf(%c,i)其输出结果是。A、0,0B、0,1C、1,1D、程序进入无限循环6、在c语言程序中,以下描述正确的是。A、函数的定义可以嵌套,但函数的调用不可以嵌套B、函数的定义不可以嵌套,但函数的调用可以嵌套C、函数的定义和函数的调用均不可以嵌套D、函数的定义和函数的调用均可以嵌套7、
3、一个C语言程序在一台32位机器上运行。程序中定义了三个变量x,y,z,其中X和Z是int型,V为short型。当x=127,y=-9时,执行赋值语句z=x+y后,X, y, z的值分别是.A、 x=0000007FH,B、 x=0000007FH,C、 x=0000007FH,D、 X=OOOooO7FH,y=FFF9H, z=00000076H y=FFF9H, Z=FFFFOo76H y=FFF7H, z=FFFF0076H y=FFF7H, z=00000076H8、设有定义doublea10,*s=a;,一下能够代表数组元素a3的是A、(*s)3B、*(s+3)C、*s3D、*s+39
4、、以下选项中,非法的字符常量是OA, ,t,B、17C、nD、xaa,10、判断两个字符串是否相等,正确的表达方式是Anwhile(sl=s2)B, while(sl=s2)C、while(strcmp(sl,s2)=0)D、while(strcmp(sl,s2)=0)11、以下定义数组中错误的是oA、 inta10;B、 inta220;C、 inta20;D、inta;12、下列函数中,用于向控制台输出信息的是?A、scanf()B、printf()C、sum()D、max()13、若有定义floata=25,b,*p=&b;,则下列对赋值语句*p=a下和p=&a;的正确解释为()oA、两
5、个语句都是将变量a的值赋予变量PB、*p=a是使P指向变量a,而P二&a是将变量的值赋予变量指针PC、*p=a是将变量a的值赋予变量b,而&a是使P指向变量aD、两个语句都是使P指向变量a14、与数学式子3乘以X的n次方/(2xT)对应的C语言表达式是。A、3*xn(2*-l)B、3*x*n(2*xT)C、3*pow(x,n)*(1/(2*-1)D、3*pow(n,x)/(2*-l)15、运行下面程序时,从键盘输入z,12,34,9z,则输出结果是#includevoidmain()(intx,y,z;scanf(,%d,%d,%d,&x,&y,&z);if(xy)if(yz);elsePri
6、ntf(%dn”,y);elseif(XVZ)Printf(%dn”,z);elsePrintf(%dn”,x);A、34B、12C、9D、不确定的值16、运行下面程序时,从键盘输入字母h,则输出结果是4includemain()(charch;ch=getchar();switch(ch)case,h,:Printf(hello!n);caseg,:printf(,goodmorning!n,z);default:Printf(bye_bye!n);A. Hello!B. Hello!GoodMoring!C、Hello!Goodmorning!Bye_Bye!D.Hello!Bye_Bye
7、!17、有以下程序structstu(charname10;intnum;floattotalscore;);voidf(structstu*p)(structstus2=zrsunda11,z,20044,550,zzpenghuazz,20045,537,*q=s;P;+q;*p=*q;)main()(structstus3=z*yangsanz,20041,703,lisiguoz*,20042,580;f(s);printf(z,%s%d%3.0fn”,sl.name,sl.num,sl.totalscore);程序运行后的输出结果是。A、 SunDan20044550B、 Pengh
8、ua20045537C、 1.iSiGuo20042580D、 SunDan2004170318、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请分析程序填空。4includemain()(chars80,cl,c2=*;inti=0,num=0;gets(s);while(si!=,0,)(cl=si;if()num+;i+;c2=cl;)printf(z*thereare%dwords,n”,num);)A、cl=三,&c2=,B、cl!三,,&c2=,C、cl=三,c2!三,D、cl!=,ftc2!三,19、下列定义数组的语句中,正确的是oA、 defin
9、eN10intxN;B、 intN=IO;intxN;C、intx0.10;D、intx;20、有以下程序structs(intx,y;)data2=10,100,20,200;main()(structs*p=data;printf(,/%d11z,+(p-x);)程序运行后的输出结果是。A、10B、11C、20D、21二、判断题(共10题,每小题2分,共20分)()1、在标准C中,for语句后的三个表达式必须都出现。()2、判断一个数是否为偶数,可以通过%运算来实现()3、内层break语句可以终止嵌套的SWitCh,使最外层的SWitCh结束。()4、循环体如果包含一个以上语句,应该用花
10、括弧括起来,以复合语句的形式出现。()5、宏定义用宏名代替一个字符串,在替换时,只是作简单的替换,不作语法检查。()6、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。()7、指向数组元素的指针只可指向数组的首元素()8、C语言中简单变量作为实参时,它和对应的形参之间的数据传递方式是双向值传递。()9、inta4,*p;其中a是地址常量,p为地址变量。()10、C语言程序是从源文件的第一条语句开始执行的三、编程题(共3题,共40分)1、已知a,b,C都是1位整数,求当三位整数abc、Cba的和为1333时a、b、C的值。(本题10分)2、编写程序:字符串排序。如下:请输入3个字符
11、串,每个字符串以回车结束!:b排序后的结果为:abt(本题14分)3、定义一个结构体StUdent,存储学生的学号、名字、性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出。结构体StUdent的定义如下:structstudentintnum;charname20;charsex;intage;);本题要求使用指向结构体数组进行输入和输出。输入:第一行有一个整数n,表示以下有n个学生的信息将会输入。保证n不大于20o以后的n行中,每一行包含对应学生的学号、名字、性别和年龄,用空格隔开。保证每一个人名都不包含空格且长度不超过15,性别用M和F两个字符来表示。输出:有n行,每行输出一个学
12、生的学号、名字、性别和年龄,用空格隔开。请注意行尾输出换行。样例输入:310101LiLinM1810102ZhangFunM1910104WangMinF20样例输出:10101LiLinM1810102ZhangFunM1910104WangMinF20(本题16分)参考答案一、单项选择题1、A2、C3、C4、C5、B6、B7、D【解析】考察符号位的扩展。结合题干及选项可知,int为32位,Short为16位;又C语言的数据在内存中为补码形式,故x、y的机器数写为OOOoOo7F、FFF7H;执行z=x+y时,由于X是int型,y为ShOrt型,故需将y的类型强制转换为int,在机器中通过
13、符号位扩展实现,由于y的符号位为1,故在y的前面添加16个L即可将y强制转换为int型,其十六进制形式为FFFFFFF7H;然后执行加法,即OOOOOO7FH+FFFFFFF7H二OOoooO76H,其中最高位的进位1自然丢弃。8、B9、C10C11、C【解析】考查数组的定义方法。解题要点二维数面的二维不能省略。考点链接数组的下标是从零开始的。12、B13、C14C15、A16C【解析】本题主要对SWitCh语句进行了考查。SWitCh语句的执行过程为:进入SWitCh结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行SwitCh结构中后面的各语句
14、,直到遇到break语句,则跳出switch语句,如果各case都不匹配时则执行default后面的语句。本题中Ch为字符H,所以CaSeM条件中的语句将被执行,由于没有break语句,所以caseL后的语句也被执行,由于同样的缺少break语句,所以default后的语句也被执行了。17、B18、B19、A【解析】数组说明的一般形式为:类型说明符数组名常量表达式。B选项中N是变量,不能用变量定义数组长度。C选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。20、B二、判断题1、错误2、正确3、错误4、正确5、正确6、正确7、错误8、错误9、正确10、错误三、编程题1、 includevoidmain()(inta,b,c;for(