复习解析加练习.docx

上传人:b****4 文档编号:12001397 上传时间:2023-04-16 格式:DOCX 页数:76 大小:45.17KB
下载 相关 举报
复习解析加练习.docx_第1页
第1页 / 共76页
复习解析加练习.docx_第2页
第2页 / 共76页
复习解析加练习.docx_第3页
第3页 / 共76页
复习解析加练习.docx_第4页
第4页 / 共76页
复习解析加练习.docx_第5页
第5页 / 共76页
点击查看更多>>
下载资源
资源描述

复习解析加练习.docx

《复习解析加练习.docx》由会员分享,可在线阅读,更多相关《复习解析加练习.docx(76页珍藏版)》请在冰豆网上搜索。

复习解析加练习.docx

复习解析加练习

第一章复习p6

1.以下叙述正确的是_____________。

A)C语言比其他语言高级

B)C语言可以不用编译就能被计算机识别执行

C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D)C语言出现得最晚,具有其他语言的一切优点

答案:

C

解析:

本题考查了C语言的发展和特点。

首先,C语言是中级语言,说它比其他语言都要高级是不正确的,所以A选项错误。

其次,__个C源程序需要经过编译,连接后才可以执行,所以B选项错误。

而C语言之后又出现了Java等更新更高级的语言,所以D选项明显也是错误的。

所以答案选C。

2.在一个C语言程序中____________________________________。

A)main函数必须出现在所有函数之前

B)main函数可以在任何地方出现

C)main函数必须出现在所有函数之后

D)main函数必须出现在固定位置

答案:

B

解析:

本题i要考查了voidmain()函数在程序中的位置.voidmain()函数在程序中的位置是任意的,所以答案选B。

3.以下叙述中正确的是_________________________.

A)C程序中注释部分可以出现在程序中任意合适的地方

B)花括号"{"和"}"只能作为函数体的定界符

C)构成C程序的基本单位是函数,所有函数名都可以由用户命名

D)分号是C语句之间的分隔符,不是语句的一部分

答案:

A

解析:

本题考查了C程序的构成,A选项显然是正确的,因为只要用"/*"和"*/"括起来的部分,C程序就认为是注释,编译时会直接跳过,不会影响源程序。

花括号"{"和"}"不仅能作为函数体的界定符,它还能作为复合语句的界定符,所以B选项错误。

用户虽然可以对函数命名,但是C程序中的库函数的名称是固定的,用户不能对这些函数进行命名,所以C选项错误.一个语句如果没有分号,它就不能构成一个语句,分号是语句的一部分,所以D选项错误。

所以答案选A.

4.以下叙述中正确的是________________________.

A)C语言的源程序不必通过编译就可以直接运行

B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C)C源程序经编译形成的二进制代码可以直接运行

D)C语言中的函数不可以单独进行编译

答案:

B

解析:

C程序从编写到运行需要经过编译和连接后才能生成可执行的文件,所以A选项中说C语言不经过编译便能运行的说法是明显错误的。

而编译出的二进制编码不经过连接程序与库函数连接起来,是不可能生成可执行文件的,所以C选项错误。

而C语言中函数是可以单独进行编译的,所以D选项错误。

所以答案选B.

5.以下不能定义为用户标识符的是__________________________.

A)MainB)_0C)_intD)sizeof

答案:

D

解析:

本题i要考查标识符的定义规则,标识符应满足:

①所有标识符必须由一个字母(a~z,A~Z)或下划线(_)开头;

②标识符的其他部分可以用字母,下划线或数字(0~9)组成:

③大小写字母表示不同意义,即代表不同的标识符;

④标识符只有前32个字符有效:

⑤标识符不能使用C语言的关键词.

A,B,C都满足要求,而D选项的sizeof是一个关键字,用来计算表达式和类型的字节数,它不能用作标识符。

所以答案选D.

第一章练习题

一.选择题

1.能将高级语言编写的源程序转换为目标程序的是________________________________________________。

A)链接程序B)解释程序C)编译程序D)编辑程序

C

2.以下叙述中正确的是_____________。

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)voidmain()函数必须放在其他函数之前

D)所有被调用的函数一定要在调用之前进行定义

A

3.一个C程序的执行是从_____________。

A)本程序的main函数开始,到main函数结束

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C)本程序的main函数开始,到本程序文件的最后一个函数结束

D)本程序文件的第一个函数开始,到本程序main函数结束

A

4.一个C语言程序是由_____________。

A)一个主程序和若干子程序组成B)函数组成

C)若干过程组成D)若干子程序组成

B

5.以下叙述正确的是_____________。

A)在C程序中,main函数必须位于程序的最前面

B)C程序的每行中只能写一条语句

C)C语言本身没有输入输出语句

D)在对一个C程序进行编译的过程中,可以发现注释中的拼写错误

C

二,填空题

1.在一个C源程序中,注释部分两侧的分界符分别为_____________和_____________。

/**/

2.一个C源程序中至少应包括一个_____________。

主程序

3.在C语言中,格式输入操作是由库函数_____________完成的,格式输出操作是由库函数_____________完成的。

scanf(),printf()

4.C源程序的基本单位是_____________。

函数

/////////////////////////////26

第二章复习

1.下列叙述中正确的是_________________________.

A)C语言中既有逻辑类型也有集合类型

B)C语言中没有逻辑类型但有集合类型

C)C语言中有逻辑类型但没有集合类型

D)C语言中既没有逻辑类型也没有集合类型

答案:

D

解析:

本题考查C语言中的数据类型,C语言中有字符型,整型,实型,构造类型,指针类型和空类型等。

C语言中没有逻辑类型和集合类型,所以选D选项。

2.以下符合C语言语法的实型常量是______________.

A)1.2E0.5B)3.14.159EC).5E-3D)E15

答案:

C

解析:

本题考查C语言常量中的实型常量的指数形式。

字母E或e之前之后必须有数宇,且E或e后面指数必须为整数.

A选项中e后面的数字是小数,所以错误.

B选项e后面没确数字,所以也是错误的.

D选项e前面没有数字,是错误的.

C选项符合规则,所以答案选C.

3.若有以下程序:

voidmain()

{

chara;

a='H'-'A'+'0';

printf("%c\n",a);

}

执行后输出结果是_________________________。

答案:

7

4.有以下程序:

voidmain()

{

intm=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d\n",n++,++m);

}

程序运行后的输出结果是________________________________________________。

A)12353514B)12353513C)12343514D)12343513

答案:

A

解析:

本题考查的是自增自减运算的用法。

注意以下规则:

++i,i自增1后再参与其他运算。

--i,i自减1后再参与其他运算.

i++,i参与运算后,i的值再自增1;i--,i参与运算后,i的值再自减1.

分析此题,m++,先显示m,为12:

再自增,m变成13;

++n,先自增,n变为35,再显示,为35。

然后n++,n先显示,为35:

再自增,n变成36。

++m,m先自增,变成14,再显示,为14.

所以最后显示为12353514,所以答案选A.

5.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是____________________________________.

A)abs(x-y)<10B)x-y>-10&&x-y<10

C)(x-y)<-10||!

(y-x)>10D)(x-y)*(x-y)<100

答案:

C

本题考查了关系表达式与逻辑表达式的用法。

选项A中"abs"是求整数绝对值的库函数,显然这种表示是直接按照题意来的,所以A选项正确.

|x-y|<10相当于-10

而利用基本的数学知识我们也可以很容易知道D选项是正确的。

而在C选项中,要满足题意的话,x-y<-10时,整个逻辑表达式结果应为"假",即为0,因为x-y<-10成立时,绝对值已经大于10了.而C项中,假如x-y<-10,表达式中第一部分就为"真",值为1,经过或运算,显然表达式结果为1,与题意相违背,所以C选项是不能表达题中关系的,所以选C.

6.以下程序运行后的输出结果是_________________________.

voidmain()

{

inta,b,c;

a=1O;

b=20;

c=(a%b<1)||(a/b>1);

printf("%d%d%d\n",a,b,c);

}

答案:

10200

解析:

本题考查的是算数表达式和逻辑表达式的用法,同时考察了基本的优先级关系。

这道题c=(a%b<1)||(a/b>1)中,首先应算出括号中表达式的值.a%d=10%20,值为10,10>1,所以a%b

再看a/b,a/b=10/20,由于是整型,则a/b=0,所以a/b>1值为0.根据逻辑或的用法,可得(a%b<1)||(a/b>1)=0,则c=0.所以答案就为10200。

7.已有定义:

intx=3,y=4,z=5;则表达式!

(x+y)+z-1&&y+z/2的值是_________________________.

A)6B)0C)2D)1

答案:

D

解析:

本题考查C语言中的优先级问题。

本题表达式!

(x+y)+z-1&&y+z/2中运算符的优先级由高到低为(),!

/,+,-,&&,因此计算时,先计算x+y=7,然后计算!

7,为0,0+z-1=4,y+z/2=4+2=6:

最后4&&6=1,所以答案选D。

1.若有条件表达式(exp)?

a++:

b--,则以下表达式中能完全等价于表达式(exp)的是____________________________________。

A)(exp==0)B)(exp!

=0)

C)(exp==1)D)(exp!

=1)

B

2.设以下变量均为int类型,则值不等于7的表达式是______________.

A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)

C)(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)

C

3.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为____________________________________.

A)O~255B)0~32767C)0~65535D)0~2147483647

C

4.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是__________________________.

A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0

C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0

B

5.sizeof(float)是_____________。

A)一个双精度型表达式B)一个整型表达式

C)一种函数调用D)一个不合法的表达式

B

6.设有说明:

charw;intx;floaty;doublez;

则表达式w*x+z-y值的数据类型为_________________________;

A)floatB)charC)intD)double

D

7.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是__________________________________________________。

(说明:

'\b'是退格符)

A)a\bre\'hi\'y\\\bouB)a\bre\'hi\'y\bou

C)re'hi'youD)abre'hi'y\bou

C

8.下列程序的输出结果是__________________________。

voidmain()

{

doubled=3.2;

intx,y;

x=1.2;

y=(x+3.8)/5.0;

printf("%d\n",d*y);

}

A)3B)3.2C)0D)3.07

C

9.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2的值为__________________________________________________。

A)DB)68C)不确定的值D)C

A

10.以下不正确的叙述是____________________________________。

A)在C程序中,逗号运算符的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

D

11.有以下程序:

voidmain()

{

inta=1,b=2,m=0,n=0,k;

k=(n=b>a)||(m=a+b);

printf("%d,%d\n",k,m);

}

程序运行后的输出结果是______________。

A)0,0B)0,1C)1,0D)1,1

12.假定w,x,y,z,m均为int型变量,有如下程序段:

w=1;x=2;y=3;z=4;

m=(w

w:

x;

m=(m

m:

y;

m=(m

m:

z;

则该程序运行后,m的值是_________________________________________________。

A)4B)3C)2D)1

D

二,填空题

1.若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为____________________________________。

-60

相当于a=6-6*6=-30,a=-30+(-30)最后结果为-60

分析时以中间的a为分析开始点,它的左右的操作符同等优先级,按"从右到左结合",现完成右边的操作,在进行左边的操作.

又如,a的初值为4,则计算表达式a+=a-=a*a后a的值为-24

2.在C语言中的实型变量分为两种类型,它们是_____________和______________________________________.

3.在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为____________________________________;

一个int型数据在内存中所占的字节数为_____________.1,2?

?

?

?

?

?

?

?

4.若有语句:

inti=-1,j=i%4;

printf("%d\n",j);

则输出结果是________________________________________________。

-3

5.若有定义:

intb=7;floata=2.5,c=4.7;则下面表达式的值为_____________.5.500000

a+(int)(b/3*(int)(a+c)/2)%4

6.若a为整型变量,则表达式(a=4*5,a*2),a+6的值为______________.26

7.以下程序输出的结果是__________________________。

0?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

voidmain()

{

inta=5,b=4,c=3,d;

d=(a>b>C);

printf("%d\n",d);

}

8.intx=3,y=2;floata=2.5,b=3.5:

则表达式(x+y)%2+(int)a/(int)b的值为_____________________________________.1

9.以下程序的输出结果是____________________________________________________________。

2,1

voidmain()

{

inta=1,b=2;

a=a+b;b=a-b;a=a-b;

printf("%d,%d\n",a,b);

}

/////////////////////////////41

第三章复习

1.有以下语句段:

intn1=10,n2=20;

printf("_____________",n1,n2);

要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空.

n1=10

n2=20

答案:

n1=%d\nn2=%d

解析:

考察printf()函数的使用以及转义字符的用法。

2.若有以下下程序段:

intm=0xabc,n=0xabc;

m-=n;

printf("%x\n",m);

执行后输出结果是______________。

A)0X0B)0x0C)0D)0XABC

答案:

C

解析:

以0x开头表示十六进制的整型常量,在使用函数printf()输出十六进制常量时不会输出0x前缀。

所以C选项正确。

3.有以下程序段:

intm=0,n=0;

charc='a';

scanf("%d%c%d",&m,&c,&n);

printf("%d,%C,%d\n",m,c,n);

若从键盘上输入:

10A1O<回车>,则输出结果是__________________________.

A)10,A,10B)10,a,10C)10,a,0D)10,A,0

答案:

A

解析:

在有多个输入项时,且格式控制字符全是同数据类型的格式说明符时,只能用空格,跳格键或回车作为分隔符。

但假如数据类型不同,则不需要以这些分隔符作区分。

从键盘上输入的第一个数据10存入整型变量m,字符A存入字符变量c,第二个10存入整型变量n,所以选项A正确。

4.有以下程序:

voidmain()

{

intm,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

printf("%d%d%d\n",m,n,p);

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是_____________。

A)m=123n=456p=789B)m=123n=456p=789

C)m=123,n=456,p=789D)123456789

答案:

A

解析:

本题i要考查了scanf和printf的用法。

在输入数据时,双引号中的部分其类型与个数必须与控制字符串中格式字符的类型,个数一致。

同时注意这里的"m=","n=","p="是非格式控制字符,在输入数据时应输入与这些字符相同的字符。

所以答案选A.

5.以下程序运行时若从键盘输入:

102030<回车>,输出结果是_____________.

#include

voidmain()

{

inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

printf("%d%d%d\n",i,i,k);

}

答案:

10300

解析:

本题考查的是输入函数中格式说明符的用法。

本题最重要的是弄清楚'*'的作用。

'*'表示按规定格式输入但不赋予相应变量,作用是跳过相应的数据。

这样很明显,当输入到20时,由于'*'的作用,20被跳过。

于是30赋给j,而k的值不变。

所以答案为10300。

6.有以下程序:

voidmain()

{

intx=102,y=012;

printf("%2d,%2d\n",x,y);

}

执行后输出结果是,,。

A)10,01B)002,12C)102,10D)02,10

答案:

C

解析:

本题i要考查输出函数格式说明符的用法。

在输出说明符中,可以用十进制整数来表示输出的最少位数。

若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则左端补以空格或0.本题首先要把012化为十进制数,即为10,然后根据上述规则,102多于定义的宽度,按实际位数输出,为102;而10刚好是2位,所以也可以显示。

所以最后结果显示102,100所以答案选C.

////////////////////////////////p43

一,选择题

1.下列程序执行后的输出结果是________________________________________________.

voidmain()

{

charx=0xFFFF;

printf("%d\n",x--);

}

A)-32767B)FFFEC)-1D)-32768

C

2.若有以下程序段(n所赋的是八进制数):

intm=32767,n=032767;

printf("%d,%o/n",m,n);

执行后输出结果是_____________。

A)32767,32767B)32767,032767

C)32767,77777D)32767,077777

A

3.有以下程序:

#include

voidmain()

{printf("%d\n",NULL);}

程序运行后的输出结果是____________________________________.

A)0B)1

C)-1D)NULL没定义,出错

A

4.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________.

A)10<回车>

22<回车>

33<回车>

B)10.0,22.0,33.0<回车>

C)10.0<回车>

22.033.0<回车>

D)1022<回车>

33<回车>

B

5.以下程序段的输出结果是_____________.

inta=1234;

printf("%2d\n",a);

A)12B)34C)1234D)提示出错

C

6.设有如下程序段:

intx=2002,y=2003;

printf("%d\n",(x,y

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1