C语言习题-.pdf
《C语言习题-.pdf》由会员分享,可在线阅读,更多相关《C语言习题-.pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-1-C 语言第 1 章 C 语言的历史、特点11978 年美电话电报公司(AT&T)的贝尔实验室正式发表了C 语言。2C 语言把括号、赋值、强制类型转换等作为运算符处理。3C 语言的数据类型有整型、实型、字符型、数组型、指针型、结构体类型、共用体类型等。(树、栈、链表等为数据构)4C 语言允许直接访问物理地址,能进行位(bit)操作。第2章 C语言程序的基本结构【例 1】(2002 年4月)编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑()。A.仅为整个程序作注释B.仅为每个模块作注释C.为程序段作注释D.为每个语句作注释【答案】C【例 2】
2、(2002 年4月)以下叙述正确的是()。A.可以把 define 和 if 定义为用户标识符。B.可以把 define 定义为用户标识符,但不能把if 定义为用户标识符。C.可以把 if 定义为用户标识符,但不能把define 定义为用户标识符。D.define 和if 都不能定义用户标识符。【答案】B(define 不是关键字,if 是关键字,所以define 可以定义为用户的标识符。)【例 3】(2002 年9月)源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括选择合适的标识符注释和()。A.程序的视觉组织B.尽量不用或少用GOTO 语句C.检查输入数据的有效性
3、D.设计良好的输出报表【答案】A(源程序文档中主要包括标识符命名,注释和视觉组织。)【例 4】(2002 年9月)以下叙述中正确的是()。A.构成 C语言程序的基本单位是函数。B.可以在一个函数中定义另一个函数。C.main()函数必须放在其他函数之前。D.所有被调用的函数一定要在调用之前进行定义。【答案】A (C语言是由函数构成的,所以C语言的基本单位是函数,在C语言中不能嵌套定义,就是说不能在函数中定义函数,main()函数可以放在程序的任意位置,但是程序的执行都是从main()函数开始的,所有被调用的函数一定要在调用之前进行声明。)【例 5】(2002 年9月)以下选项中合法的用户标识符
4、是()。A.long B._2Test C.3Dmax D.A.dat【答案】B【例 6】(2003 年9月)以下叙述中正确的是()。A.C程序中注释部分可以出现在程序的任意合适地方。B.花括号“”和“”只能作为函数体的定界符。C.构成 C程序的基本单位是函数,所有函数名都可以由用户命名。D.分号是 C语言之间的分隔符,不是语句的一部分。-2-【答案】A【例 7】(2003 年9月)若已定义的函数有返回值,则以下关于该函数调用叙述错误的是()。A.函数调用可以作为独立的语句存在。B.函数调用可以作为一个函数的实参。C.函数调用可以出现在表达中。D.函数调用可以作为一个函数的形参。【答案】D 在
5、C语言中,当函数有返回值时可以作为表达式或表达式的一部分,而函数调用只能作为实参,不能作为形参。第3章数据类型、运算符、表达式与基本语句31数据类型【例 1】(2000 年4月)下列变量定义中合法的是()。A.short _a=1-.le-1 B.double b=1+5e2.5 C.long do=0 xfdaL D.float 2_and=1-e-3【答案】A【例 2】(2001 年4月)以下只有在使用时才为该类型变量分配内存的存储类说明是()。A.auto 和 static B.auto 和 register C.register和 static D.extern 和 register【
6、答案】B 根据 C 语言的规定,auto 和register在 C语言程序中当它们被用到时才会分配内存,在它们声明时并不占用内存空间的。【例 3】(2002 年4月)以下选项中不属于C语言类型的是()。A.signed short int B.unsigned long int C.unsigned int D.long short【答案】D【例 4】(2002 年9月)以下选项中合法的实型常数是()。A.5E2.0 B.E3 C.2E0 D.1.3E【答案】C【例 5】(2002 年9月)已知大写字母A的ASCII 码的值是 65,小写字母 a的ASCII 码是 97,则用八进制表示字符常量
7、,101?是()。A.字符 A B.字符 a C.字符 e D.非法的常量【答案】A 本题中 101的八进制在十进制表示则是65,也就是 A的ASCII 码值。【例 6】(2002 年9月)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。A.void B.int C.float D.double【答案】B【例 7】(2003 年9月)以下选项中可作为C语言合法整数的是()。A.10110B B.0386 C.0Xffa D.x2a2-3-【答案】C【例 8】(2003 年9月)已定义 c为字符变量,则下列语句中正确的是()。A.c=,97?B.c=“97”C.c=97 D.c=
8、“a”【答案】C【例 9】(2004 年4月)以下符合 C语言语法的实型常量是()。A.1.2E0.5 B.3.14159E C.5E-3 D.E15【答案】C【例 10】(2002 年4月)设有以下变量定义,并已赋确定的值char w;int x;float y;double z;则表达式:w*x+z-y 所求得的数据类型为。【答案】double【考点解析】当不同数据类型一起运算时,如果有精度大的数据类型参加时,结果会上最后会以精度大的,这样能保持数据的精度。3 2运算符【例 1】(2000 年4月)设有 int x=11;则表达式 (x+*1/3)的值是()。A.3 B.4 C.11 D.
9、12【答案】A 【考点解析】在题目中,有三个运算符,其中“”可以把 1/3 看成一个整体,也就是一个数,那么根据运算符优先级知道,+的优先级比*高,那么先运行+,再运行*,最后结果是 3。【例 2】(2000 年4月)设 int x=1,y=1;表达式(!x|y-)的值是()。A.0 B.1 C.2 D.-1【答案】B【考点解析】在这一题中,我们要注意的是-或+的位置,在这里y-是指先把 y与!x 进行或运算,后y再减 1,那么这个表达式的值是1。如果-y 是指 y减1后再与!x 进行或运算。【例 3】(2000 年4月)设int b=2;表达式(b2)/(b1)的值是()。A.0 B.2 C
10、.4 D.8【答案】A【考点解析】移位运算是用于一个整数的二进制数向左或向右移动。先是把b化成二进制,再右移两位,则是 0;而右移一位,则是1,所以整个表达式的结果是0。【例 4】(2000 年9月)C 语言中运算对象必须是整型的运算符是()。A.%=B./C.=D.=【答案】A【考点解析】在C语言程序设计中“%”是表示求余运算,是必须是整形的数据类型,而其它三种运算符的运算对象可以是整形也可以是其它数据类型。【例 5】(2000 年9月)若已定义 x和y为double 类型,则表达式x=1,y=x+3/2 的值是()。A.1 B.2 C.2.0 D.2.5【答案】B【考点解析】在这一题中,我
11、们清楚 C语言中的自动数据类型的转换,在这里 3/2 是整形除以整形,-4-所以结果自动转换成整形,再加上1,所以最后结果是2。【例 6】(2001 年9月)整型变量 x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是()。A.x|y B.x|y C.x&y D.x y【答案】D【考点解析】|是C语言的逻辑或运算符,表示只要有一个表达式为真,则整个表达式都为真;|是按位或运算符,先是把操作数转化成二进制,再按位进行或运算;&是按位与运算符,先是把操作数转化成二进制,再按位进行与运算;是按位异或运算符,先是把操作数转化成二进制,再按位异或运算,就是相同的为,不同的为1。【例 7】(20
12、02 年9月)已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&y+z/2的值是()。A.6 B.0 C.2 D.1【答案】【考点解析】在本题中,优先级最高的是括号,因此先计算x+y,跟着是!的优先级高,即运算!(x+y),接着是/的优先级高,即运算z/2,再是+、-的运算符优先级,在本表达式中优先级最低的是&,最后的结果是 1。【例 8】(2002 年9月)设a和b均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b的值是()。A.6.500000 B.6 C.5.500000 D.6.000000【答案】D【考点解析】在本题表达式中,
13、优先级最高的是int,跟着是/,最后是+。根据优先级分析,先运算(int)5.5,是指对 5.5 取整,这里也是数据类型的强转换。跟着运算b/b,因为 b是double 类型,则结果也是 double 类型,最后运算“+”运算符,则可以计算出最后的结果。【例 9】(2003 年4月)下列关于单目运算符+、-的叙述中正确的是()。A.它们的运算对象可以是任何变量和常量。B.它们的运算对象可以是char 型变量和 int 型变量,但不能是float型变量。C.它们的运算对象可以是int 型变量,但不能是double 型变量和 float型变量。D.它们的运算对象可以是char 型变量、int 型变
14、量和 float型变量。【答案】D【考点解析】在C 语言中,+、-是单目运算符,分别表示进行加1、减 1运算,一般是在char、int、float数据类型中运算。【例 10】(2004 年9月)有以下定义语句double a,b;int w;long c;若各变量已正确赋值,则下列选项中正确的表达式是()。A.a=a+b=b+B.w%(int)a+b)C.(c+w)%(int)a D.w=a=b【答案】C【考点解析】在C 语言程序设计中,表达式不允许作为值来直接赋值给表达式;在表达式中运用“%”时应该注意,运算符“%”的使用对象必须是整型;“=”是关系运算符,在这里并不正确,赋值符应该是“=”
15、。【例 11】(2004 年9月)若x和y代表整型数,以下表达式中不能正确表示数学关系-5-x-y 10的是()。A.abs(x-y)-10&x-y10 C.!(x-y)10 D.(x-y)*(x-y)100【答案】C【例 12】(2004 年9月)设有定义语句:char c1=92,c2=92;则以下表达式中值为零的是()。A.c1c2 B.c1&c2 C.c1c2 D.c1|c2【答案】A 3 3表达式【例 1】(2000 年9月)若变量已正确定义并赋值,下面符合C语言语法的表达式是()。A.a:=b+1 B.a=b=c+2 C.int 18.5%3 D.a=a+7=c+b【答案】B【考点
16、解析】表达式是由运算符把字符连接起来所构成的。在上面选项中,A中的字符变量定义错误,C选项不是表达式,D选项中等号左边必须是一个可以确定的值。【例 2】(2001 年4月)若a为int 类型,且其值为3,则执行完表达式a+=a-=a*a 后,a的值是()。A.-3 B.9 C.-12 D.6 【答案】C【考点解析】这题中,有多个赋值关系。从右到左计算,可以这样理解:首先 a*a 等于 9,再计算 a=a-9,得到 a=-6,再计算 a=a+(-6),所以最后答案是-12。【例 3】(2002 年4月)变量 a已被定义为整型,下列表达式不正确的是()。A.a=A+20 B.a-=a C.a=c+
17、d D.a=c+d 【答案】C【考点解析】在语言中我们得知字符变量可以参与任何整数的运算,在项中,c和d如果是字符变量应刻有单引号括住,如果是其它变量应提前定义,以避免编绎出错。【例 4】(2002 年4月)若有定义:int a=8,b=5,c;执行语句 c=a/b+0.4 后,c的值为()。A.1.4 B.1 C.2.0 D.2【答案】B【考点解析】在本题中,首先计算的是优先级高的/,a/b(8/5=1),再将 1+0.4 的值赋给 c,由于 c为整型变量所以要将1.4 转换为整型,即是舍弃小数位0.4(c 的值变为 1)。【例 5】(2002 年9月)与数学式子对应的 C语言表达式是()。
18、A.3*xn(2*x-1)B.3*x*n(2*x-1)C.3*pow(x,n)*(1/(2*x-1)D.3*pow(n,x)/(2*x-1)【答案】C【考点解析】在 C语言程序设计中,数学运算次方在C语言中运用函数pow()来表达,例如:x的y次方,在C语言中应该这样表达:pow(x,y),所在选项中,选项D表达写反了,则只有选项C才是正确的选项。-6-【例 6】(2002 年9月)以下选项中,与k=n+完全等价的表达式是()。A.k=n,n=n+1 B.n=n+1,k=n C.k=+n D.k+=n+1【答案】【考点解析】在本题中,k=n+为后辍运算,根据其运算规则,应先把n的值赋给 k,然
19、后 n的值再加上1,选项的表达式与本题中的表达式等价。【例 7】(2003 年9月)以下选项中非法的表达式是()。A.0=x100 B.i=j=0 C.(char)(65+3)D.x+1=x+1【答案】D【考点解析】在C 语言程序设计中,表达式不允许作为值来直接赋值给表达式。【例 8】(2004 年4月)设有定义:float a=2,b=4,h=3;以下语言表达式中与代数式1/2*(a+b)h计算结果不相符的是()。A.(a+b)*h/2 B.(1/2)*(a+b)*h C.(a+b)*h*1/2 D.h/2*(a+b)【答案】B【考点解析】本题实质上是要把数学表达式在C语言程序设计中表达出来
20、,在C语言中优先级最高是括号,那么先计算所有的括号,可以看到选项B中的(1/2)结果是 0,那么整个表达式的结果就是0,而其它三项的结果并不是0。第4章程序设计三种基本结构一、选择题:【例 1】(2002 年4月)下面的程序的输出结果是()。#include main()int i=010,j=10;printf(%d,%d,+i,j-);A.11,10 B.9,10 C.010,9 D.10,9【答案】B (i的值是以八进制定义的)【例 2】(2002 年4月)以下的程序的输出结果是()。main()int a=5,b=4,c=6,d;printf(dn,d=ab?)(ac?a:c):(b)
21、;A.5 B.4 C.6 D.不确定【答案】C-7-【例 3】(2002 年4月)以下程序的输出结果是()。main()int a=4,b=5,c=0,d;d=!a&!b|!c;printf(%dn,d);A.1 B.0 C.非 0的数 D.-1【答案】A【例 4】(2002 年4月)以下程序的输出结果是()。main()char x=040;printf(%on,x1);A.100 B.80 C.64 D.32【答案】A【例 5】(2002 年9月)已知 i,j,k为 int 型变量,若从键盘输入:1,2,3,使 i 的值为 1、j 的值为 2,k的值为 3,以下选项中正确的输入语句是()。
22、A.scanf(%2d%2d%2d,&I,&j,&k);B.scanf(%d%d%d,&I,&j,&k);C.scanf(%d,%d,%d,&I,&j,&k);D.scanf(i=%d,j=%d,k=%d,&I,&j,&k);【答案】C【例 6】(2002 年9月)若有以下程序main()int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%dn”,m,i);执行后的结果是()。A.8,6 B.8,3 C.6,4 D.7,4【答案】C【考点解析】根据C语言中 printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,复合运算表达式是右结合性,先从右边开始计算i*
23、=k 得i=i*k=2*2=4,k+=i 得k=k+i=2+4=6,所以 m的值为 6。输出结果为 m=6,i=4。【例 7】(2003 年4月)若有以下程序段(n 所赋的是八进制数)-8-int m=32767,n=032767;printf(“%d,%on”,m,n);执行后输出结果是()。A.32767,32767 B.32767,032767 C.32767,77777 D.32767,77777【答案】A【例 8】(2003 年4月)有以下程序段int m=0,n=0,char c=a;scanf(%d%c%d,&m,&c,&n);prinft(%d,%c,%dn,m,c,n);若从
24、键盘上输入:10A10,则输出结果是()。A.10,A,10 B.10,a,10 C.10,a,0 D.10,A,0【答案】A【例 9】(2003 年4月)有以下程序main()int i=10,j=1;printf(%d,%dn,i-,+j);执行输出的结果是()。A.9,2 B.10,2 C.9,1 D.10,1【答案】B【例 10】(2003 年9月)有以下程序main()int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);printf(%d%d%3.1f%3.1fn,a,c,f,x);程序运行后的输出结果是()。A.1 65 1
25、 6.5 B.1 65 1.5 6.5 C.1 65 1.0 6.5 D.2 65 1.5 6.5【答案】B【例 11】(2003 年9月)有以下程序main()int a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=ab);printf(%d,%dn,k,m);-9-程序运行后的输出结果是()。A.0,0 B.0,1 C.1,0 D.1,1【答案】C【例 12】(2003 年9月)有定义语句:int x,y;若要通过 scanf(%d,%d,&x,&y);语句使变量 x得到数值 11,变量 y得到数值 12,下面四组输入形式中,错误的是 A.11 12 B.11,12 C.11,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题
限制150内