公务员计算机类 C语言习题.docx

上传人:b****4 文档编号:4279859 上传时间:2023-05-06 格式:DOCX 页数:58 大小:40.35KB
下载 相关 举报
公务员计算机类 C语言习题.docx_第1页
第1页 / 共58页
公务员计算机类 C语言习题.docx_第2页
第2页 / 共58页
公务员计算机类 C语言习题.docx_第3页
第3页 / 共58页
公务员计算机类 C语言习题.docx_第4页
第4页 / 共58页
公务员计算机类 C语言习题.docx_第5页
第5页 / 共58页
公务员计算机类 C语言习题.docx_第6页
第6页 / 共58页
公务员计算机类 C语言习题.docx_第7页
第7页 / 共58页
公务员计算机类 C语言习题.docx_第8页
第8页 / 共58页
公务员计算机类 C语言习题.docx_第9页
第9页 / 共58页
公务员计算机类 C语言习题.docx_第10页
第10页 / 共58页
公务员计算机类 C语言习题.docx_第11页
第11页 / 共58页
公务员计算机类 C语言习题.docx_第12页
第12页 / 共58页
公务员计算机类 C语言习题.docx_第13页
第13页 / 共58页
公务员计算机类 C语言习题.docx_第14页
第14页 / 共58页
公务员计算机类 C语言习题.docx_第15页
第15页 / 共58页
公务员计算机类 C语言习题.docx_第16页
第16页 / 共58页
公务员计算机类 C语言习题.docx_第17页
第17页 / 共58页
公务员计算机类 C语言习题.docx_第18页
第18页 / 共58页
公务员计算机类 C语言习题.docx_第19页
第19页 / 共58页
公务员计算机类 C语言习题.docx_第20页
第20页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

公务员计算机类 C语言习题.docx

《公务员计算机类 C语言习题.docx》由会员分享,可在线阅读,更多相关《公务员计算机类 C语言习题.docx(58页珍藏版)》请在冰点文库上搜索。

公务员计算机类 C语言习题.docx

公务员计算机类C语言习题

C语言

第1章C语言的历史、特点

1.1978年美电话电报公司(AT&T)的贝尔实验室正式发表了C语言。

2.C语言把括号、赋值、强制类型转换等作为运算符处理。

3.C语言的数据类型有整型、实型、字符型、数组型、指针型、结构体类型、共用体

类型等。

(树、栈、链表等为数据构)

4.C语言允许直接访问物理地址,能进行位(bit)操作。

第2章C语言程序的基本结构

【例1】(2002年4月)编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑()。

A.仅为整个程序作注释

B.仅为每个模块作注释

C.为程序段作注释

D.为每个语句作注释

【答案】C

【例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.检查输入数据的有效性

D.设计良好的输出报表

【答案】A(源程序文档中主要包括标识符命名,注释和视觉组织。

【例4】(2002年9月)以下叙述中正确的是()。

A.构成C语言程序的基本单位是函数。

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

C.main()函数必须放在其他函数之前。

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

【答案】A(C语言是由函数构成的,所以C语言的基本单位是函数,在C语言中不能嵌套定义,就是说不能在函数中定义函数,main()函数可以放在程序的任意位置,但是程序的执行都是从main()函数开始的,所有被调用的函数一定要在调用之前进行声明。

【例5】(2002年9月)以下选项中合法的用户标识符是()。

A.longB._2TestC.3DmaxD.A.dat

【答案】B

【例6】(2003年9月)以下叙述中正确的是()。

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

B.花括号“{”和“}”只能作为函数体的定界符。

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

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

【答案】A

【例7】(2003年9月)若已定义的函数有返回值,则以下关于该函数调用叙述错误的是()。

A.函数调用可以作为独立的语句存在。

B.函数调用可以作为一个函数的实参。

C.函数调用可以出现在表达中。

D.函数调用可以作为一个函数的形参。

【答案】D

在C语言中,当函数有返回值时可以作为表达式或表达式的一部分,而函数调用只能作为实参,不能作为形参。

第3章数据类型、运算符、表达式与基本语句

3.1数据类型

【例1】(2000年4月)下列变量定义中合法的是()。

A.short_a=1-.le-1B.doubleb=1+5e2.5

C.longdo=0xfdaLD.float2_and=1-e-3

【答案】A

【例2】(2001年4月)以下只有在使用时才为该类型变量分配内存的存储类说明是()。

A.auto和staticB.auto和register

C.register和staticD.extern和register

【答案】B

根据C语言的规定,auto和register在C语言程序中当它们被用到时才会分配内存,在它们声明时并不占用内存空间的。

【例3】(2002年4月)以下选项中不属于C语言类型的是()。

A.signedshortintB.unsignedlongint

C.unsignedintD.longshort

【答案】D

【例4】(2002年9月)以下选项中合法的实型常数是()。

A.5E2.0B.E-3C.2E0D.1.3E

【答案】C

【例5】(2002年9月)已知大写字母A的ASCII码的值是65,小写字母a的ASCII码是97,则用八进制表示字符常量‘\101’是()。

A.字符AB.字符aC.字符eD.非法的常量

【答案】A

本题中101的八进制在十进制表示则是65,也就是A的ASCII码值。

【例6】(2002年9月)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。

A.voidB.intC.floatD.double

【答案】B

【例7】(2003年9月)以下选项中可作为C语言合法整数的是()。

A.10110BB.0386C.0XffaD.x2a2

【答案】C

【例8】(2003年9月)已定义c为字符变量,则下列语句中正确的是()。

A.c=‘97’B.c=“97”C.c=97D.c=“a”

【答案】C

【例9】(2004年4月)以下符合C语言语法的实型常量是()。

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

【答案】C

【例10】(2002年4月)设有以下变量定义,并已赋确定的值

charw;intx;floaty;doublez;

则表达式:

w*x+z-y所求得的数据类型为。

【答案】double

【考点解析】当不同数据类型一起运算时,如果有精度大的数据类型参加时,结果会上最后会以精度大的,这样能保持数据的精度。

 

3.2运算符

【例1】(2000年4月)设有intx=11;则表达式(x++*1/3)的值是()。

A.3B.4C.11D.12

【答案】A

【考点解析】在题目中,有三个运算符,其中“/”可以把1/3看成一个整体,也就是一个数,那么根据运算符优先级知道,++的优先级比*高,那么先运行++,再运行*,最后结果是3。

【例2】(2000年4月)设intx=1,y=1;表达式(!

x||y--)的值是()。

A.0B.1C.2D.-1

【答案】B

【考点解析】在这一题中,我们要注意的是--或++的位置,在这里y--是指先把y与!

x进行或运算,后y再减1,那么这个表达式的值是1。

如果--y是指y减1后再与!

x进行或运算。

【例3】(2000年4月)设intb=2;表达式(b>>2)/(b>>1)的值是()。

A.0B.2C.4D.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.1B.2C.2.0D.2.5

【答案】B

【考点解析】在这一题中,我们清楚C语言中的自动数据类型的转换,在这里3/2是整形除以整形,所以结果自动转换成整形,再加上1,所以最后结果是2。

【例6】(2001年9月)整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是()。

A.x||yB.x|yC.x&yD.x^y

【答案】D

【考点解析】||是C语言的逻辑或运算符,表示只要有一个表达式为真,则整个表达式都为真;|是按位或运算符,先是把操作数转化成二进制,再按位进行或运算;&是按位与运算符,先是把操作数转化成二进制,再按位进行与运算;^是按位异或运算符,先是把操作数转化成二进制,再按位异或运算,就是相同的为0,不同的为1。

【例7】(2002年9月)已有定义:

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

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

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

【答案】D

【考点解析】在本题中,优先级最高的是括号,因此先计算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.500000B.6C.5.500000D.6.000000

【答案】D

【考点解析】在本题表达式中,优先级最高的是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型变量和float型变量。

【答案】D

【考点解析】在C语言中,++、--是单目运算符,分别表示进行加1、减1运算,一般是在char、int、float数据类型中运算。

【例10】(2004年9月)有以下定义语句

doublea,b;intw;longc;

若各变量已正确赋值,则下列选项中正确的表达式是()。

A.a=a+b=b++B.w%((int)a+b)

C.(c+w)%(int)aD.w=a==b

【答案】C

【考点解析】在C语言程序设计中,表达式不允许作为值来直接赋值给表达式;在表达式中运用“%”时应该注意,运算符“%”的使用对象必须是整型;“==”是关系运算符,在这里并不正确,赋值符应该是“=”。

 

【例11】(2004年9月)若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

【例12】(2004年9月)设有定义语句:

charc1=92,c2=92;则以下表达式中值为零的是()。

A.c1^c2B.c1&c2C.c1~c2D.c1|c2

【答案】A

3.3表达式

【例1】(2000年9月)若变量已正确定义并赋值,下面符合C语言语法的表达式是()。

A.a:

=b+1B.a=b=c+2

C.int18.5%3D.a=a+7=c+b

【答案】B

【考点解析】表达式是由运算符把字符连接起来所构成的。

在上面选项中,A中的字符变量定义错误,C选项不是表达式,D选项中等号左边必须是一个可以确定的值。

【例2】(2001年4月)若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。

A.-3B.9

C.-12D.6

【答案】C

【考点解析】这题中,有多个赋值关系。

从右到左计算,可以这样理解:

首先a*a等于9,再计算a=a-9,得到a=-6,再计算a=a+(-6),所以最后答案是-12。

【例3】(2002年4月)变量a已被定义为整型,下列表达式不正确的是()。

A.a='A'+20B.a-='a'

C.a=c+dD.a='c'+'d'

【答案】C

【考点解析】在C语言中我们得知字符变量可以参与任何整数的运算,在C项中,c和d如果是字符变量应刻有单引号括住,如果是其它变量应提前定义,以避免编绎出错。

【例4】(2002年4月)若有定义:

inta=8,b=5,c;执行语句c=a/b+0.4后,c的值为()。

A.1.4B.1C.2.0D.2

【答案】B

【考点解析】在本题中,首先计算的是优先级高的/,a/b(8/5=1),再将1+0.4的值赋给c,由于c为整型变量所以要将1.4转换为整型,即是舍弃小数位0.4(c的值变为1)。

【例5】(2002年9月)与数学式子对应的C语言表达式是()。

A.3*x^n(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】(2002年9月)以下选项中,与k=n++完全等价的表达式是()。

A.k=n,n=n+1B.n=n+1,k=n

C.k=++nD.k+=n+1

【答案】A

【考点解析】在本题中,k=n++为后辍运算,根据其运算规则,应先把n的值赋给k,然后n的值再加上1,选项A的表达式与本题中的表达式等价。

【例7】(2003年9月)以下选项中非法的表达式是()。

A.0<=x<100B.i=j==0

C.(char)(65+3)D.x+1=x+1

【答案】D

【考点解析】在C语言程序设计中,表达式不允许作为值来直接赋值给表达式。

【例8】(2004年4月)设有定义:

floata=2,b=4,h=3;以下C语言表达式中与代数式1/2*(a+b)h计算结果不相符的是()。

A.(a+b)*h/2B.(1/2)*(a+b)*h

C.(a+b)*h*1/2D.h/2*(a+b)

【答案】B

【考点解析】本题实质上是要把数学表达式在C语言程序设计中表达出来,在C语言中优先级最高是括号,那么先计算所有的括号,可以看到选项B中的(1/2)结果是0,那么整个表达式的结果就是0,而其它三项的结果并不是0。

 

第4章程序设计三种基本结构

一、选择题:

【例1】(2002年4月)下面的程序的输出结果是()。

#include

main()

{

inti=010,j=10;

printf("%d,%d",++i,j--);

}

A.11,10B.9,10

C.010,9D.10,9

【答案】B(i的值是以八进制定义的)

【例2】(2002年4月)以下的程序的输出结果是()。

main()

{

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

printf(("d\n",d=a>b?

)(a>c?

a:

c):

(b));

}

A.5B.4

C.6D.不确定

【答案】C

【例3】(2002年4月)以下程序的输出结果是()。

main()

{

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

d=!

a&&!

b||!

c;

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

}

A.1B.0

C.非0的数D.-1

【答案】A

【例4】(2002年4月)以下程序的输出结果是()。

main()

{

charx=040;

printf("%o\n",x<<1);

}

A.100B.80

C.64D.32

【答案】A

【例5】(2002年9月)已知i,j,k为int型变量,若从键盘输入:

1,2,3<回车>,使i的值为1、j的值为2,k的值为3,以下选项中正确的输入语句是()。

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()

{

intk=2,i=2,m;

m=(k+=i*=k);

printf(“%d,%d\n”,m,i);

}

执行后的结果是()。

A.8,6B.8,3

C.6,4D.7,4

【答案】C

【考点解析】根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,复合运算表达式是右结合性,先从右边开始计算i*=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所赋的是八进制数)

intm=32767,n=032767;

printf(“%d,%o\n”,m,n);

执行后输出结果是()。

A.32767,32767B.32767,032767

C.32767,77777D.32767,77777

【答案】A

【例8】(2003年4月)有以下程序段

intm=0,n=0,charc='a';

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

prinft("%d,%c,%d\n",m,c,n);

若从键盘上输入:

10A10<回车>,则输出结果是()。

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

【答案】A

【例9】(2003年4月)有以下程序

main()

{

inti=10,j=1;

printf("%d,%d\n",i--,++j);

}

执行输出的结果是()。

A.9,2B.10,2

C.9,1D.10,1

【答案】B

【例10】(2003年9月)有以下程序

main()

{

inta;charc=10;

floatf=100.0;doublex;

a=f/=c*=(x=6.5);

printf("%d%d%3.1f%3.1f\n",a,c,f,x);

}

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

A.16516.5B.1651.56.5

C.1651.06.5D.2651.56.5

【答案】B

【例11】(2003年9月)有以下程序

main()

{

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

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

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

}

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

A.0,0B.0,1

C.1,0D.1,1

【答案】C

【例12】(2003年9月)有定义语句:

intx,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是"

A.1112<回车>B.11,12<回车>

C.11,12<回车>D.11,<回车>12<回车>

【答案】A

【例13】(2003年9月)设有以下程序段:

intx=2002,y=2003;

printf(“%d\n”,(x,y));

则以下叙述中正确的是"

A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出。

B.运行时产生出错信息。

C.输出值为2002。

D.输出值为2003。

【答案】D

【例14】(2003年9月)有以下程序

main()

{

intx=3,y=2,z=1;

printf("%d\n",x/y&~z);

}

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

A.3B.2C.1D.0

【答案】D

【例15】(2004年4月)有以下程序

main()

{

intx=102,y=012;

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

}

执行后输出结果是()。

A.10,01B.02,12

C.102,10D.02,10

【答案】C

【例16】(2004年4月)有以下程序

main()

{

unsignedchara,b;

a=4|3;

b=4&3;

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

}

执行后输出结果是()。

A.70B.07

C.11D.430

【答案】A

【例17】(2004年9月)有以下程序

main()

{

chara,b,c,d;

scanf("%c,%c,%d,%d",&a,&b,&c,&d);

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

}

若运行时从键盘上输入:

6,5,65,66<回车>。

则输出结果是()。

A.6,5,A,BB.6,5,65,66

C.6,5,6,5D.6,5,6,6

【答案】A

【考点解析】在C语言程序设计中,scanf函数的格式控制参数中“%d”表示输入整数,“%c”表示输入字符,也就是说,前两个输入的数是以字符形式输入的,后两个输入的数是以整数形式输入的,输出时,全部都以字符形式输出,而刚才的后两个整数应该用ASCII码转化为字符。

则输出的是6,5,A,B。

【例18】(2004年9月)有以下程序

main()

{

intm=3,n=4,x;

x=-m++;

x=x+8/++n;

printf(“%d\n”,x);

}

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

A.3B.5

C.-1D.-2

【答案】D

【考点解析】在本题中,根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,表达式x=-m++可以转换成x=-(m++),可得x的值为-3,而表达式x=x+8/++n可以转换成x=x+8/(++n),代入x的值得x=-3+8/5=-2,所以最后的输出结果是-2。

【例19】(2004年9月)有以下程序

main()

{

chara=’a’,b;

printf(“%c”,++a);

printf(“%c\n”,b=a++);

}

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

A.b,bB.b,c

C.a,bD.a,c

【答案】A

【例20】(2004年9月)有以下程序

main()

{

intm=0256,n=256;

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

}

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

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2