C语言程序设计(第二版)习题参考答案
语言程序设计习题参考答案 C 语言程序设计习题参考答案 习 题 1 一、判断题
1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由 0 和 1 两个数字组成的进制方式。
3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0 的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。
6.常用字符的 ASCII 码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、 小写英文字母。 2.T 3.T 4.T 5.T 6.T 解:1.F 二、单选题
1.在计算机中,最适合进行数值加减运算的数值编码是 。 A. 原码 B. 反码 C. 补码 D. 移码
2.已知英文小写字母 m 的 ASCII 码为十进制数 109,则英文小写字母 y 的 ASCII 码为 十进制数 。 A. 112 B. 120 C. 121 D. 122
3.关于 ASCII 码,在计算机中的表示方法准确地描述是 。 A. 使用 8 位二进制数,最右边一位为 1 B. 使用 8 位二进制数,最左边一位为 1 C. 使用 8 位二进制数,最右边一位为 0 D. 使用 8 位二进制数,最左边一位为 0
4. 设在机器字长 4 位, X=0111B, Y=1011B, 则下列逻辑运算中, 正确的是___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. Y =1000 ? 5.下列叙述中正确的是( ) 。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算 机可以直接识别并执行的程序 C.C 语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C 源程序经过编译、连接,若正确,执行后就能得到正确的运行结果 6.用 C 语言编写的源程序经过编译后,若没有产生编译错误,则系统将( ) 。 A.生成可执行文件 B.生成目标文件 C.输出运行结果 D.自动保存源文件 7.下列叙述中不正确的是( ) 。 A.main 函数在 C 程序中必须有且只有一个 B. C 程序的执行从 main 函数开始,所以 main 函数必须放在程序最前面 C. 函数可
以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题 1. (87.625)10=( )2=( )8=( )16 )8=( )16=( 2. (1001010111001.10111)2=( 3.输入三个数,计算并输出三个数的和与三个数的乘积。 程序如下: #include
dime=sqrt(s*(s-x)*(s-y)*(s-z)); } 127.5 57.A 解:1.1010111.101 2.11271.56 12B9.B8 4793.71875 3.scanf(\.s=(x+y+2)/2; printf(\四、编程题 1.仿照例 1.1,编程序在屏幕上显示: ***************************** Merry Christmas! Happy New Year! ***************************** 解:#include
printf(\.仿照例 1.2 编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。 解:#include
实型常量: 1e0 字符型常量:?x? –0x3d 1.52e0.5 ?\\\\? –0x3d 1.414E+2 ?\\a? π sin(3) ?a?+2 0xf16 ?\\\\? 1e0 0xf16 0x100h e1 ?\\a? 0128 o7o8 ?\\009? 10L 10L 三、指出下列各项中哪些是 C 语言中的用户标识符 x_1 X_2 High printf e2 -e2 count Int sizeof IF sum_12 _123# X_2 High 解:C 的用户标识符有:x_1 next_ IF sum_12 四、单项选择题 1.C 语言中,char 型数据在内存中的存储形式是( ) 。 A.原码 B.反码 C.补码 D.ASCII 码 2.若有定义语句“char c='\\72'; ”则变量 c( ) 。 A.包含 1 个字符 B.包含 2 个字符 C.包含 3 个字符 D.定义不合法 3.C 语言中的基本数据类型包括( ) 。 A.整型、实型、逻辑型 B.整型、实型、字符型 C.整型、逻辑型、字符型 D.整型、实型、逻辑型、字符型 4.设 c1、c2 为字符型变量,执行语句“c1=getchar( );c2=getchar( ); ”时,从键盘输 入 A↙,c1 和 c2 的值分别为( ) 。 A.都是?A? B.c1 是?A? ,c2 未输入 3 β 3DS number $23 NO1: double e2 count Int i/j next_ for number C.c1 未输入,c2 是?A? D.c1 是?A? ,c2 是?\\n? 5.a、b 是整型变量,执行语句“scanf(\,b=%d\,&a,&b);,使 a 和 b 的值分 ” 别为 1 和 2,正确的输入是( ) 。 A.1 2 B.1,2 C.a=1,b=2 D.a=1 b=2 6. c 为字符型变量值为 设 ?A? a 为整型变量值为 97, , 执行语句 “putchar(c); putchar(a); ” 后,输出结果为( ) 。 A.Aa B.A97 C.A9 D.aA 7.已知字母 A 的 ASCII 码值为 65,以下语句段的输出结果是( ) 。 char c1='A',c2='Y'; printf(\.输出格式非法,输出错误信息 B.65,90 C.A,Y D.65,89 8.若要使用输入语句“scanf(\,&i,&j,&x);,为 i 输入-10,为 j ” 输入 12,为 x 输入 345.67,则正确的输入形式是( ) 。 A.–1012345.67↙ B.–10 12 345.67↙ C.–10001200345.67↙ D.–10,12,345.67↙ 9.能正确地定义符号常量的是( ) 。 A.#define n=10 B.#define n 10 C.#define n 10; D.#DEFINE N 10 10.在 C 语言中,int、char、short 三种类型数据在内存中所占的字节数( ) 。 A.由用户自己定义 B.均为 2 个字节 C.是任意的 D.由机器字长决定 解:(1) D (2) A (3) B (4) D (5) C (6) A (7) D (8) B (9) B (10) D 五、填空题 1.char ch='$';float x=153.4523; 。 语句“printf(\8.2f\\\\n\; ”的输出结果是 解:$153.45 \\n 2.int i=123;float x= – 1234.56789; 语句“printf(\\\n\; ”的输出结果是 。 解:i= 123 x=-1234.568 3.char c='a';int a=65; 语句“putchar(c+1);putchar(a); ”的输出结果是 。 解:bA 4.int a=98; 语句“printf(“%d,%c,%o,%x”,a,a+1,a+2,a+3);”的输出结果是 解:98,c,144,65 5.int k; float f; 语句“scanf(“=%*4do”,&k,&f);”执行时输入 12345678765.43↙ 则 k= ,f= 。 f=8765.4 解:k=123 6.使用 pow()函数时,程序的开头必须写一条预处理命令: 解:#include
2 + 10 2 tan ?1 x + π 4 ? (a + b ) × y 2 3 4 | sin( x ) | 3 .5 x ?e 6 5 1 ab + c + d 2 c+d a + 2b ? cd 2 2 解:-(a +b )×y 的 C 表达式:-(a*a+b*b)*pow(y,4) 2 + 10 2 的 C 表达式:
(sqrt(2)+10*10)/(pow(tan(x),-1)+3.141593) tan ?1 x + π | sin( x) | 3.5 的 C 表达式:sqrt(pow (fabs (sin(x)),3.5)) x 6 ? e 5 的 C 表达式:pow(x,6)-exp(5) 1 ab + c + d 2 的 C 表达式:(1.0/2*a*b+c+d)/(a+2*b-(c+d)/c/d) c+d a + 2b ? cd 二、按照要求,写出下列 C 的表达式。 1.写出 int 类型变量 x 为“奇数”的表达式。 解:x%2==1 2.Int 类型变量 x、y、z,写出描述“x 或 y 中有且仅有一个小于 z”的表达式。 解:x
a==b/10&&a/10==b 8.写出判断某个人是否是成年人(年龄大于 21),且不是老年人(年龄大于 65)的逻辑表达 式。 5 解:y>21&&y<=65 9.写出取变量 a、b、c 中最大值的条件表达式。 解:(a>b?a:b)>c?(a>b?a:b):c 10.若字符变量 ch 为小写字母,则将其转换为对应的大写字母。 解:ch=ch>='a'&&ch<='z'?ch-32:ch 三、单项选择题 1.设 int x=3,y=4,z=5; ,下列表达式中值为 0 的是( ) 。 A.'x'&&'y' B. x<=y C.x||y+z&&y–z D. !((x 法中,错误的是( ) 。 A. “5.0”不是表达式 B. “x”是表达式 C. “!x”是表达式 D. “sqrt(x)”是表达式 解:(1)D (2)B (3)B (4)D (5)B (6)D (7)B (8)C (9)D (10)C (11)A (12)A 四、填空题。 1.设 float x=2.5,y=4.7; int a=7;,表达式 x+a%3*(int)(x+y)%2/4 值为 解:2.5 2.设 int x=2,y=3; ,执行语句“x*=x+y”后 x 的值为 。 解:10 3.设 int x=17,y=5; ,执行语句“x%=x–y”后 x 的值为 解:5 6 。 。 4.设 int a=6,b=4,c=2;,表达式 !(a-b)+c-1&&b-c/2 的值为 。 解:1 。 5.设 int a=2,b=4,x,y;,表达 式!(x=a)||(y=b)&&!(2-3.5) 的值为 解:0 6.判断变量 a、b 是否绝对值相等而符号相反的逻辑表达式为 。 解:a==-b 。 7.判断变量 a、b 中必有且只有一个为 0 的逻辑表达式为 解:a*b==0&&a+b!=0 8.设 int m=2,n=2,a=1,b=2,c=3;执行语句 d=(m=a==b)&&(n=b>c);后,m 和 n 的值分别 为 。 解:m 为 0,n 为 2 。 9.设 int a=2; ,表达式“a%2!=0”的值为 解:0 10.设 char c='y'; ,表达式“c>='a'&&c<='z'|| c>='A'&&c<='Z'”的值为 。 解:1 x+2 11.写出与代数式 (x+2)e 对应的 C 表达式 。 解:(x+2)*exp(x+2) 。 12.设 int a=2;执行语句 a=3*5,a*4;后 a 的值为 解:15 五、写出下列程序的输出结果。 1. #include c=%d\\n”,a,b,c); } 解:① t ② &a,&b,&c ③ t=a ④ c=t 2.以下程序不借助任何变量把 a、b 中的值进行交换。 #include mid=c1+c2+c3-min-max; putchar(min); putchar(mid); putchar(max); } 2.输入两点坐标(x1,y1)(x2,y2) 、 ,计算并输出两点间的距离。 解:#include scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2); d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); printf(“两点间距离=%f\\n”,d); } 3.编写程序,计算球体积并输出它的值。要求输入半径值,