《C语言程序设计实例教程》课后习题 练习1_第1页
《C语言程序设计实例教程》课后习题 练习1_第2页
《C语言程序设计实例教程》课后习题 练习1_第3页
《C语言程序设计实例教程》课后习题 练习1_第4页
《C语言程序设计实例教程》课后习题 练习1_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

。练习1

一、选择题

I、一个C程序是由(B)。

A.一个主程序和若干子程序组成B.一个或多个函数组成

C.若干过程组成D,若干子程序组成

2、一个C程序的执行是从(A)。

A.main函数开始,直到main函数结束B.第一个函数开始,直到最后一个函数结束

C.第一个语句开始,直到最后一个语句结束D.main函数开始,直到最后一个函数结束

3、C语言语句的结束符是(B)。

A.回车符B.分号C.句号D.逗号

4、下面标识符中(D)不是C语言的关键字。

A.charB.gotoC.caseD.include

5、以下说法正确的是(A)

A.C程序的注释可以出现在程序的任何位置,它对程序的编译和运行小起任何作用。

B.C程序的注释只能是一行。

C.C程序的注释不能是中文文字信息。

D.C程序的注释中存在的错误会被编译器检查出来。

6、以下说法正确的是(D)

A.C程序中的所有标识符都必须小写B.C程序中关键字必须小写,其他标识符不区分大小写

C.C程序中所有标识符都不区分大小写D.C程序中关链字必须小写,其他标识符区分大小写。

7、饺x、y均为float型变量,则以卜小合法的赋值语句是(B)

A.++x;B.y=(x%2)/!0;C.x*=y+8;D.x=y=0;

解析:运算符%要求两端的操作数必须为整型,而在答案B中%号两端的操作数为x和2,x为实型,

所以是错误的。

8、下列不正确的转义字符是(C)

A「\\'B.'\"C.'\19'D.'\0'

解析:转义字符是由单引号括起来的带反斜线的字符,这些字符具有特殊的含义,反斜线后可以是数字

来代表某个字符,而这些数字只包括两种:八进制(1-3位)和十六进制(1-2位)。十六进制前面要加

x(或X),这里的C答案反斜线后是数字,但不是x开头,所以应该是八进制数,但是数值里有9,和

八进制数不符,所以是错误的。

9、下列不是C语言常量的是(A)

A.e-2B.074C.D.'\0'

解析:C语言的常量分为整型、实型、字符型和字符串。整型常量的书写形式分为十进制、八进制和十

六进制,十进制是。~9的数值表示;八进制是以0开头,0〜7的数值表示,十六进制是以Ox(或0X)

开头,。〜9与a~f(或A~F)表示。实型常量的书写分为小数形式和指数形式,小数形式指只包含小数

点的形式,如:0.056或300.57:指数形式只指用包含e(或E)的书写形式,要求e(或E)的前面必

须有数值,后面必须是整数的书写规则.字符型常量指单引号引起来的单个字符或转义字符,字符串常

量是指双引号引起的多个字符。这里答案A是实型的指数书写形式,但是这种书写形式要求e前面必须

有数值,后面必须是整数,而这里所以是错误的。

10、设血类型的数据长度为2个字节,则unsignedint类型数据的取值范围是(B)

A.0-255B.0-65535C.-32768〜32767D.-256〜255

II、若定义了inix;则将x强制转化成双精度类型应该写成(A)

A.(double)xB.x(double)C.double(x)D.(x)double

12、在C语言中,要求参加运算的数必须是整数的运算符是(C)。

A./B.*C.%D.=

13、为了计算s=10!(即10的阶乘),则s变量应定义为(D)o

A.intB.unsignedC.longD.以上三种类型均可

解析:在TC下,此题答案是C,在VC6.0下此题答案是D,因为两个编译器对int类型数据的空间分

配的大小不一样,在TC下是2字节,在VC6.0下是4字节,所以取值范围也就不一样。

14、putchar()函数可以向终端输出一个(D)。

A、整型变量表达式值B、实型变量值

C、字符串D、字符或字符型变量值

15、已有如下定义和输入语句,若要求al,a2,cl,c2的值分别为10,20,A和B,当从第一列开始输入数

据时,正确的数据输入方式是(D)(一代表空格,/代表Enter)

intal.a2;charc1x2;

scanf("%d%c%d%c",&al,&cl,&a2,&c2);

A、10-A20B/B、10A20-B/C、10_A20_B/D、10A20BZ

解析:空格是有效字符,所以会被scanf函数正常读取。A答案会将10送给al,空格送给cl,而A字

符不属于a2的读取范围,scanf函数非正常结束,a2与后面的c2都没有正常获取数值;B答案会将1()

送给al,A送给cl,20送给a2,空格送给c2,然后scanf函数读取正常结束,后面的B字符将会留给

下一输入函数读取;C答案与A答案类似;只有D答案止确地将将10送给al,A送给cl,20送给a2,

B送给c2,然后scanf函数读取正常结束。

16、执行下列程序片段时输出结果是(C

intx=13,y=5;

printf("%d",x%=(y/=2));

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

解析:这是一个表达式的运算,x%=()是一个赋值表达式,赋,宜表达式的运算方向是从右向左进行。即

先运算表达式y/=2,其运算结果是y=2,再将表达式转换为x%=2,运算此表达式得到最后结果为1。

17、已有如下定义和输入语句,若要求al,a2,cl,c2的值分别为10,20,A和B,当从第一列开始输入数据时,,

正确的输入方式是(DJ代表空格,/代表Enter)

intaka2;charc1,c2;

scanf("%d%d';&al.&a2);

scanf("%c%c'\&cl,&c2);

A、1020AB/B、10/0/C、10_20A_B/D、IO„2OABZ

AB/

解析:此题与15题类似,这里的同车符也属于有效字符,所以会被scan「函数正常读取。A答案中的

1D20后面是字符A,不属于数值,第一个scanf函数读取时将1020看成一个整体送给al,而后面的A

不属于a2获取类型,这个scan「函数非正常结束,a2没有获取到数值;第二个scan「执行,c】获取到

字符A,c2获取到字符B。B答案中的10后面是空格,所以第一个scanf函数现将10送给al,再将空

格后的20送给a2,第一个scanf函数正常结束,第二个函数是读取字符型,这时的缓冲区中首先是回

车符,当数字型读取时可以忽略此字符,但是字符型读取却不能忽略,所以scanf函数将回车符送给了

cl,将A送给c2,scanf函数正常结束。C答案中10后面是空格,所以第一个scanf函数现将10送给

al,20后面是字符A,所以将20送给a2,第一个scanf函数正常结束;第二个函数是读取字符型,这

时的缓冲区中首先是A,scanf函数将A送给cl,A后面的空格送给c2,第二个scanf函数正常结束。D

答案中10后面是空格,所以第一个scanf函数现将10送给al,20后面是字符A,所以将20送给a2,

第一个scanf函数正常结束;第二个函数是读取字符型,这时的缓冲区中首先是A,scanf函数将A送

给cl,A后面的B送给c2,第二个scanf函数正常结束。所以1)答案是正确的。

18、若运行时输入:12345678/,则下列程序运行结果为(A

#include<stdio.h>

voidmain()

{

inta,b;

scanf("%2d%2d%3d",&a,&b);

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

)

A、46B、579C、5690D、出错

解析:scanf中的2是指读取数值的位数,所以scanf函数读取前两个数字12送给a,接着读取后面两个

数字34送给b,最后读取567三个字符,但是后面没有对应的参数所以不送给任何变量,scanf函数执

行结束,所以a+b=12+34=46,所以输出为46。

19、已知i,j,k为int型变量,若从键盘输入:123/,使i的值为1,j的值为2,k的值为3,以下选项

中正确的输入语句是(C)0J代表空格,/代表Enter)

A、scanf("%2d%2d%2d",&i,&j,&k);B、scanf("%d_%d_%d”,&i,&j,&k);

C、scanf(u%d,%d,%d",&i,&j,&k);D、scanf(,,i=%d,j=%d,k=%d",&i,&j,&k);

解析:根据键盘输入时数据只是用逗号进行分隔的,所以scanf函数中格式符之间的分隔符也必须要用

分号,故答案选C。

20、有输入语句:scanf(',a=%d,b=%d,c=%d,',&a,&b,&c);^®$ga1,b的值为3,c的值为2,

则正确的数据输入方式是(D)。J代表空格,/代表Enter)

A、132/B、1,3,2/C、a=l_b=3_c=2/D、a=l,b=3,c=2Z

解析:scanf函数要求非格式字符必须原样键入,所以根据scanf语句,答案应该是D。

二、填空题

I、C语言源程序文件的后缀是一经过编译后生成目标文件的扩展名是,obi,经过连接后生

成可执行文件的扩展名是.exe.。

2、C程序注释是由1和任所界定的文字信息组成的.

3、源程序的执行要经过一编辑、编译、连接和运行四个步骤。

4、在C语言中(以16位PC机为例),一个char数据在内存中所占字节数为1,其数值范围为

-128〜+127;一个ini数据在内存中所占字节数为,其数值范围为-32768~+32767;一

个long数据在内存中所占字节数为J,其数值范围为-2147483648~+2147483647:一个float

数据在内存中所占字节数为_,其数值范围为。〜4294967295。

5、C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为&小写字

voidmain()

inty=3,x=3,z=l;

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

)

运行结果:

33

4,#include<stdio.h>

voidmain()

{

inta=12345;

floatb=-198.345,c=6.5;

printf("a=%4d,b=%-10.2c,c=%6.2An",a,b,c);

)

运行结果:

a=12345,b=-1.98c+002,c=6.50

5、#include<stdio.h>

voidmain()

{

intx=-2345;

floaty=-12.3;

prinlf("%6d,%6.2f;x,y);

}

运行结果:

-2345,-12.30

6、#include<stdio.h>

voidmain()

(

inta=12;

doubleb=3.1415926;

printf("%6d##,%-6d##\n",a,a);

printf("a=%oa=%x\n",a,a);

printf(n%14.101f\n".b);

I

运行结果:

12##,12##

a=14a=c

3.1415926000

四、编程题

1、已知intx=10,y=⑵写出将x和y的值互相交换的表达式。

表达式:x=x+y,y=x-y,x=x-y

,,

2、若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=a;c2=b\想得到以下的输出格式和结果,

请写出程序(包括定义变量类型和设计输出)。

a=3b=4c=5

x=1.200000.y=2.400000,z=-3.600000

x+y=3.60y+z=-1.20z+x=-2.40

u=51274n=128765

cl='a'or97(ASCII)

c2='b'or98(ASCII)

编程:

^include<st(lio.h>

voidmain()

(

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

doublex=1.2,y=2.4,z=-3.6;

unsignedintu=51274,n=128765;

charcl=*a,,c2='b';

printf(",a=%db=%dc=%d\n',,a,b,c);

printf(nx=%lf,y=%lf,z=%lf\n'\x,y,z);

printf(,,x+y=%.21fy+z=%.21fz+x=%.21An1*,x+y,y+z,z+x);

pnntf(Hu=%un=%u\n'\u,n);

printf(,,cl=,%c,or%d(ASCII)\nn,cl,cl);

printf(,,c2=,%c,or%d(ASCII)\nH,c2,c2);

3、设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。用scanf输

入数据,输出计算结果;输M时要求有文字说明,取小数点后2位数字,请编写程序。

分析:

圆周长公式:2门圆面积公式:nr1圆球表面积公式:4仃2

圆球体积公式:,仃3圆柱体积公式:仃?h

编程:

^inclu(ie<stdio.h>

voidniainO

floath,i;l,s,sq,vq,vz;

floatpi=3.141526;

printf(“请输入圆半径r,圆柱高h:**);

scanf(n%f,%f'\&r,&h);

l=2*pi*r;

s=r*r*pi;

sq=4*pi*r*r;

vq=(3.0/4.0)*pi*r*r*r;

vz=pi*r*r*h;

printfV圆周长为:

printf(“圆面积为:s=%.2An0,s);

printf(“圆球表面积为:sq=%.2f\n",sq);

printf("圆球体积为:v=%.2An'*,vq);

printf(“圆柱体积为:vz=%.2nn”,vz);

I

运行结果:(下划线部分代表键盘键入数据/代表Enter)

温馨提示

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

评论

0/150

提交评论