北京联合大学C语言程序设计期末精选样卷(含六卷).docx

上传人:夺命阿水 文档编号:1259202 上传时间:2024-04-21 格式:DOCX 页数:62 大小:136.86KB
返回 下载 相关 举报
北京联合大学C语言程序设计期末精选样卷(含六卷).docx_第1页
第1页 / 共62页
北京联合大学C语言程序设计期末精选样卷(含六卷).docx_第2页
第2页 / 共62页
北京联合大学C语言程序设计期末精选样卷(含六卷).docx_第3页
第3页 / 共62页
北京联合大学C语言程序设计期末精选样卷(含六卷).docx_第4页
第4页 / 共62页
北京联合大学C语言程序设计期末精选样卷(含六卷).docx_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《北京联合大学C语言程序设计期末精选样卷(含六卷).docx》由会员分享,可在线阅读,更多相关《北京联合大学C语言程序设计期末精选样卷(含六卷).docx(62页珍藏版)》请在课桌文档上搜索。

1、B、COntinUC语句的作用是结束整个循环的执行C、在循环体内使用break语句或continue语句的作用相同D、从多层循环嵌套中退出时,只能使用got。语句【答案】A6、已知三个字符为a、Z和8,按它们的ascii码值升序排序,结果是。A、 8,a,ZB、 a,8,ZC、 a,Z,8D、 8,Z,a【答案】D7、语句while(!f);中的条件!f等价于()A、 f=0B、 f!=lC、 f!=0D、f【答案】A8、若有以下的定义:intt32;能正确表示t数组元素地址的表达式是OAs&t32B、t3Cs&tlD、 t2【答案】D9、有下面程序段chara3,b=china;a=b;pr

2、intf(%3,r,a);则下面的说法正确的是QA、运行后见输出ChinaB、运行后见输出ChC、运行后见输出ChiD、编译出错【答案】D10、在宏定义#加灯11。Pl3.14159中,用宏名代替一个。A、常量B、单精度数C、双精度数D、字符串C语言程序设计期末精选样卷(一)(总分100分.考试时长90分钟一、单项选择题(每小题2分,共40分).1、以下数值中,不正确的八进制数或十六进制数是OA、0x16B、016C、-16D、Oxaaaa【答案】C2、若X为int型变量,则执行以下语句后,x的值为ox=6;x+=-=x*x;A、36B、-60C、60D、-24【答案】B3、下列关于指针变量的

3、描述,不正确的是0A、在没有对指针变量赋值时,指针变量的值是不确定的B、同类指针类型可以进行相减操作C、在使用没有赋值的指针变量时,不会出现任何问题D、可以通过指针变量来取得它指向的变量值【答案】C【解析】没有赋值的指针变量,可能指向任何地方,如果指向系统,那么使用该指针可能导致系统崩溃。4、SWitCh语句不能用于下列哪种数据类型()A、 doubleB、 byteC、 shortDxchar【答案】A【解析】SWiSh语句中表达式expression只能返回这几种类型的值:int、byte、short和Char。如果比较的数据类型是double型,则不能使用SWitCh结构。5、下列叙述中

4、正确的是oA、只能在循环体内和SWitCh语句体内使用break语句printf(n%d,ar);)As192R、29Cs27D、25【答案】B16、以下程序运行后的输出结果是oincludemain()(ints=0,k;for(k=7;k=0;k)(switch(k)ease1:case4:case7:s+;break;case2:case3:case6:break;case0:case5:s+=2;break;)piintf(s=%dn,s);A、s=5B、s=lC、s=3D、s=7【答案】D17、下面哪个不是关键字?A、intB、 structC、 defineD、 continue【

5、答案】D11、设有数组定义:Chararray=student;则数组所占的存贮空间为。A、6个字节B、7个字节C、8个字节D、9个字节【答案】C12、若有定义:Char*x=abcdefghi;以下选项中正确运用了StrCPy函数的是。A、chary10;strcpy(y,x4);B、chary10:strcpy(+y,&x1);C、chary10,*s;strcpy(s=y+5,x);D、chary10,*s;strcpy(s=y+l,x+1);【答案】D【解析】字符串复制函数StrCPy调用形式为:strcpy(sl,s2)”,其功能为把s2所指字符串的内容复制到SI所指空间,函数返回S

6、I的值,即目的串的首地址。为保证复制的合法性,Sl必须指向一个足够容纳s2串的存储空间。13、下面语句中()是C语言的正确赋值语句。A、 a=l,b=2B、 1+;C、 a=b=5D、 y=int(x);【答案】B14、C语言中函数返回值的类型是由决定的.A、函数定义时指定的类型B、return语句中的表达式类型C、调用该函数时的实参的数据类型D、形参的数据类型【答案】A15、下列程序运行结果为:defineP3ItdefineS(a)P*a*amain()intar;ar=S(3+5);二、判断题(每小题2分,共20分)()1、若有定义:inta;则SCanf($d,a);可以给变量a赋值。

7、【答案】错误()2、位运算符是针对二进制数的每一位进行运算的符号,是专门针对数字。和1进行操作的。【答案】正确()3、在if语句中,必须出现else。【答案】错误()4、While循环语句的循环体至少执行一次.【答案】错误()5、C语言约定0计入字符串的长度。【答案】错误()6、C程序总是从main函数的第一条语句开始执行的。()【答案】正确()7、以下定义了一个一维数组str,该数组可以存放81个字符型数据。charstr81;【答案】正确()8、C语言规定,函数返回值的类型是由return语句中表达式类型所决定的。()【答案】错误()9、在对数组全部元素赋初值时,可以省略行数,但不能省略列

8、数【答案】正确【答案】C18、下面程序的输出结果为Omain()inta,b;b=(a=3*5,a*4,a*5);Printf(%dM,b);)A、60B、75C、65D、无确定值【答案】B19inta5,*p=a;对a数组元素地址的正确引用是A、p+5B、 &a0C、 &a+lD、 *a+l【答案】B【解析】A越界,C和D表达错误。20、有如下定义structperson(charname9;intage;);structpersonclass10=johu,17,paul,19,mary,18,ada16);根据上述定义,能输出字母m的语句是A、 prinftB、 printfC、 pri

9、nftDs printf【答案】D(%cn ( %cn ( %cn ( %cn,fclass3.name);class3.namel)class2,namel)class2.name0)voidmainOcharss1081,*max;intn,i=0;Printfr输入若干个字符串:);gets(ssi);puts(ssi);whiIe(!strcmp(ssi,*)=0)(i+;gets(ssei);puts(ssi);)n=i;max=proe(ss,n);printf(nmax=%sn”,max);(本题14分)【答案】char*proc(char(*a)81,intm)char*max

10、;inti=0:max=a0:for(i=0;im;i+)if(strlen(max)Vstrlen(ai)找出最长的字符串max=ai;returnmax;返回最长字符串的地址3、题目描述,逆序输出成绩表输入一组学生的成绩,将输入内容逆序输出。输入输入格式为每行两个数值,学号N为10位数字,成绩S取值为整数(0S100)读取输入直到输入结束(数据总量不超过50行)输出输出格式为每行两个数值,学号N之后有一个空格,成绩值的输出宽度占3个位置样例输入20#040578()10、当一个C语言程序由多个文件模块组成时,整个程序可以包含多个main()函数。【答案】错误三、编程题每小题分,共40分)1

11、、编写程序:求元素个数为10的一维数组元素中的最大值和最小值。(本题10分)【答案】includestdio.hnmain()intterm10;Inti,max,min;Printf(请输入10个整数:”);for(i=0;i10;i+)(scanf(,%d,&termi);max=term;min=term0;for(i=0;i10:i+)if(termimax)max=tcrmi;)printf(max=%d,min=%d,max,min);)2、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用*作为结束输入的标志)。注意:部分源程序给出如下。请

12、勿改动Inain()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填人所编写的若干语句。试题程序:char*proc(char(*a)81,intnum)20#04268020#04026120#037795样例输出20#03779520#04026120#04268020#040578(本题16分)【答案】ttincludettincldeconstintN=50+5;typedefstructstudentcharno15;intscore;STU;intmain()STUstuN;intn=0;while(scanf(%s%d,stun.no,&stun.score)!=EO

13、F)n+;for(inti=n-1;i=0;i)printf(w%s%3dn,stui.no,stui.score);returnO;D、结构化程序设计提倡模块化的设计方法【答案】C【解析】本题考查的知识点是:结构化程序设计。结构化程序由3种基本结构组成:顺序结构、选择结构和循环结构。已经得到证明,由3种基本结构组成的算法结构可以解决任何复杂的问题。故本题中选项C)是错误的。6、以下叙述中错误的是oA、C语言是一种结构化程序设计语言B、使用三种基本结构构成的程序只能解决简单问题Cs结构化程序由顺序、选择、循环三种基本结构组成D、C语言编译系统允许对函数单独进行编译,从而可以实现模块化【答案】B

14、【解析】C语言是一种结构化程序设计语言,结构化程序由顺序、选择、循环三种基本结构组成,使用三种基本结构构成的程序可以解决任何复杂问题。C语言编译系统允许对函数单独进行编译,从而可以实现模块化。本题答案为B选项。7、若要对a进行+运算,则a应具有下面说明A、 inta32;B、 char*a12,ab;C、 char(*a)3;D、 intb10,*a=b;【答案】A【解析】左移1位,相当于乘以2,题中的X的值是一个八进制,转换为+进制数是32,再乘以2,X的值为64,以。八进制形式输出,显示为100。8、在C语言中,若函数调用时实参是数组名,则传递给对应形参的是oA、数组空间的首地址B、数组的

15、第一个元素值C、数组中元素的个数D、数组中所有的元素【答案】A【解析】本题考有C语言编程中函数实参和形参关系的知识。C语言中,数组名代表该数组的起始地址,它指向该数组的开始位置,但是它的值不能被修改。在函数的定义中,可以用数组名作为参数,被声明为数组的形参实际上是一个指针。当实参向形参传递数组时,按值调用传递数组的首地址,数组元素的本身不被复制。因此,如果函数调用时实参是数组名,则形参指针接受到的是实参数组的首地址。9、在下列给出的表达式中,与While(e)中的(e)不等价的表达式是。C语言程序设计期末精选样卷(二)(总分100分,专时长90分仲一、单项选择题(每小题2分,共40分)1、以下

16、说法错误的是。A、C语言中的常量是指在程序运行过程中经常被用到的变量B、C语言中的常量是指在程序运行过程中其值不能被改变的量C、C语言中的常量可以用一个符号名来代表D、C语言中的常量可以用宏来定义【答案】A【解析】C语言中的常量是指在程序运行过程中其值不能被改变的量,它可以用宏来定义,用一个符号名代表,选项A错误,选项BCD正确,本题答案A2、把十六进制数baf转换成二进制数oA、 101110101111B、 110110101111C、 101110111111D、 111011011111【答案】A【解析】(BAF)16=(101110101111)23、表达式3.6-5/2+1.2+5

17、%2的值是。A、4.3B、4.8C、3.3D、3.8【答案】D4、若a是数值类型,则逻辑表达式(a=l)(a!=l)的值是。A、1B、0C、2D、不知道a的值,不能确定【答案】A5、以下叙述中错误的是oA、C语言是一种结构化程序设计语言B、结构化程序由顺序、分支、循环三种基本结构组成C、使用三种基本结构构成的程序只能解决简单问题B、花括号“”和“”只能作为函数体的定界符C、构成C程序的基本单位是函数,所有函数名都可以由用户命名D、分号是C语句之间的分隔符,不是语句的一部分【答案】A【解析】在C程序中/*/表示注释部分,注释只是让阅读程序的人更容易理解程序,对编译和运行不起作用,可以加在程序中任

18、何位置,选项A)正确;花括号“”和不仅可以作为函数体的定界符,还可以构成复合语句,选项B)错误;系统提供的函数和main函数不能由用户命名,选项C)错误;所有的C语句都以分号结尾,选项D)错误。15、程序段如下intk=0;while(k+=2)printf(%dn,k);则执行结果是OA、1B、2C、0D、无结果【答案】A16、下面程序段的运行结果是.for(i=l;iOE0)(total=total+score;scanf(%d,&score);【答案】正确()5、C语言中字符串的结束符是0。【答案】正确()6、函数的实参和形参都可以是变量、常量和表达式。【答案】错误A、6B、8C、10D

19、、12【答案】A【解析】在解答本题时应该考虑两个问题:结构体变量的长度及SiZeofo求字节数的运算符。结构体变量的长度是其内部成员总长度之和,本题中,structdate中包含year,month,day三个整型变量。一个整型变量所占的字节数为2。18、有以下程序main()(char*s=ffone,two,three),*p;P=sl;printf(,%csnf*(p+l),s0);)执行后输出结果是。Asn,twoB、 t,oneC、 w,oneD、 o,two【答案】C19、有数组:Chara=nthisisanegg;请问该数组到底占了几个字节?A、11B、12C、14D、15【答

20、案】D20、structex(intX;floaty;charz;)example;则下面的叙述中不正确的是。Printf(M为 else if(d!=0)Printf(M为 else if(e!=0)Printf(M为 )3位数,逆序为:%ld%ld%ldn,e,d,c);.2位数,逆序为:%ld%ldn,e,d);(1位数,逆序为:%ldne);2、有一篇文章,共有多行文字(不超过10行),最后一行为end。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。统计结果不包括最后一行的endo(本题14分)【答案】#include#includeintmain()(chars1

21、080;inti=0,j,space=0,lu=0,upr=0,nunber=0,other=0;while(1)gets(si);if(strcmp(si,end)!=0)i+;elsebreak;)for(i=i-l;i=0;i一)for(j=0;sij!=0;j+)if(sij=,)space+;elseif(sij=,a&sij=,A&sij=,0&sij=,9,)number+:elseother+;()7、数组名作为函数参数,传送的是地址.【答案】正确()8、在C语言程序设计中函数是允许嵌套定义的。【答案】错误()9、函数的实参传递到形参有两种方式:值传递和地址传递。【答案】正确(

22、)10、文件指针和位置指针都是随着文件的读写操作在不断改变。【答案】错误三、编程题(每小题分,共40分)1、编写程序:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。(本题10分)【答案】includeintmain()longa,b,c,d,e,x;Printf(Il请输入5位数字:);scanf(%ldl,x);a=x10000;b=x%10000/1000;c=x%1000100;d=x%10010;e=x%10;if(a!=0)/*分解出万位*/*分解出千位*/*分解出百位*/*分解出十位*/*分解出个位*/Printf(为5位数,逆序为:%ld%ld%ld%

23、ld%ldnff,e,d,c,b,a);elseif(b!=0)Printf(为4位数,逆序为:%ld%ld%ld%ldn,e,d,c,b);elseif(c!=0)if(date,m8)k+=31;if(date.m9)k+=30;if(date,m10)k+=31;if(date.ml1)k+=30;if(date,y%4=0date.y%100!=0date.y%4OO=O)k+;printf(%d,k);Printf(大写字母有d个n,upr);Printf(小写字母有%d个n,Iwr);Printf(数字有%d个n,number):Printf(空格有%d个n,space);Prin

24、tf(其他字符有为d个,other);月、日,计算该日在当且年份在IOOO至3000之3、题目描述,定义一个包括年、月、日的结构体变量,读入年年中是第几天。注意闰年问题。输入三个整数,分别表示年、月、日。保证输入是实际存在的日期,间(包含1000和3000)o输出输出该日期是一年中的第几天。请注意行尾输出换行。样例输入20121221样例输出356(本题16分)【答案】ttincludeintmain()structddinty,m,d;)date;inti,j,k;scanf(%d%d%d,Adate.y.&date.m,&date.d);k+=31;k+=28;k+=31;k+=30:k+

25、=31;k+=30;k+=31;k=date.d;if(date,ml)if(date,m2)if(date,m3)if(date,m4)if(date,m5)if(date,m6)if(date,m7)【答案】B5、以下叙述中正确的是oA、while循环的循环体至少执行1次R、while循环的循环控制条件比do-while循环的循环控制条件复杂C、do-while循环体不能是复合语句D、do-whil循环的循环体至少执行1次【答案】D【解析】do-whilewhile-w-和的主要区别在于do-不进行条件判断,先进入循环体执行一遍再判断是否可以继续循环,而while则是先进行条件判断再决定是

26、否进入循环体执行。dowhile循环的循环体至少执行1次。本题答案为D选项。6、在C语言中,main函数默认返回一个()类型的值。A、intB、 floatC、 charD、 void【答案】A7、以下4个选项中,不能看作一条语句的是。A、;Bsa=5,b=2.5,c=3.6;C、 if(b!=5)x=2;y=6:D、 returnj;【答案】C【解析】C语言规定每个语句以;(分号)结束,因此选项C)为两条语句。8、以下叙述中正确的是oA、不能用字符串常量对字符数组名进行整体赋值操作B、字符串常量Hello会被隐含处理成一个无名字符型数组,它有5个元素C、charStr7=String!;在语

27、法上是合法的,运行也是安全的D、char*str;str=Hellon;-charstr;Str=Hello;效果是一样的【答案】A【解析】字符数组在定义时可以用字符串赋初值,其后就不可以再用字符串常量进行赋值。答案选择A。9、在以下各标识符中,合法的用户标识符是oA、OOlB、 table_1Cs0tC语言程序设计期末精选样卷(三)(总分100分,考试时长90分仲一、单项选择题(每小题2分,共40分)1、以下叙述中错误的是OA、可以通过typedef增加新的类型B、可以用typedef将已存在的类型用一个新的名字来代表C、用typedef定义新的类型名后,原有类型名仍有效D、用typedef

28、可以为各种类型起别名,但不能为变量起别名【答案】A2、与十六进制数200等值得十进制数为。A、256B、512C、 1024Ds2048【答案】B3、若有定义doublea;,则正确的输入语句是。A、seaM(%lf,a);B、scanf&a);C、scanf(%If,&a)D、scanf(%le*,&a);【答案】D4、以下if语句书写正确的是oA、 if(x=0;)printf(*%f,x);elseprintf(%ft-);B、if(x0)x=x+l;printf(,%f,x);elseprintfC,%f,-);C、if(xO);x=x+l;printf(,x);elseprintf(

29、ff%ft-);D、if(xO)x=x+l;printf(%f,x)elseprintfC*%f*,t-x);B、 intm=max(10,12,13,14);C、 intm=max(10t11,13,14);D、 intm=max(10,11,12,14);【答案】A13、若要求在if后一对圆括号中表示a不等于O的关系,则能正确表示这一关系的表达式为.A、a0B、!aCsa=0D、a【答案】D14、char*s=tWnameWaddressXn,;指针S所指字符串的长度为:。A、说明不合法B、19C、18D、15【答案】D15、以下程序运行后的输出结果是omain()(inty=18,i=0

30、,j,a8;do(ai=y%2;i+;y=y2;)while(y=l);for(j=i-l;j=0;j-)printf(%dw,aj);printf(,n);)A、 1000B、 10010C、 00110D、 10100D、k%【答案】B10、下面不正确的字符串常量是oA、,abc*B.,12,12C、0D、”【答案】A11、有以下程序#includevoidfun(int*a,intn)*fun函数的功能是将a所指数组元数从大到小排序*/intt,i,j;for(i=o;in-l;j+)for(j=j+l;jn;j+)if(aiaj)(t=ai;ai=aj;aj=t;)main()intC

31、Uo=1,2,3,4,5,6,7,8,9,0,i;fun(c+4,6);foi(i=0;isex);【答案】B【答案】B16、下面程序的运行结果是main()inti,j,a=0;for(i=0;i2;i+)(for(j=0;j4;j+)(if(j%2)break;a+;)a+;printfC%dn,a);)A、4B、5C、6D、7【答案】A17、 enuma(sum=9,mon=-l,tue定义了OA、枚举变量B、3个标识符C、枚举数据类型D、整数9和T【答案】C18、有以下程序includeintf(intx,inty)()5,字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针

32、变量指向一个字符串【答案】正确()6、定义在main函数后的任何函数都需在main中进行函数声明【答案】错误()7、一个C源程序可由一个或多个函数组成。()【答案】正确()8、在一个函数内部调用另一个函数的调用方式称为嵌套调用【答案】正确()9、在函数的定义和调用过程中,形式参数和实在参数数目可以不一致【答案】错误()10、如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。【答案】正确三、编程题(每小题分,共40分)1、输出所有0-200之间能被3整除且个位数字为6的整数。(本题10分)【答案】includevoidmainO(inti;for(i=0;

33、i=200;i+)if(i%3=0)&(i-6)%10=0)printf(%dnn,i);printf(,n);【解析】本题考核的知识点是结构型数组的应用。选项A中“&(*p).age”代表的是stdOage的地址,是正确的,选项C也是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正确的,选项B中的“std.nam。”是错误的引用,因为Std是数组名,代表的是数组的首地址,地址没有成员“name。所以B选项为所选。二、判断题(每小题2分,共20分)()1、有符号整型变量的取值范围是:。-65536【答案】错误()2、一个变量在内存中占据一定的存储单元【答案】正确()3、

34、对于如下的SWiteh语句(使用break)的一般形式,其执行流程是:首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段;如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的语句段,最后执行break语句,跳出SWitCh语句。switch(表达式)case常量表达式1:语句段1;break;case常量表达式2:语句段2;break;case常量表达式n:语句段n;break;default:语句段n+1;break;)【答案】正确()4、C语言中,while循环的循环体有可能一次也不执行。【答案】正确Charname20;intco

35、unt;leader3=“Li”,0,wZhangw,0,“Fun”,0;输入第一行有一个整数n,表示以下有n张选票信息将会输入。保证n不大于100。以后的n行中,每一行包含一个人名,为选票的得票人。保证每一个人名都是Li,Zhang和Fun中的某一个。输出有三行,分别为Li,Zhang和FUn每人的得票数。格式为首先输出人名,其后输出一个冒号,最后输出候选人的得票数。请注意行尾输出换行。样例输入101.i1.iFunZhangZhangFun1.iFunZhang1.i样例输出1.i:4Zhang:3Fun:3(本题16分)【答案】#include#includestructperson(c

36、harname20;intcount;leader3=Li,0,Zhang,0,Fun0;intmainO2、编写程序,从输入的一行字符串中抽取一部分(从笫n个字符开始,抽取m个字符)构成一个新的字符串,并输出。其中n0且n二字符串的长度,否则打印“起始位置n越界”要求:n和m都由用户输入。如果抽取的字符串长度不够,则按照实际长度抽取,例如,字符串为abcde,若n=2,m=3,则抽取结果为bed;若n=3,m=5,则抽取结果为cde”;若n=0,m=4则输出:起始位置0越界;若n=6,n=2则输出:起始位置6越界(本题14分)【答案】#includeincludeintmainOintn,m,i;unsignedlong1;chars80;gets(s);scanf(%d%dw,&n,&m);l=strlen(s);if(n+m-ll)m=l+l-n;if(n0&n=l)for(i=n-l;in+ml;i+)printf(%,si);)elsePrintfC起始位置%d越界置n);return0;)3、题目描述完成一个对候选人得票的统计程序。假设有3个候选人,名字分别为Li,Zhang和Fune使用结构体存储每一个候选人的名字和得票数。记录每一张选票的得票人名,输出每个候选人最终的得票数。结构体可以定义成如下的格式:structpers

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号