C语言考前复习(二).doc_第1页
C语言考前复习(二).doc_第2页
C语言考前复习(二).doc_第3页
C语言考前复习(二).doc_第4页
C语言考前复习(二).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言考前复习(二) 一、选择题(每小题2分,共32分) 下列各题A)、B)、c)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (11)C语言规定,程序中各函数之间_。A)既允许直接递归调用也允许间接递归调用B)不允许直接递归调用也不允许间接递归调用C)允许直接递归调用不允许间接递归调用D)不允许直接递归调用允许间接递归调用答案:A评析:c语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。(12)在使用程序流程图来表示算法时,菱形用来表示_。A)输入与输出B)子程序C)判断分支D)循环边界答案:C评析:美国国家标准化协会ANSI规定了一些常用的流程图符号,其中椭圆框表示起止框,方框表示处理框,菱形框表示判断分支,箭头表示流程线。(13)C语言中下列叙述正确的是_。A)不能使用dowhile语句构成的循环B)dowhile语句构成的循环,必须用break语句才能退出C)dowhile语句构成的循环,当while语句中的表达式值为非零时结束循环D)dowhile语句构成的循环,当while语句中的表达式值为零时结束循环答案:D评析:选项A是错误的,c语言支持d0while语句;选项B是错误的,dowhile构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项c也是错误的。(14)以下选项中属于C语言的数据类型是_。A)复数型B)逻辑型C)双精度型D)集合型答案:C评析:c语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。其中,基本类型分为整型、字符型、实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。(15)在C语言中,不正确的int类型的常数是_。A)32768B)0C)037 D)0xAF答案:A评析:C语言中int类型的常数的范围是:-3276832767。c整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。选项A超出范围,不正确。(16)以下程序输出的结果是_。main() int a=65535; printf(du,a,a);A)-1 -1B)65535 65535 C)-1 65535D)65535 -l答案:C评析:printf函数中不同类型的数据用不同的格式字符,其中d是按整型数据的实际长度输出十进制整数。变量a=65535以d格式输出时溢出输出值为该数的补码值,即1;u用来输出unsigned型数据,无符号整型变量的数值范围为065535,所以变量a=65535以u格式输出的值为65535。(17)下列描述中不正确的是_。A)字符型数组中可以存放字符串B)可以对字符型数组进行整体输入、输出C)可以对整型数组进行整体输入、输出D)不能在赋值语句中通过赋值运算符=对字符型数组进行整体赋值答案:C评析:c语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项c的说法是不正确的。(19)下列可用于C语言标识符的一组是_。Avoid WORD defineB)a 6$sys ForC)2a sizeof abc D)Int Define Sizeof答案:D评析:C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。注意,大写字母和小写字母被认为是两个不同的字符。C语言中的关键字不能用作标识符。(21)以下说法中正确的是_。A)C语言程序总是从第一个函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分答案:C评析:C语言的程序是由主函数main()开始运行,由主函数来调用其他函数,函数必须是并列的,定义后使用,不能在一个函数中定义其他函数,main()函数不一定要放在程序的开始部分,故选C。(22)有如下程序float fun(x,y)int x,y; return(x+y);main() int a=2,b=5,c=8; printf(3.0fn,fun(int)fun(a+c,b),(a-c);程序运行后的输出结果为_。A)编译出错 B)9 C)21 D)90答案:B评析:本题中先执行(int)fun(a+c,b)函数的调用,值为整型数值15;然后再执行fun(15,(a-e)函数调用,值为单精度实型数值9000000。输出为3.0f,即有效数长度为3,没有小数位数,所以最后结果为9。(23)能正确表示a和b同时为正或同时为负的逻辑表达式是_。A)(a=b=0)&(aOb=0&b=O)&(a0&b0)&(a+b0答案:D评析:选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条件的值;选项c中,表达式表示的是0,因为没有满足条件的值;选项D表示的是a和b为同号。(25)以下程序的输出结果是_。main() int a=-1,b=1,k; if (+a0)&!(b-=0) printf(ddn,a,b); else printf(ddn,b,a);A)-1l B)0lC)10 D)00答案:C评析:逻辑运算符的优先次序如下:!(非)&(与)(或),但本题需特别、注意的是短路的概念。(26)下面程序的输出结果是_。#define P1(x)printf(x)main() char d=p; Pl(d); P1(d);A)pdB)ddC)pdD)pd答案:A评析:带参数的宏定义的一般形式为:#define宏名(参数表)字符串程序中的Pl(d);经宏置换后为printf(d);,所以输出字符串p;程序中的Pl(d);经宏置换后printf(d)。(29)请读程序:#include main() int a=5,b=7,c=9; printf(d,d,a,b,c); printf(d,d,d,a,b);上面程序的输出结果是_。A)5,7,9,5,7B)5,7,5,7C)5,7,不定,7,9D)5,7,5,7,不定答案:D评析:printf函数按格式控制符的个数输出表列中对应的数据,若输出表列的个数大于格式控制符个数,则输出与格式控制符对应的输出表列的数据,输出表列中多的则省略;若格式控制符个数大于输出表列的个数,则输出与格式控制符对应的输出表列的数据,格式控制符多的部分输出的数据是随机的。(30)请读程序:#include func(a,b)int a,b; int c; c=a+b; return c;main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf(dn,r);上面程序的输出结果是_。A)llB)20C)2lD)31答案:C评析:函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x-,y+,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x-,y+,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func()的返回值为13+8=21。(31)请读程序:#include main() int a,b; for(a=l,b=1;a=20) break; if (b3=1) b+=3;continue; b-=5; printf(dn,a);上面程序的输出结果是_。A)7B)8C)9D)10答案:B评析:break语句的作用是用于跳出循环体;continue语句的作用是用于跳出本次循环。执行第一次循环时,(b3=1)为真,b=4,继续下一次循环,如此反复,当b=22时结束循环,共循环8次,即a=8。(32)设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是_。A)x=x*100+0.5100.0 B)x=(x*100+0.5)100C)x=(int)(x*100+0.5)100.0 D)x=(x100+0.5)*100.0答案:C评析:本题通过算术表达式的运算实现小数位数保留两位并四舍五入的操作,其中(int)(x*100+0.5)是指将(x*100+0.5)的值强制转换成整型。(33)请读程序片段(字符串内没有空格字符):printf(dn,strlen(ATSn0121);上面程序片段的输出结果是_。A)llB)10C)9D)8答案:C评析:这个语句的目的是输出ATSn0121这个串的长度,在串中代表一个,而1代表数字1,也占一个字符,n是回车换行符,也占一个字符,加上A、T、S、0、l、2,共9个字符。(34)运行以下程序后,如果从键盘上输入china#,则输出结果为_。#include main() int v1=0,v2=0;char ch; while(ch=getchar()!=#) switch(ch) case a: case h: default:v1+; case 0:v2+: printf(d,dn,v1,v2);A)2,0B)5,0C)5,5D)2,5答案:C评析:执行完一个case后面的语句后,流程控制转移到下一个case继续执行。case常量表达式只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。(35)请选出可用作c语言用户标识符的一组标识符_。A)voidB)a3b3c)ForD)2a define-123-abc DO WORD IFcase sizeof答案:B评析:c语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。选项A中的void是c语言的关键字,不合法;选项c中的case和c语言的关键字重名,不合法;选项D中的2a是数字打头而且sizeof和c语言的关键字重名,不合法。(36)下面能正确定义数组,并正确赋值的语句是_。A)int N=5,bNN Bint a12=1,3C)int c2=1,2,3,4 D)int d32=1,2,34答案:D评析:可以用下面的方法对二维数组初始化:l、分行给二维数组赋初值。如int a34=1,2,3,4,5,6,7,8,9,10,11,12;2、可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。如:int a34=1,2,3,4,5,6,7,8;9,10,1 l,12;3、可以对部分元素赋初值:int a34=1,5,9;它的作用是只对各行第一列的元素赋初值,其余元素值自动为0。4、如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;与下面的定义等价:int a4=1,2,3,4,5,6,7,8,9,10,1l,12;(43)设有:static char str=Beijing;则执行printf(dn,strlen(strcpy(str,China);后的输出结果为_。A)5B)7C)12D)14答案:A评析:在执行printf()函数前,数组str的长度是7,但是当使用strcpy()函数将新的值赋给str后,strlenr)函数返回的应当是现在的str字符串的字符个数,即是5。(44)下列程序段中,不是死循环的是_。A)int i=100; B)unsigned k=0; while(1)do i=i100+1; +k; if(i=100) break; while(k=0);C)for(;); D)int s=3379; while (s+2+s2) s+;答案:A评析:当表达式为非0值时,执行while语句中的内嵌语句,可用break语句跳出循环,用continue语句结束本次循环。选项A不是死循环,当i=100时跳出循环。选项c为空循环语句。(47)有以下程序#includemain()int c;while(c=getchar()!=n)switch(C-2)case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);break;从第一列开始输入以下数据,代表一个回车符。2473程序的输出结果是_。A)668977 B)668966C)66778777 D)6688766答案:A评析:getchar()函数是从键盘接受一个字符输入;当用户键入的字符不是回车符时,会进入一个多分支选择语句,根据C-2的值进行分支选择;putchar()是在屏幕上打印一个字符,最后的结果应当为668977。(48)下面程序的输出结果是_。Union un int a4;long b:char c6;main()union un u:printf(dd,sizeof(u),sizeof(ua);A)82B)88C)188D)182

温馨提示

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

评论

0/150

提交评论