全国二级c语言练习题.pdf

上传人:奔*** 文档编号:91500786 上传时间:2023-05-27 格式:PDF 页数:72 大小:10.34MB
返回 下载 相关 举报
全国二级c语言练习题.pdf_第1页
第1页 / 共72页
全国二级c语言练习题.pdf_第2页
第2页 / 共72页
点击查看更多>>
资源描述

《全国二级c语言练习题.pdf》由会员分享,可在线阅读,更多相关《全国二级c语言练习题.pdf(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、全国计算机等级考试二 级C语言程序设计第1章 C语言程序设计概述.1第2章 C语言的基本数据类型与表达式.2第3章 顺序程序设计.7第4章 选择结构程序设计.8第5章 循环结构.11第6章 函数与编译预处理.15第7章 数组.21第8章 指针.26第9章 结构体数据类型与链表.35第1 0章 位 运 算 与 文 件 操 作.39上机考试题.43目 录第1章 C语言程序设计概述1.1 程序与程序设计1.2 算法及其描述1.3 C 语言的发展及特点1.4 C 语言程序的基本结构1.5 C 语言字符集、标识符和关键字1.6 C 语言程序的开发环境第2章 C语言的基本数据类型与表达式2.1 C 语言的

2、基本数据类型2.2 常量和变量2.3 运算符与表达式2.4 数据类型转换第3章 顺序程序设计3.1 C 语言的基本语句3.2 数据输入与输出3.3 程序举例第4章 选择结构程序设计4.1 关系运算符与关系表达式4.2 逻辑运算符与逻辑表达式4.3 if语句4.4 switch 语句第5章 循 环 结 构5.1 while 语句5.2 do-while 语句5.3 fo r语句5.4 break,continue 和 goto 语句5.5 循环的嵌套5.6 复合结构程序举例第6章 函数与编译预处理6.1 模块化程序设计与函数6.2 函数的定义与调用6.3 函数的递归调用6.4 变量的作用域与存储

3、方式6.5 编译预处理第7章 数 组7.1 一维数组7.2 二维数组7.3 数组的应用7.4 字符数组与字符串7.5 数组作为函数的参数7.6 程序举例第8章 指 针8.1 指针与指针变量8.2 指针与函数8.3 指针与数组8.4 指针与字符串8.5 指针数组与命令行参数8.6 程序举例第9章 结构体数据类型与链表9.1 结构体类型的定义9.2 结构体类型变量9.3 结构体类型数组9.4 结构体类型指针9.5 结构体与函数9.6 链表第1 0章 位运算与文件操作10.1 位运算与位运算符10.2 位运算举例10.3 C 文件概述10.4 文件类型指针10.5 文件的打开与关闭10.6 文件的定

4、位第1 1章 上机考试题分析第1*C将f程再做计挑述第 1 章 C 语言程序设计概述一、选择题1、以下叙述中正确的是A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优2、以下说法正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分3、C语言规定,在一个源程序中,main函数的位置A)必须在最开始 B)必须在系统调用的库函数的

5、后面C)可以任意 D)必须在最4、以下叙述不正确的是A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一fmain函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面5、C语言程序的基本单位是A)程序行 B)语句C)函数 D)字符6、以下叙述正确的是A)在C程序中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误地表示D)在C程序中,是只能用于整数运算的运算符8、以下4个选项中,不能看做一条语句的是A);B)a=5,b=2.5,c=3.6;C)if(a12?x

6、+10:x-12;printf(%d nn,y);)A)0 B)2228、若x,i,j和k都是int型变量,(i=4,j=16,k=32)后,x的值为A)4则计算表达式x=C)12 D)10B)1620、在C语言中,运算对象必须是整型数的运算符是A)%B)C)%和 D)*21、C语言中运算对象必须是整型的运算符是A)%=B)/C)=D)设变量a是int型,f是float型,i是double型,表达式10+a+i*f值的数据类型为A)int B)float、C)double D)不确定则a+=a-=(b=4)*(a=3)31、设以下变量均为int类型,表达式的值不为7的是23、若有定义:int

7、a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是A)(x=y=6,x+y,x+l)(x=y=6,x+y,y+l)B)A)2.500000 B)2.750000C)3.500000 D)0.000000C)(x=6,x+1 ,y=6,x+y)(y=6,y+1 ,x=y,x+1)D)24、请选出以下语句的输出结果printf(%d n,strlen(t 065 xff n );A)5 B)14C)8 D)输出项不合法,无正常输出25、设有数组定义:char array =China;则数组array所占的空间为A)4个字节 B)5个字节C)6个字节

8、 D)7个字节26、以下不正确的叙述是32、若有条件表达式(exp)?a+:b-,则以下表达式中能完全等价于表达式(e x p)的是A)(exp=0)B)(exp!=0)C)(exp=1)D)(exp!=l)33、以下选项中,与卜=叶+完全等价的表达式是A)k=n,n=n+l B)n=n+l,k=nC)k=+n D)k+=n+l34、以下程序的输出结果是main()int a=21,b=l 1;3第2*C语言的基漳檄据美蒙易表达或printf(%d n,a+b,b+a);)A)a B)ZA)30 B)31C)z-25 D)yC)32 D)3343、有以下程序35、设x、y均为整型变量,且x=1

9、0y=3,则以下语#include 句的输出结果是main()printf(H%d,%d nM,x y);char*p=abcde Ofghjik 0 n;A)10,3 B)9,3printf(%d n,strlen(p);C)9,2 D)10,2)36、表达式ab|(c&d)中运算符优先级最高的是程序运行后的输出结果是A)12 B)15A)|B)&C)6 D)5C)b)m ax=a;e l s e m ax=b;1 4、下列y 的 值 是【工in t y;y=s iz e o f (2.2 5*4);1 5、下列x 的 值 是【】。in t x;x=s iz e o f 2.2 5*4;1

10、6、设x 和y 均为in t型变量,且x=l,y=2,则表达式d o ub l e (1+x/y)的值为【/、m +n(c o s x)-1 7、把数学表达式 m-n改写成c语言的表达式是【J1 8、若有以下定义:c har a;in t b;f l o at c;d o ub l e d;则表达式a*b+d-c 值的类型为【】o1 9、若有以下程序段:in t c l=l,c 2=2,c 3;c 3=l.0/c 2*c l;则执行后,c 3 中的值是【】。三、部分填空题解析2、解析:以0 开头的是八进制数。3、解析:在C语言中,整型,实型,字符型数据间可以混合运算,在进行运算时,不同类型的数

11、据要先转换成同一类型,然后再进行运算。我们可以这样计算本题,9 7+8-3=1 0 2,即1 0 2 所对应的字母为f。4、解析:x 一的值为3,一y 的值为4;注意前缀一和后缀一的区别。8、解析:C语言中,字符也可以进行比较运算,且是按照A SCI I 码值进行的。9、计算机存储一个字符用1 个字节,存储字符串时,每个字符用占用1 个字节,另在字符串的有效字符之后存储1 个字符串的结束标记符。所以存储字符串“X”要占用2 个字节,存储字符x 只要1 个字节。1 0、解析:本题最后一条语句,表示以浮点格式输出z 的值,宽度为5,其中所含2 位小数,应该注意的是,两个整型运算结果仍为整型,如1/

12、2 的结果为0,对本题可逐步求解:5第2*C辖雷的泉漳戳据类表达式1 6.0 0=9/2+2*x/l.1+1/21 6.0 0=4+2*x/l.1+01 2.0 0=2*x/l.1所以,x 的值为6.6。1 1、解析:a*=1 6+(b+)-(+c)等价于a=a*(1 6+(b+)-(+c),b+的值为3,+c 的值为5,请注意前缀+和后缀+的用法。1 2、解析:%是取余运算,操作数为整型,所以最后的结果也为整型,运算过程如下:y/=(x%-6);y/=(x=x%6);y/=5;y=y/5;y=5;1 3、解析:本题考查三目运算符的用法,条件运算符要求有三个操作对象,称三目(元)运算符,它是C

13、语言中惟一的-一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3所以,我们可以写成(ab)?a:b,它是一个“条件表达式”。执行顺序是:如 果(ab)条件为真,则条件表达式取值a,否则取值b。1 4、解 析:s iz e o f (2.2 5*4)为 s iz e o f (1 0.0 0)值为8,C 语言规定浮点型常量当双精度处理(以I BM-P C机为例)。1 5、解析:s iz e o f 运算符高于算术运算符,所以s iz e o f 2.2 5*4 等 价 于(s iz e o f 2.2 5)*4 为8 X 4=3 2 (以I BM-P C机为例)。1 6、解析:

14、本题考查两个知识点一是x/y 的值为整型即为0,二是数字1 存放在d o ub l e 中是d o ub l e 类型。1 8、解析:C语言中,如果运算符两边的数据类型不同,将进行类型转换,根据转换规则,短整型转为长整型;整型转换为实型。19、解析:在赋值运算中,如果表达式中变量和常量的数据类型不一致就会自动进行类型转换。系统会计算1.0/c 2,由于1.0是实型,所以均先转化为双精度型0.5 00000,再和c l 转化后的双精度数相乘得0.5 00000o但其要赋值给整型变量c 3,故要进行强制转换,c 3的值为0。6第3*i本在落强针第 3 章 顺 序 程 序 设 计一、选择题1、结构化

15、程序所规定的三种最基本控制结构是A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数2、若说明int*p,n;则通过语句scanf能够正确读入数据的程序段是A)p=&n;scanf(%d,&p);B)p=&n;scanf(%d,*p);C)scanf(%d,n);D)p=&n;scanf(%d,p);3、以下程序段的输出结果是int a=1234;printf(%2d n,a);A)12 B)34C)1234 D)提示出错、无结果4、已有定义int a=-2;和输出语句printf(%81x,a);以下正确的叙述是A)整型变量的输出形式只有d一种B)%x是格式符

16、的一种,它可以适用于任何一种类型的数据C)%x是格式符的一种,其变量的值按十六进制输出,但81x是错误的D)%81x不是错误的格式符,其中数字8规定了输出字段的宽度5、对下面程序描述正确的一项是(每行程序前面的数字表示行号)1 main()2 3 float a 3=0.0;4 int i;5 for(i=0;i3;i+)scanf(%d,&a i );6 for(i=l;iB)3,5,8 回车C)3 回车58 回车D)35c回车8c回车7、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是main()int*p,*q,a,b;p=&a;printf(inputa:);s

17、canf(%d,*p);)A)*p表示的是指针变量p的地址B)*p表示的是变量a的值,而不是变量a的地址C)*p表示的是指针变量p的值D)*p只能用来说明p是一个指针变量8、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是A)INPUTx、y、z;B)scanf(%d%d%d,&x,&y,&z);C)scanf(%d%d%d,x,y,z);D)read(%d%d%d,&x,&y,&z);9、执行下列程序时输入:123(空格456 空格789回车输出结果是main()char s 100;int c,i;scanf(%c,&c);scanf(%d,&i);scanf

18、(%s,s);printf(%c,%d,%sn,c,i,s);A)123,456,789 B)1,456,789C)1,23,456,789 D)1,23,456二、填空题1、以下程序的输出结果是【工int a=1234;printf(%2d n,a);7第4*达乔他构在方强什第4章 选择结构程序设计一、选择题1、在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假工在求逻辑值时,用()表示逻辑表达式值为“真,又 用()表示逻辑表达式值为“假”。A)I 0 B)0 1C)非0 非0 D)1 12、有如下程序段int a=14,b=15,x;charc=A ;x=(a&b

19、)&(c B );3、执行该程序段后,x的值为A)ture B)falseC)0 D)14、若 运 行 以 下 程 序 时,从 键 盘 输 入ADescriptor(表示回车),则下面程序的运行结果是#include main()char c;int v0=l,vl=0,v2=0;do switch(c=getchar()case a:case A:case e:case E :case i:case I :case o:case O :case u:case U:vl+=l;default:v0+=l;v2+=l;while(c!=n);printf(v0=%d,vl=%d,v2=%d nM

20、,vO,vl,v2);A)v0=7,vl=4,v2=7B)v0=8,vl=4,v2=8C)v0=ll,vl=4,v2=llD)v0=13,vl=4,v2=125、有如下程序main()float x=2.0,y;if(x10.0)y=1.0/x;else y=1.0;printf(f n”,y);该程序的输出结果是A)0.0000000.250000C)0.5000001.000000B)D)6、能正确表示逻辑关系:“a210或aW(的C语言表达式是A)a=10ora=0|a=10&a=10 I I a=0D)7、有如下程序main()inta=2,b=-l,c=2;if(ab)if(b0)c

21、=0;else c+;printf(n%d n,c);)该程序的输出结果是A)0B)1C)2D)38、若变量c为char类型,能正确判断出c为小写字母的表达式是A)a =c=/a)|(c=,z )C)(a=c)D)(c=,a)&(c=/z )9、判断char型变量cl是否为大写字母的正确表达式是A)A=c=A)&(cl=cl)|(Z=N )&(clb)c=l;else if(a=b)c=0;else c=l;return(c);main()int i=2,p;intj,k;j=i;k=+i;p=f(j,k);8第4*送乔传相在方强针printf(d”,p);)11、设x,y和z都是int型变量

22、,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是A)x&y B)x=yC)x|+y&y-z D)!(xy&!z|l)12、以下程序的输出结果是main()int a,i;a=O;for(i=l;i 5;i+)switch(i)case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;)printf(H%d nM,a);)if(ab)&(n=cd)A)1C)3设x,y,t均为int型变量,执 彳=3;-x|+y;巳 后,y的值为A)不确定C)32、若从键盘输入58,则以下程序输出的结果是。14、int a执行15、x=yt=+H完用B)0D

23、)-1后n的值是B)2D)4 语句:B)4D)13、4、main()int a;scanf(,%d,&a);if(a50)printf(d”,a);if(a40)printf(u%d,a);if(a30)printf(u%d,a);)以下程序输出的结果是_L_1。main()int a=5,b=4,c=3,d;d=(a b c);printf(n%d n ,d);)关系表达式x v y z,用C语言的表达式为_ 。16、若执行下面的程序时,从键盘上输入5和2,输出结果是main()int a,b,k;scanf(n%d,%d H,&a,&b);k=a;则5、以下程序的输出结果是q。main()

24、int x=100,a=10,b=20,ok 1=5,ok2=0;if(ab)if(b!=15)if(!okl)x=l;else if(ok2)x=10;else x=l;9第4*达乔他构在方强什printf(%d n,x);6、以下程序的输出结果是【】。#define PR(ar)printf(%d,ar)main()intj,a =1,3,5,7,9,11,15,*p=a+5;fo r(j=3;j;j-)switch(j)case 1:case 2:PR(*p+);break;case3:PR(*(p);)printf(H nn);三、部分填空题解析1、解析:计算表达式!a b,先计算!a

25、,因a的值为10,!a的值为0。关系表达式020为真,所以表达式!abc)d=(543)先算53,为真,得1,即:d=(1 3),此时13,为假,得0。4、解析:xyz的意思是y大于x并且y小于z,在C语言中,表达“并且”用逻辑与运算符“&”。5、程序预置变量x的值为100,a的值为10,b的值为20,okl为5,ok2为0。程序中给出的if语句可以写成更结构化的形式如下:if(ab)if(b!=15)if(!okl)x=l;elseif(ok2)x=10;else x=-l;由于条件ab成立,并且条件b!=15也成立,而okl不等于0,执行else后的语句。又因ok2等于0,执行else后的

26、语句赋-1给X。所以程序输出-1。6、解析:程序的宏定义PR以d格式输出参数的值和逗号字符。程序给数组a赋初值,并由指针p指向元素a 5。程序让j从3至1,共循环3次。与是3时,让p减1,并输出p所指元素的值9;当j是2和1时,输出p所指的数组元素的值,并让p增1,顺序输出9和I K 所以程序输出:9,9,11,10第5 循环辖构第5章 循 环 结 构一、选择题1、下面有关for循环的正确描述是A)for循环只能用于循环次数已经确定的情况B)for循环是先执行循环体语句,后判断表达式C)在for循环中,不能用break语句跳出循环体D)for循环的循环体语句中,可以包含多条语句,但必须用花括号

27、括起来2、对表达式for(表达式1;表达式3)可理解为A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)3、以下描述中正确的是A)由于do-while循环中循环体语句只能是-一条可执行语句,所以循环体内不能使用复合语句B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C)在do-while循环体中,是先执行一次循环,再进行判断D)do-while循环中,根据情况可以省略while4、C语 言 中 w hile和do-while循环的主要区别是A)do

28、-while的循环体至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件更严格C)do-while允许从外部转到循环体内D)do-while的循环体不能是复合语句5、对 下 I,II两个语句描述正确的是I.while(1)II.for(;)A)都是无限循环 B)I 是无限循环,II错误C)I 循环一次,II错误 D)以上答案都错6、下列程序的输出结果是#include main()int y=10;doy;while(y);printf(%d n,y-);)A)-1C)8D)B)107、有如下程序main()int x=23;do printf(%d,x-);whil

29、e(!x);)该程序的执行结果是A)321B)23C)不输出任何内容D)陷入死循环8、执行语句for(i=l;i+j共执行的次数是main()int i=0,j=10,k=2,s=0;for(;)i+=k;i f(ij)printf(%d,s);break;s+=i;)A)4 B)7C)5 D)610、设有程序段int k=10;while(k=0)k=k-l;则下面描述中正确的是A)while循环执行10次II第5 B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次1 1、若有如下语句in t x=3;d o p r in t f (%d n ,x-=2);w h il e

30、(!(-x );则上面程序段A)输出的是1 B)输出的是1和-2C)输出的是3和0 D)是死循环1 2、下面程序的功能是把3 1 6表示为两个加数的和,使两个加数分别能被1 3和1 1整除,请选择填空。#in c l u d e m a in ()in t i=O,j,k;d o i+;k=3 1 6-1 3*i;w h il e ();j=k/l l;p r in t f (3 1 6=1 3*%d+l l*%d ,i,j);)A)k/1 1 B)k%l lC)k/l l=O D)k%l l=O1 3、下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择

31、填空。#i n c lu d e ma i n ()i n t a,b,t;s c a n f (%d%d ,&a,&b);w h i le ()i f (a b)t=a;a=b;b=t;p r i n t f (%d,%d n,a,b);s c a n f (%d%d ,&a,&b);)A)!a=b B)a!=bC)a=b D)a=b13、以下程序的输出结果是ma i n ()i n t i,j,x=O;f o r (i=0;i 2;i+)x+;檎蹂铢狗f o r (j=O;j 3;j+)i f (j%2)c o n t i n u e;x+;)x+;)p r i n t f (x=%d n

32、,x);)A)x=4 B)x=8C)x=6 D)x=1214、设有以下程序段i n t x=0,s=0;w h i le (!x!=0)s+=+x;p r i n t f (%d,s);则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次15、下列说法正确的是i n t i,x;f o r (i=0,x=0;i 6)n;p r i n t f (%d,n);)18、该程序的输出结果是A)987 B)876C)8765 D)987619、在下列选项中,没有构成死循环的是12第 5 章 循环辂构A)inti=100;while(1)i=i%100+l;

33、C)intk=10000;dok+;while(k 10000);if(i100)break;B)for(;);D)int s=36;while(s)-s;二、填空题1、设i,j,k均为im型变量,则执行完下面的for语句后,k的值为【】Ofor(i=0,j=10;in。例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。#include#include float fun(int m,int n)int i;double p=1.0;for(i=1 ;i=m;i+for(i=l;i=n;i+for(i=l;iamax)amax=

34、x;elseif 1amin=x;else scanf;)printf(n amax=%f n amin=%f nn,amax,amin);)4、下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。main()int i,x,y=l;scanf(d&x);for(i=2;i=x/2;i+)if 14 y=0;break;printf(%d n,y);)5、若变量n中的值为2 4,则print。函数共输出LJ行,最后一行有【】个数。void print(int n,int aa)inti;for(i=l;i0;y)if(y%3=0)printf(%d,y);cont

35、inue;三、部分填空题解析1、解析:该for语句以i为0,j为10初始化,循环条件是i=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k。这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j 为9,二次循环后i为2、j为8,,五次循环后i为5、j为5,继续第六次循环,将i与j 的和10存于k后,i为6、j为4,结束循环。所以循环执行后k为10。3、本题先从键盘接受数值,并分别赋给amax(用13第5 特肆稔构于保存最高成绩)和amin(用干保存最低成绩),然后通过while循环控制是否结束输入,并且通过if语句来给amax和amin赋值和进行下一次的输入。4、为判数x是否是素

36、数,预置变量y的值为1 (x可能是素数),然后用循环,用2至x/2的整数i测试对x的整除性,若能被其中的某个整数整除,则x是合数,置y的值为0(x不是素数),结束测试循环。若都不能整除,则x为素数。i能否整除x,可用求余运算x%i等于0来判定。所以程序中的空框可填x%i=0。测试x为素数的代码可写成:y=l;for(i=2;i b)c=l;e l s e i f (a=b)c=0;e l s e c-1;r e t u r n (c);)A)-1 B)1C)2 D)编译出错,无法运行18、有以下程序:v o i d f u n (i n t a,i n t b,i n t c)a=456,b=

37、567,c=678;m a i n ()i n t x=10,y=20,z=30;f u n (x,y,z);p r i n t f (%d,%d,%d n,x,y,z );)输出结果是A)30,20,10C)456,567,67819、有以下程序f l o a t f u n (i n t x,i n t y)r e t u r n (x+y);m a i n ()i n t a=2,b=5,c=8;p r i n t f(%3.0 f n,f u n(i n t)f u n(a+c,b ),a-c);B)10,20,30D)678,567,456程序运行后的输出结果是A)编译出错B)9C)

38、21D)9.02 0、有以下程序f u n (i n t x,i n t y,i n t z)z=x*y;m a i n ()i n t a=4,b=2,c=6;f u n (a,b,c);p r i n t f (%du,c);)程序运行后的输出结果是A)16B)6C)8D)122 1、在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定2 2、有以下程序第6*4热&端稀技虻理i n t f (i n t n)A)1 B)2 i f (n=l)r e t u r n 1;e l s e r e t

39、 u r n f (n-1)+1;)C)3 D)426、在C语言中,变量的隐含存储类别是m a i n ()i n t i,j=0;f o r (i=l;i 3;i+)j+=f (i);p r i n t f C,%d n,j);A)a u t o B)s t a t i cC)e x t e r n D)无存储类别27、以下叙述中不正确的是)程序运行后的输出结果是A)4 B)3C)2 D)123、若有以下程序#i n c l u d e A)在不同的函数中可以使用相同的名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量

40、在本函数范围内有效v o i d f (i n t n);m a i n ()28、以下程序的输出结果是 v o i d f (i n t n);f (5);)v o i d f (i n t n)p r i n t f (%d n,n);则以下叙述中不正确的是A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数fC)对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明m a i n ()i n t x=l,y=3;p r i n t f (d j,x+);i n t x=0;x+=y*2;p

41、 r i n t f (u%d,%d,n,x,y);p r i n t f (u%d,%d n,x,y );)A)1,6,3,1,3 B)1,6,3,6,3C)1,6,323 D)1,7,32329、以下程序的输出结果是D)函数f无返回值,所以可用v o i d将其类型定义为无返回值型24、有如下程序:l o n g f i b (i n t n)i f (n 2)r e t u r n (f i b (n-1)+f i b (n-2);e l s e r e t u r n (2);)m a i n ()p r i n t f (%d n,f i b (3);i n t f ()./、(.八

42、 m a i n ()I s t a t i c i n t i=0;f.八i i n t i,a=0;i n t s=l;,.八 u 、0/、.f o r (i=0;i 5;i+)a+=f ();s+-i,i+,p r i n t f (n%dnn,a);r e t u r n s;A)20 B)24C)25 D)1530、以下叙述中不正确的是该程序的输出结果是A)2 B)4C)6 D)8A)预处理命令行都必须以#号开始B)在程序中凡是以#号开始的语句行都是预处理命令行25、以下程序的输出结果是l o n g f u n (i n t n)l o n g s;i f (n=l|n=2)s=2

43、;e l s e s=n-f u n (n-1);r e t u r n s;m a i n ()p r i n t f (n%l d nn,f u n (3);C)宏替换不占用运行时间,只占编译时间D)在 以 下 定 义 是 正 确 的:井d e f i n e PI3.1415926;31、#d e f i n e F (X,Y)(X)*(Y)m a i n ()i n t a=3,b=4;p r i n t f (n%dnM,F (a+,b+);17第6*4热&端稀技虻理程序运行后的输出结果是A)12C)16B)15D)2032、有如下程序:#defineN2#defineMN+l#de

44、fineNUM2*M+1main()int i;for(i=l;i=NUM;i+)printf(d n”,i);)该程序中的for循环执行的次数是A)5 B)6C)7 D)833、以下程序的运行结果是#define MIN(x,y)(x)b?a:b)+1main()int i=6,j=8,k;printf(%d n,MAX(i j);)8、以下程序的输出结果为【,#define JFT(x)x*xmain()int a,k=3;a=+JFT(k+1);printf(d”,a);)9、下面程序的运行结果是“#define N 10#define s(x)x*x#define f(x)(x*x)m

45、ain()intil,i2;il=1000/s(N);i2=1000/f(N);printf(%d%d n,il,i2);10、以下程序的输出结果是“】o#define MAX(x,y)(x)(y)?(x):(y)main()int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(n%d nn,t);)11、以下程序的输出结果是“void fun()static int a=0;a+=2;printf(H%dH,a);)main()int cc;for(cc=1 ;ccb成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加

46、1)。8、解析:宏替换的原则是按原样替换,本题中遇到形参x则以实参k+1替换,其他字符不变。所以JFT(k+1)经替换后为k+l*k+l,所以a=+k+l*k+1,若k+1,若k的值为3,则经过运算为a=4+l*4+1=9。9、解析:对于define宏定义语句,系统会在编译前进行替换。il=1000/s(N)il=1000/s(10)il=1000/10*10il=1000i2=1000/f(N)i2=1000/f(10)i2=1000/(10*10)i2=1010、本题综合考查带参数的宏以及三目运算符的计算方法,?”运算符是一个三目运算符,其一般形式是:表达式1?表达式2:表达式3。?”运算

47、第6*4,照&端稀技处理符的含义是:先求表达式1的值,如果为真,则求表达式2的值并把它作为整个表达式的值;如果表达式1的值为假,则求表达式3的值并把它作为整个表达式的值 注意,在本题中宏替换时可采用逐步求解,最终为76?7:6*10,即t=76?7:60,其值为t=7。11、解析:本题考查静态局部变量的使用。用关键字static声明的局部变量为“静态局部变量,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。20第7*热做第7章 数 组一、选择题1、若有说明inta 3 4 ;则a数组元素的非法引用是A)a 0 2

48、*1 B)a 1 3C)a 4-2 L0 D)a 0 42、若二维数组a有m列,则计算任一元素a i j在数组中相对位置的公式为(假设a L0 0 位于数组的第一个位置上)A)i*m+j B)j*m+iC)i*m+j-l D)i*m+j+l3、在C语言中,引用数组元素时,其数组下标的数据类型允许是A)整型常量 B)整型表达式C)整型常量或整型表达式D)任何类型的表达式4、以下不正确的定义语句是A)double x 5=2.0,4.0,6.0,8.0,10.0;B)inty=0,135,7,9;C)char cl 2:3 4 5);D)charc2 口=xl0 x a x 8 ;5、以下不能对二

49、维数组a进行正确初始化的语句是A)inta 2 3=0;B)inta 口 3=1,2,0);C)inta 2 3=1,2,3,4,5,6;D)int a E 3=1,2,3,4,5,6;6、对以下说明语句的正确理解是inta 10=6,7,8,9,10);A)将5个初值依次赋给a 1 至a 5B)将5个初值依次赋给a 0 至a 4C)将5个初值依次赋给a 6 至a 10D)因为数组长度与初值的个数不相同,所以此语句不正确7、若有说明:inta 3 4=0;则下面正确的叙述是A)只有元素a 0 0 可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元

50、素均可得到初值08、若有说明:inta 口 4=0,0;则下面不正确的叙述是A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D)只有元素a 0 0 和a 0 E l 可得到初值,其余元素均得不到确定的初值9、若有说明:int a 3=1,2,3,4,5,6,7;则a数组第一维的大小是A)2 B)3C)4 D)无确定值10、假定int类型变量占用两个字节,其有定义:intx 10=0,2,4;,则数组x在内存中所占字节数是A)3 B)6C)10 D)2011、下面程序输出的结果是main()inti;int

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁