C语言期末复习资料

上传人:wan****21 文档编号:147014559 上传时间:2022-09-01 格式:DOC 页数:70 大小:691.02KB
收藏 版权申诉 举报 下载
C语言期末复习资料_第1页
第1页 / 共70页
C语言期末复习资料_第2页
第2页 / 共70页
C语言期末复习资料_第3页
第3页 / 共70页
资源描述:

《C语言期末复习资料》由会员分享,可在线阅读,更多相关《C语言期末复习资料(70页珍藏版)》请在装配图网上搜索。

1、所有单选题1、C语言中下列叙述正确的是_。 A:不能使用do-while语句构成的循环 B:do-while语句构成的循环,必须用break语句才能退出 C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环答案:D评析: 本题的考查点是do-while语句。 选项A是错误的,C语言支持do-while语句;选项B是错误的,do-while构成的循环, 当while语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。 故本题答案为D。知识点:知识点/循环结构程序设计/WHILE和

2、DO WHILE循环结构2、以下选项中属于C语言的数据类型是_。 A:复数型 B:逻辑型 C:双精度型 D:集合型 答案:C评析: 本题的考查点是C语言的数据类型。 C语言的数据类型分为基本类型,构造类型,指针类型,空类型四大类。其中,基本类型分为整型,字符型,实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。 故本题答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法3、下列描述中不正确的是_。 A:字符型数组中可以存放字符串 B:可以对字符型数组进行整体输入、输出 C:可以对整型数组进行整体输入、输出 D:不能在赋值语句中通过赋值运算符=对字符型数组进行整体赋值答案

3、:C评析: 本题的考查点是对数组的理解。 C语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项C的说法是不正确的。 故本题答案为C。 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用4、以下程序的输出结果是_。main() int x10,y10,i; for(i0;x8 ;y+i) printf(%d %d ,x-,y); A:10 1 9 2 B:9 8 7 6 C:10 9 9 0 D:10 10 9 1答案:D评析: 本题的考查点是for循环语句。 for语句的一般格式为:for(表达式1;表达式2;表达式3

4、)语句执行中只要表达式2为真,则执行for语句中指定的内嵌语句。所以,本题在条件为真的情况下,先执行printf函数。x-是先使用后运算。 故本题答案为D。知识点:知识点/循环结构程序设计/FOR循环结构5、以下程序的输出结果是_。 main() char a101,2,3,4,5,6,7,8,9,0,*p;int i ;i8;pa+i;printf(%sn,p-3); A:6 B:6789 C:6 D:789答案:B评析: 本题的考查点是通过指针引用数组元素。 指针p指向数组中第8个元素,即a8=9。输出时,输出字符串,且指针把a8作为初始位置往前指3个元素,也就是共有4个字符输出。最后指向

5、a5为6,所以输出为6789。 故本题答案为B。知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数6、能正确表示a和b同时为正或同时为负的逻辑表达式是_。 A:(a=0|b=0)&(a0| b=0&b=0)&(a0&b0)&(a+b0答案:D评析: 本题的考查点是对逻辑表达式的判断。 逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来。 选项A中,表达式表示的是a,b为异号; 选项B中,表达式表示的是0,因为没有满足条件的值; 选项C中,表达式表示的是0,因为没有满足条件的值; 选项D表示的是a和b为同号。 故本题答案为D。知识点:知识点/基本语句/表达式语句,空语句

6、,复合语句7、以下程序的输出结果是_。main() int n=4; while(n-)printf(%d ,-n); A:2 0 B:3 1 C:3 2 1 D:2 1 0答案:A评析: 本题的考查点是while语句的判断。 n-是先使用后运算,-n是先运算后使用。n=4时,执行n-后,n变为3,执行-n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。 故本题答案为A。知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构8、以下程序的输出结果是_。main() int k=17; printf(%d,%o,%xn,k,k,k); A:17,021,

7、0x11 B:17,17,17 C:17,0x11,021 D:17,21,11答案:D评析: 本题的考查点是不同格式的数据输出。 printf函数对不同类型的数据用不同的格式字符,%d是以带符号的十进制形式输出整数(正数不输出符号);%o以8进制无符号形式输出整数(不包括前导符0);%x以16进制无符号形式输出整数(不包括前导符0x)。 本题答案为D。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法9、若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是_。 A:*p=&a;scanf(%ld,p); B:p=(long *)malloc(8);sc

8、anf(%ld,p); C:scanf(%ld,p=&a); D:scanf(%ld,&a);答案:A评析: 本题的考查点是格式输入函数Scanf()的使用。 scanf函数输入形式为:scanf(格式控制,地址表列); 选项B中,p=(long*)malloc(8)是分配8个字节的long型存储单元,所以能通过scanf语句正确给输入项读入数据; 选项C中,p=&a,求出变量a的内存地址并赋给p; 选项D中,能正确给输入项读入数据; 故本题答案为A。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用10、以下选项中,能定义s为合法的结构体变量的是_。 A:typedef stru

9、ct abc double a; char b10; s; B:struct double a; char b10;s; C:struct ABC double a; char b10; ABC s; D:typedef ABC double a; char b10; ABC s;答案:B评析: 本题的考查点是结构体变量的定义。 定义一个结构体类型的变量,可采用三种方法: (1)先定义结构体类型再定义变量名; (2)在定义类型的同时定义变量; (3)直接定义结构类型变量,即不出现结构体名; 选项B符合第三种定义方法。 故本题答案为B。知识点:知识点/结构体(即结构)与共用体(即联合)/结构体和

10、共用体类型数据的定义方法和引用方法11、请读程序: #include main() int a, b ; for(a = 1 , b = 1 ; a = 20) break ; if (b%3 = 1) b += 3 ; continue ; b -= 5 ; printf(%dn, a) ; 上面程序的输出结果是_。 A:7 B:8 C:9 D:10答案:B评析: 本题的考查点是break语句和continue语句。 %是求余运算符,执行第一次循环时,条件(b%3 = 1)为真,b=4,继续下一次循环,如此反复,当b=22时,条件(b = 20)为假,跳出循环,此时共循环8次,即a=8。 故

11、本题答案为B。知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构12、请选出合法的C语言赋值语句_。 A:a=b=58 B:i+; C:a=58,b=58 D:k=int(a+b);答案:B评析: 本题的考查点是赋值语句。 选项A和C没有用分号表示语句结束,不合法; 选项D,函数名和C语言的关键字重名,不合法。 故本题答案为B。知识点:知识点/基本语句/表达式语句,空语句,复合语句13、请选出可用作C语言用户标识符的一组标识符_。 void a3_b3 For 2a define _123 _abc DO WORD IF case sizeof A: B: C: D:答案:

12、B评析: 本题的考查点是C语言的标识符。 C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。 中的void和define都和C语言的关键字重名,不合法; 中的case和C语言的关键字重名,不合法; 中的2a是数字打头而且sizeof和C语言的关键字重名,不合法。 故本题答案为B。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法14、若x和y都是int型变量,x=100、y=200,且有下面的程序片段 printf(%d,(x,y) );上面程序片段的输出结果是_。 A:200 B:100 C:100 200 D:输入格式符不够,输出不确定的值答案

13、:A评析: 本题的考查点是逗号表达式。 在(x,y)中的,是一个特殊的运算符,叫做逗号运算符,它的一般形式为:表达式1,表达式2,求解过程为:先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值,(x,y)的值为200,所以输出结果为200。 故本题答案为A。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用15、若x是int型变量,且有下面的程序片段for(x=3;x6;x+) printf(x%2)?(*%d):(#%dn),x);上面程序片段的输出结果是_。 *3 #3 #3 *3#4 #4 *4 *4#5 *5 *5 #5 A: B: C: D:答案:D评析: 本题

14、的考查点是条件运算符。 这种条件表达式的一般形式为:表达式1?表达式2:表达式3,条件运算符的执行顺序为:先求解表达式1,若非0则求解表达式2,此时表达式2的值就是整个条件表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就是整个条件表达式的值。 故本题答案为D。知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性16、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_。 A:pb=&x; B:pb=x; C:*pb=&x; D:*pb=*x答案:A评析: 本题的考查点是赋值表达式。 选项A是将变量x的地址赋给指针变量pb,使pb指向x,故为正确

15、的赋值表达式。 选项B是将x的值当作地址赋给指针pb,pb指向一个地址等于x值的内存单元; 选项C是将x的地址赋给指针pb指向的那个地址等于x值的内存单元; 选项D是不正确的语句; 本题答案为A。知识点:知识点/基本语句/表达式语句,空语句,复合语句17、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int *p; p= _ malloc(sizeof(int) );则应填入_。 A:int B:int * C:(*int) D:(int*) 答案:D评析: 本题的考查点是强制类型转换。 不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转

16、换的格式为(数据类型 *)。 故本题答案为D。知识点:知识点/数据类型及其运算/不同类型数据间的转换与运算18、若有以下说明和语句,请选出哪个是对c数组元素的正确引用_。 int c45,(*cp)5; cp=c; A:cp+1 B:*(cp+3) C:*(cp+1)+3 D:*(*cp+2) 答案:D评析: 本题的考查点是数组元素的引用。 cp=c这个语句是将数组c的首地址赋给了指针数组cp的第一个数组元素。 选项A,cp+1是指将数组c的首地址加1,不是对数组元素的引用;选项B,*(cp+3)是地址等于数组c的首地址加3的那个内存单元的内容,不是对数组元素的引用; 选项C,*(cp+1)+

17、3是地址等于数组c的首地址加1的那个内存单元中存放的值加3,不是对数组元素的引用。 故本题答案为D。知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数19、若执行下面的程序时从键盘上输入3和4, main() int a,b,s; scanf(%d %d,&a,&b); s=a; if(ab)s=b; s=s*s; printf(%dn,s); 则输出是_。 A:14 B:16 C:18 D:20 答案:B评析: 本题的考查点是给变量赋值。 用户输入的3和4分别赋给了a和b,在if语句进行判断时,因为表达式的值为真,所以b的值将赋给s,s*s=16,最后的打印结果为16。

18、 故本题答案为B。知识点:知识点/基本语句/表达式语句,空语句,复合语句20、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是_。 A:a&b B:a=b C:a|+c&b-c D:!(ab)&(n=cd)后n的值为_。 A:1 B:2 C:3 D:4 答案:B评析: 本题的考查点是逻辑与运算。 在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。本题中,(m=ab)的值为0,求出整个表达式的值为0,不需执行(n=cd),所以n仍为2。 故本题答案为B。知识点:知识点/数据类型及其运

19、算/C运算符的种类、运算优先级和结合性22、设ch是char型变量,其值为A,且有下面的表达式 ch=(ch=A&ch=Z)?(ch+32):ch上面表达式的值是_。 A:A B:a C:Z D:z 答案:B评析: 本题的考查点是条件运算符。 条件表达式的一般形式为:表达式1?表达式2:表达式3,条件运算符的执行顺序:先求解表达式1,若非0则求解表达式2,此时表达式2的值就作为整个表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就作为整个表达式的值。本题中,表达式1的值为1,所以整个表达式的值为表达式(ch+32)的值,即为a。 故本题答案为B。知识点:知识点/数据类型及其运算

20、/C运算符的种类、运算优先级和结合性23、设int a=12,则执行完语句a+=a-=a*a后,a的值是_。 A:552 B:264 C:144 D:-264 答案:D评析: 本题的考查点是赋值表达式的求解。 第一步:a*a=144 ;(此时a=12) 第二步:a-=144相当于a=a-144,a=a-144=-132; (此时a=-132) 第三步:a+=a相当于a=a+a,a=a+a=-264; 所以该表达式最后的值应当为-264。 故本题答案为D。知识点:知识点/数据类型及其运算/C表达式类型和求值规则24、设有如下枚举类型定义 enum language Basic=3,Assembl

21、y=6,Ada=100,COBOL,Fortran;枚举量Fortran的值为_。 A:4 B:7 C:102 D:103 答案:C评析: 本题考查的是数据类型。 这个枚举中共有5个元素,前三个已有明确的赋值,而COBOL和Fortran没有明确的赋值,枚举的语法规定当枚举元素没有赋值时,其值为其前一个元素的值加一,所以COBOL的值为101,故Fortran的值应为102。 故答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法25、设有以下语句,其中不是对a数组元素的正确引用的是:_(其中0i10) int a10=0,1,2,3,4,5,6,7,8,9,*p=a; A:a

22、p-a B:*(&ai) C:pi D:*(*(a+i) ) 答案:D评析: 本题的考查点是通过指针引用数组元素。 观察程序可知,a实际上就是数组a的首地址,所以*(a+i)表示的就是数组a中的第i个元素的值,进而,我们可以知道 *(*(a+i) ) 必然不是对a数组元素的正确引用。 故本题答案为D。知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数26、设有以下语句 char a=3,b=6,c; c=ab2;则c的二进制值是_。 A:00011011 B:00010100 C:00011100 D:00011000 答案:A评析: 本题的考查点是位运算。 是C语言中规定的左移运算符,例如,a=a2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方;是异或运算符,所以,c的二进制值应为00011011。 故本题答案为A。知识点:知识点/位运算/简单的位运算27、设有语句int a=3; 则执行了语句a+=a-=a*a;后,变量a的值是_。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!