收藏 分享(赏)

c语言练习1.doc

上传人:ysd1539 文档编号:7097310 上传时间:2019-05-05 格式:DOC 页数:7 大小:89KB
下载 相关 举报
c语言练习1.doc_第1页
第1页 / 共7页
c语言练习1.doc_第2页
第2页 / 共7页
c语言练习1.doc_第3页
第3页 / 共7页
c语言练习1.doc_第4页
第4页 / 共7页
c语言练习1.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、练习 1一、选择题1、一个 C 程序是由( B ) 。A一个主程序和若干子程序组成 B一个或多个函数组成C若干过程组成 D若干子程序组成2、一个 C 程序的执行是从( A ) 。Amain 函数开始,直到 main 函数结束 B第一个函数开始,直到最后一个函数结束C第一个语句开始,直到最后一个语句结束 Dmain 函数开始,直到最后一个函数结束3、C 语言语句的结束符是( B ) 。A回车符 B分号 C句号 D逗号4、下面标识符中( D )不是 C 语言的关键字。Achar Bgoto Ccase Dinclude5、以下说法正确的是( A )AC 程序的注释可以出现在程序的任何位置,它对程序

2、的编译和运行不起任何作用。BC 程序的注释只能是一行。CC 程序的注释不能是中文文字信息。 DC 程序的注释中存在的错误会被编译器检查出来。6、以下说法正确的是( D )AC 程序中的所有标识符都必须小写 BC 程序中关键字必须小写,其他标识符不区分大小写CC 程序中所有标识符都不区分大小写 DC 程序中关键字必须小写,其他标识符区分大小写。7、设 x、y 均为 float 型变量,则以下不合法的赋值语句是( B )A+x ; By=(x%2)/10 ; Cx*=y+8; Dx=y=0 ; 解析:运算符%要求两端的操作数必须为整型,而在答案 B 中%号两端的操作数为 x 和 2,x 为实型,所

3、以是错误的。8、下列不正确的转义字符是( C )A B C 19 D 0 解析:转义字符是由单引号括起来的带反斜线的字符,这些字符具有特殊的含义,反斜线后可以是数字来代表某个字符,而这些数字只包括两种:八进制(1-3 位)和十六进制(1-2 位) 。十六进制前面要加 x(或 X) ,这里的 C 答案反斜线后是数字,但不是 x 开头,所以应该是八进制数,但是数值里有9,和八进制数不符,所以是错误的。9、下列不是 C 语言常量的是( A )Ae-2 B074 C“a“ D 0 解析:C 语言的常量分为整型、实型、字符型和字符串。整型常量的书写形式分为十进制、八进制和十六进制,十进制是 09 的数值

4、表示;八进制是以 0 开头,07 的数值表示,十六进制是以 0x(或0X)开头,09 与 af(或 AF)表示。实型常量的书写分为小数形式和指数形式,小数形式指只包含小数点的形式,如:0.056 或 300.57;指数形式只指用包含 e(或 E)的书写形式,要求 e(或 E)的前面必须有数值,后面必须是整数的书写规则。字符型常量指单引号引起来的单个字符或转义字符。字符串常量是指双引号引起的多个字符。这里答案 A 是实型的指数书写形式,但是这种书写形式要求 e前面必须有数值,后面必须是整数,而这里所以是错误的。10、设 int 类型的数据长度为 2 个字节,则 unsigned int 类型数据

5、的取值范围是( B )A0255 B065535 C-3276832767 D-256255 11、若定义了 int x; 则将 x 强制转化成双精度类型应该写成( A )A (double)x B x(double) C double(x) D (x)double 12、在 C 语言中,要求参加运算的数必须是整数的运算符是( C ) 。A/ B* C% D =13、为了计算 s=10!(即 10 的阶乘) ,则 s 变量应定义为( D ) 。Aint Bunsigned Clong D以上三种类型均可解析:在 TC 下,此题答案是 C,在 VC6.0 下此题答案是 D,因为两个编译器对 in

6、t 类型数据的空间分配的大小不一样,在 TC 下是 2 字节,在 VC6.0 下是 4 字节,所以取值范围也就不一样。14、putchar ( )函数可以向终端输出一个( D ) 。A、整型变量表达式值 B、实型变量值C、字符串 D、字符或字符型变量值15、已有如下定义和输入语句,若要求 a1,a2,c1,c2 的值分别为 10,20,A 和 B,当从第一列开始输入数据时,正确的数据输入方式是( D ) ( 代表空格,代表 Enter)int a1,a2; char c1,c2;scanf(“%d %c%d %c“,A、10A20B B、10A20B C、10A20 B D、10A20B解析:

7、空格是有效字符,所以会被 scanf 函数正常读取。A 答案会将 10 送给 a1,空格送给 c1,而 A 字符不属于 a2 的读取范围,scanf 函数非正常结束,a2 与后面的 c2 都没有正常获取数值;B 答案会将10 送给 a1,A 送给 c1,20 送给 a2,空格送给 c2,然后 scanf 函数读取正常结束,后面的 B 字符将会留给下一输入函数读取;C 答案与 A 答案类似;只有 D 答案正确地将将 10 送给 a1,A 送给 c1,20 送给a2,B 送给 c2,然后 scanf 函数读取正常结束。16、执行下列程序片段时输出结果是( C ) 。int x=13,y=5;pri

8、ntf(“%d“,x%=(y/=2);A、3 B、2 C、1 D、0解析:这是一个表达式的运算,x%=()是一个赋值表达式,赋值表达式的运算方向是从右向左进行。即先运算表达式 y/=2,其运算结果是 y=2,再将表达式转换为 x%=2,运算此表达式得到最后结果为 1 。17、已有如下定义和输入语句,若要求 a1,a2,c1,c2 的值分别为 10,20,A 和 B,当从第一列开始输入数据时,正确的输入方式是( D ) 。 ( 代表空格,代表 Enter)int a1,a2; char c1,c2;scanf(“%d%d“,scanf(“%c%c“,A、1020AB B、1020 C、1020A

9、 B D、1020ABAB解析:此题与 15 题类似,这里的回车符也属于有效字符,所以会被 scanf 函数正常读取。A 答案中的1020 后面是字符 A,不属于数值,第一个 scanf 函数读取时将 1020 看成一个整体送给 a1,而后面的 A不属于 a2 获取类型,这个 scanf 函数非正常结束,a2 没有获取到数值;第二个 scanf 执行,c1 获取到字符 A,c2 获取到字符 B。B 答案中的 10 后面是空格,所以第一个 scanf 函数现将 10 送给 a1,再将空格后的 20 送给 a2,第一个 scanf 函数正常结束,第二个函数是读取字符型,这时的缓冲区中首先是回车符,

10、当数字型读取时可以忽略此字符,但是字符型读取却不能忽略,所以 scanf 函数将回车符送给了 c1,将 A 送给 c2,scanf 函数正常结束。C 答案中 10 后面是空格,所以第一个 scanf 函数现将 10送给 a1,20 后面是字符 A,所以将 20 送给 a2,第一个 scanf 函数正常结束;第二个函数是读取字符型,这时的缓冲区中首先是 A,scanf 函数将 A 送给 c1,A 后面的空格送给 c2,第二个 scanf 函数正常结束。D 答案中 10 后面是空格,所以第一个 scanf 函数现将 10 送给 a1,20 后面是字符 A,所以将 20送给 a2,第一个 scanf

11、 函数正常结束;第二个函数是读取字符型,这时的缓冲区中首先是 A,scanf 函数将 A 送给 c1,A 后面的 B 送给 c2,第二个 scanf 函数正常结束。所以 D 答案是正确的。18、若运行时输入:12345678,则下列程序运行结果为( A ) 。#includevoid main ( )int a,b;scanf(“%2d%2d%3d“,printf(“%dn“,a+b);A、46 B、579 C、5690 D、出错解析:scanf 中的 2 是指读取数值的位数,所以 scanf 函数读取前两个数字 12 送给 a,接着读取后面两个数字 34 送给 b,最后读取 567 三个字符

12、,但是后面没有对应的参数所以不送给任何变量,scanf 函数执行结束,所以 a+b=12+34=46,所以输出为 46。19、已知 i,j,k 为 int 型变量,若从键盘输入:1,2,3,使 i 的值为 1,j 的值为 2,k 的值为 3,以下选项中正确的输入语句是( C ) 。 ( 代表空格,代表 Enter)A、scanf(“%2d%2d%2d“ , B、scanf(“%d%d%d“,C、scanf(“%d,%d,%d“ , D、scanf(“i=%d,j=%d,k=%d“,解析:根据键盘输入时数据只是用逗号进行分隔的,所以 scanf 函数中格式符之间的分隔符也必须要用分号,故答案选

13、C。20、有输入语句:scanf(“ a=%d,b=%d,c=%d“,为使变量 a 的值为 1,b 的值为 3,c 的值为 2,则正确的数据输入方式是( D ) 。 ( 代表空格,代表 Enter)A、132 B、1,3,2 C、a=1b=3c=2 D、a=1,b=3,c=2解析:scanf 函数要求非格式字符必须原样键入,所以根据 scanf 语句,答案应该是 D。二、填空题1、C 语言源程序文件的后缀是_.c _,经过编译后生成目标文件的扩展名是_.obj_,经过连接后生成可执行文件的扩展名是_.exe_。2、C 程序注释是由_/*_和_*/_所界定的文字信息组成的。3、源程序的执行要经过

14、_编辑 、 编译 _、_连接_和_运行_四个步骤。4、在 C 语言中(以 16 位 PC 机为例) ,一个 char 数据在内存中所占字节数为 1 ,其数值范围为 -128+127 ;一个 int 数据在内存中所占字节数为 2 ,其数值范围为 -32768+32767 ;一个 long 数据在内存中所占字节数为 4 ,其数值范围为 -2147483648+2147483647 ;一个float 数据在内存中所占字节数为 4 ,其数值范围为 04294967295 。5、C 语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为 大小写字母或下划线 。6、字符常量使用一对

15、单引号 界定单个字符,而字符串常量使用一对 双引号 来界定若干个字符的序列。7、 在 C 语言中,不同运算符之间运算次序存在 优先级 的区别,同一运算符之间运算次序存在 结合性 的规则。8、字符串“thev034Willn“的长度是_12_。 9、已知有如下定义,写出下列表达式的值。 int a=17,b=5 a/b a%b aprintf(“a%c b%ctc%ctabcn“,c1,c2,c3);printf(“tb%c %c“,c4,c5);运行结果:aa bb cc abcA N2、用下面的 scanf 函数输入数据,使 a=3,b=7,x=8.5,y=71.82,c1=A,c2=a,问

16、在键盘上如何输入?#includevoid main ( ) int a,b;float x,y;char c1,c2;scanf(“a=%d b=%d“,scanf(“%f %e“,scanf(“%c%c“,输入数据:( 代表空格,代表 Enter)a=3b=78.57.182e1Aa3、 #includevoid main ( ) int y=3,x=3,z=1;printf(“%d %dn“,(+x,y+),z+2);运行结果:3 34、#includevoid main ( )int a=12345;float b=-198.345, c=6.5;printf(“a=%4d,b=%-1

17、0.2e,c=%6.2fn“,a,b,c);运行结果:a=12345,b=-1.98e+002,c= 6.505、 #includevoid main ( ) int x=-2345;float y=-12.3;printf(“%6d,%6.2f“,x,y);运行结果:-2345,-12.306、 #includevoid main ( ) int a=12; double b=3.1415926;printf(“%6d#,%-6d#n“,a,a);printf(“a=%o a=%xn“,a,a);printf(“%14.10lfn“,b);运行结果:12#,12 #a=14 a=c3.141

18、5926000四、编程题1、已知 int x=10,y=12;写出将 x 和 y 的值互相交换的表达式。表达式:x=x+y, y=x-y, x=x-y2、若 a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=a,c2=b。想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出) 。a=3 b=4 c=5x=1.200000,y=2.400000,z=-3.600000x+y=3.60 y+z=-1.20 z+x=-2.40u=51274 n=128765c1=a or 97(ASCII)c2=b or 98(ASCII)编程:#i

19、ncludevoid main ( ) int a=3,b=4,c=5;double x=1.2,y=2.4,z=-3.6;unsigned int u=51274,n=128765;char c1=a,c2=b;printf(“a=%d b=%d c=%dn“,a,b,c);printf(“x=%lf,y=%lf,z=%lfn“,x,y,z);printf(“x+y=%.2lf y+z=%.2lf z+x=%.2lfn“,x+y,y+z,z+x);printf(“u=%u n=%un“,u,n);printf(“c1=%c or %d(ASCII)n“,c1,c1);printf(“c2=%

20、c or %d(ASCII)n“,c2,c2);3、设圆半径 r=1.5,圆柱高 h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。用 scanf 输入数据,输出计算结果;输出时要求有文字说明,取小数点后 2 位数字,请编写程序。分析:圆周长公式:2r 圆面积公式:r 2 圆球表面积公式:4r 2 圆球体积公式: r3 圆柱体积公式:r 2h编程:#includevoid main()float h,r,l,s,sq,vq,vz;float pi=3.141526;printf(“请输入圆半径 r,圆柱高 h:“);scanf(“%f,%f“,l=2*pi*r;s=r*r*pi;sq=

21、4*pi*r*r;vq=(3.0/4.0)*pi*r*r*r;vz=pi*r*r*h;printf(“圆周长为 : l=%.2fn“,l);printf(“圆面积为 : s=%.2fn“,s);printf(“圆球表面积为 : sq=%.2fn“,sq);printf(“圆球体积为 : v=%.2fn“,vq);printf(“圆柱体积为 : vz=%.2fn“,vz);运行结果:(下划线部分代表键盘键入数据代表 Enter)请输入圆半径 r,圆柱高 h:1.5 , 3圆周长为: l=9.42圆面积为: s=7.07圆球表面积为: sq=28.27圆球体积为: v=7.95圆柱体积为: vz=

22、21.214、编程序:用 getchar 函数读入两个字符给 c1,c2,然后分别用 putchar 和 printf 函数输出这两个字符。并思考以下问题:(1)变量 c1,c2 应定义为字符型或整型?或两者皆可?(2)要求输出 c1 和 c2 值的 ASCII 码,应如何处理?用 putchar 函数还是 printf 函数?(3)整型变量与字符型变量是否在任何情况下都可以互相替代?如:char c1,c2 与 int c1,c2 是否无条件地等价?编程:#includevoid main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);p

23、utchar(c2);printf(“nc1=%c or %d(ASCII)“,c1,c1);printf(“nc2=%c or %d(ASCII)n“,c2,c2);解答:(1)变量 c1,c2 可以定义为字符型或整型皆可。(2)要求输出 c1 和 c2 值的 ASCII 码,应使用 printf 函数,按整数格式输出其值。(3)整型变量与字符型变量并不是任何情况下都可以互相替代。如:char c1,c2 与 int c1,c2 并非无条件地等价。因为整型变量和字符型变量在内存占据的空间大小不同(整型为 4 字节,字符型为 1 字节) ,其取值范围也就不同。当整型变量的值超过字符型变量的取值范围,它们之间就不能相互替代了。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报