还剩7页未读,继续阅读
文本内容:
北京交通大学海滨学院考试试题(B卷)课程名称C语言程序设计2010-2011学年第二学期出题教师计算机教学组专业班级姓名学号答题说明本试卷共有六道大题,要求所有解答均写在答题卡上,否则无效上交试卷时按照发试卷时候的顺序整理试卷,平铺展开上交
一、选择题(本题共30道题目,每题1分,共30分)
1.以下叙述中正确的是()A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点
2.算法是为解决某特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是()A)有零个输入或多个输入B)高效性C)有穷性D)确定性
3.表达式
3.6-5/2+
1.2+5%2的值是() A)
4.3 B
4.8 C
3.3 D
3.
84.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母,数字和下划线中任一字符
5.下列数据中,不合法的C语言实型数据的是()A)
0.123B)123e3C
6.若有说明语句charc=\72;则变量c()A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定
7.若有定义inta=7;floatx=
2.5y=
4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()A)
2.500000B)
2.750000C)
3.500000D)
0.
0000008.下列可用于C语言用户标识符的一组是()A)voiddefineWORDB)a3_b3_123CarC)For-abcIFCaseD)2aDOsizeof
9.以下不正确的叙述是()A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
10.设有intx=17;则表达式(x++*1/3)的值是()A)5B)6C)17D)
1811.以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C语言表达式是()A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z
12.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是()A)INPUT x、y、z; B)scanf(%d%d%dxyz);C)scanf(%d%d%dxyz); D)read(%d%d%dxyz);
13.以下不合法的字符常量是()A)\018B\”C\\D‘\xcc
14.以下叙述中错误的是( )A)C语句必须以分号结束B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行D)赋值表达式末尾加分号就构成赋值语句
15.设变量已正确定义,则以下能正确计算f=n!的程序段是()A)f=0;fori=1;i=n;i++B)f=1;fori=1;i=2;i--f*=i;C)f=1;fori=n;i1;i++D)f=1;fori=n;i=2;i--f*=i;
16.s1和s2已正确定义并分别指向两个字符串若要求当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是( )Aifs1s2S;Bifstrcmps1s2S;Cifstrcmps2s10S;Difstrcmps1s20S;
17.若有如下语句,则输出结果()intx=3;do{printf%d\nx-=2;}while!--x;A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环
18.以下程序段的输出结果是()inta=4b=5c=0d;d=!a!b||!c;printf%dd;A)1B)0C)非0的数D)-
119.以下能正确定义二维数组的是( )(A)inta[]
[3];(B)inta[]
[3]=2{2*3};(C)inta[]
[3]={};(D)inta
[3]
[3]={{1}{2}{34}};
20.下列数组定义方式不正确的语句是()(A)char x
[5]; (B)char y[]={‘h’ ‘e’ ‘l’};(C)int y[]; (D)int x
[10]={12131415};
21.若有以下定义和语句,输出结果是()charc1=bc2=e;printf%d%cc2-c1c2-a+’A’;(A)3M (B)2E(C)3E (D)输出项与对应的格式控制不一致输出结果不确定
22.有以下程序运行时输入a回车后,以下叙述正确的是( )A)变量c1被赋予字符a,c2被赋予回车符B)程序将等待用户输入第2个字符C)变量c1被赋予字符a,c2中仍是原有字符2D)变量c1被赋予字符a,c2中将无确定值#includestdio.hmain{charc1=1c2=2;c1=getchar;c2=getchar;putcharc1;putcharc2;}
23.若有定义语句charp[]={abc}q
[10]={abc};则字符串p和字符串q的长度分别为()A3,不确定B3,3C不确定,3D不确定,不确定
24.函数调用过程,如果函数funA调用了函数funB函数funB又调用了函数funB,则( )A称为函数的直接递归调用B称为函数的间接递归调用C称为函数的循环调用DC语言中不允许这样的递归调用
25.变量的指针,其含义是指该变量的()A名B值C地址D一个标志
26.若有语句double*pa;则能通过scanf语句正确给输入项读入数据的程序段是() A)*p=a;scanf“%lf”p; B*p=a;scanf“%f”p; Cp=a;scanf“%lf”*p; Dp=a;scanf“%lf”p;
27.设char*s=\ta\103bc;则指针变量s指向的字符串所占的字节数是()A9B5C6D
728.若有定义inta
[5]*p=a;则对a数组元素的正确引用是()A*a
[5]Ba+2C*p+5D*a+
229.当说明一个结构体变量时系统分配给它的内存是()A各成员所需内存量的总和B结构中第一个成员所需内存量C成员中占内存量最大者所需内存D结构中最后一个成员所需内存量
30.以下程序的结果是()#includestdio.hstructWWW{intX;intY;};voidmain{structWWWA
[3]={{78}{910}{1213}};inta;a=A
[1].X+A
[2].Y;printf%da;}A17B22C16D21
二、填空题(本题共10个空,每空1分,共10分)
1.C语言程序的多行注释可以出现在程序中的任何地方,一个注释以作为开始和结束
2.若有如下定义inta=1b=2c=3;执行语句b=a4bac++;之后,c的值是
3.若有如下定义intx=1;floaty=
7.5;执行语句x=3+y/2;之后,x的数据类型是
4.若定义数组inta
[10]={0123456};,则数组元素a[a
[3]+1]的值为,数组元素a
[8]的值为
5.若有定义语句intx
[10]*p=x;在程序中引用数据元素x[i]的四种形是,,和x[i](假设i已正确说明并赋值)
6.在C语言中,从作用域角度分,有和全局变量;从变量存在的时间(生存期)来区分,有动态存储和两种类型
三、判断题(本题共13个题,每题1分,共13分对的画对号,错的画叉号)
1.在C语言中,以0代表”真”,非0代表”假”()
2.二维数组可以这样定义inta
[34]()
3.表达式max=aba:b的作用是将二者中的较大值赋值给max()
4.任何函数都必须具有形参()
5.在c语言中,if可以单独使用()
6.有数组floata
[10]引用数组第6个元素的方法为a
[5]()
7.运行语句inta=0;whilea++printf“%d”a;可以输出变量a的值()
8.若有定义int*p1*p2;则当p1和p2指向同一变量时关系表达式p1==p2的值为真()
9.continue语句则是结束整个循环过程,不再判断执行循环的条件是否成立()
10.C语言中,y=*p;其含义是将p的值赋给y()
11.字符串“Cat”小于字符串“Cet”()
12.数组名可以作函数的参数,传递的是数组的第一个元素的地址()
13.任何存储类的变量在未赋初值时,其值都是不确定的()
四、写出程序的运行结果本题共3道题目,每题3分,共9分)
1.有以下程序,运行时输入cadb回车,输出结果是#includestdio.hintmain{charch;ints1=0s2=0;whilech=getchar()!=’\n’{switch(ch){case‘a’s2+=1;case‘b’s1+=1;break;case‘c’case‘d’s1+=1;break;default s1+=1;s2+=1;}}printf%d,%ds1s2;return0;}
2.有以下程序,运行后的输出结果是#includestdio.hintfunintn{ifn==1return1;elsereturnn+funn-1;}main{intx=10;x=funx;printf%dx;}
3.有以下程序,运行后的输出结果是#includestdio.hintmain{intx[]={0123456789};ints=0i*p=x
[3];fori=1;i6;i+=2s+=*p+i;printf%ds;return0;}
五、程序填空本题共3道题目,每题4分,共12分)
1.根据注释的内容,把代码补充完整#includestdio.hintmain{floatf1f2;;//输入数据,运行时输入
5.3,
3.8回车,变量f1得到
5.3,f2得到
3.8f1*=f2;;//输出变量f1的值,要求数据宽度为6位,小数3位,右对齐return0;}
2.以下程序用以统计字符串里空格的数量,请填空#includestdio.h#includestring.hintmain{chars
[100];intinum=0;getss;fori=0;;i++ifs[i]==‘’;printf%d\nnum;return0;}
3.下面程序的功能是对一个数组进行从大到小的排序,请填空#includestdio.h#defineN10intmain{intnum[N]i=0;voidsortinta[],intn;fori=0;iN;i++scanf%dnum[i];sortnumN;printf\n排序之后;fori=0;iN;i++printf%5dnum[i];return0;}//以下函数实现对数组进行从大到小排序voidsortinta[]intn{intijt;fori=1;in;i++forj=0;;j++if{t=a[j];a[j]=a[j+1];a[j+1]=t;}}
六、编程题(本题共3道题目,第1题8分,第2题8分,第3题10分,共26分)
1.有一个函数要求编写程序,根据输入的x的值,计算并输出对应的y的值
2.编程判断一个字符串是否是回文字符串所谓回文字符串是指一个字符串从左边读和从右边读是一样的
3.请编写一个函数,它的功能是实现字符串的复制主函数已给,请把子函数补充完整#includestdio.hintmain{chars1
[80]s2
[80];voidCopyStringchar*p1char*p2;getss1;getss2;CopyStrings1s2;putss1;return0;}//以下为子函数部分,实现将字符串p2复制到p1里面voidCopyStringchar*p1char*p2。