C语言程序设计(第二版)习题参考答案1 下载本文

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(\A.输出格式非法,输出错误信息 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(\ x=%7.3f\\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= 。 解:k=123 f=8765.4

6.使用pow()函数时,程序的开头必须写一条预处理命令: 。 解:#include 5.填空题。

(1)int i=123,j=45;

函数printf(\的输出结果是 。 解:123,45

4

(2)int i=123; float x=-45.678;

语句printf(\的输出结果是 。 解:i= 123 x=-45.6780 (3)float alfa=60,pi=3

习 题 3

一、根据下列数学式,写出C的算术表达式。

1ab?c?d 2c?da?2b?cd?(a2?b3)?y42?10tan?1x??4

2|sin(x)|3.5x6?e5解:-(a+b)×y 的C表达式:-(a*a+b*b)*pow(y,4)

22

2?102 的C表达式:(sqrt(2)+10*10)/(pow(tan(x),-1)+3.141593) ?1tanx?? |sin(x)|653.5 的C表达式:sqrt(pow (fabs (sin(x)),3.5))

x?e 的C表达式:pow(x,6)-exp(5)

1ab?c?d2 的C表达式:(1.0/2*a*b+c+d)/(a+2*b-(c+d)/c/d)

c?da?2b?cd二、按照要求,写出下列C的表达式。

1.写出int类型变量x为“奇数”的表达式。 解:x%2==1

2.Int类型变量x、y、z,写出描述“x或y中有且仅有一个小于z”的表达式。 解:x=z||x>=z&&y

3.将double类型变量y保留四位小数的表达式。 解:(int)(y*10000+0.5)/10000.0

4.为变量s赋值:取变量x 的符号,取变量y的绝对值。 解:s=(x>=0?1:-1)*(y>=0?y:-y)

5.条件“-5≤x≤3”所对应的C逻辑表达式。 解:-5<=x&&x<=3

6.a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母(不区分大小写)的逻辑表达式 解:a+32==b 或 b-a==32?1:0

7.int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。 解: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=y&&ch<'B'&&!y”的值是( )。 A.0 B. 1 C.“假” D.“真” 3.判断char型变量c为数字字符的正确表达式为( )。

A.'0'<=c<='9' B.'0'<=c&&c<='9' C.c>='0'||c<='9' D.c>=0&&c<=9 4.下列运算符中,优先级最低的是( )。 A.?: B.&& C.= = D.*= 5.若有条件表达式“x?a++:b--”,则以下表达式中( )等价于表达式x。 A.x==0 B.x!=0 C.x==1 D.x!=1 6.有定义int k=4,a=3,b=2,c=1;,表达式“k

a=(--x= =y++)?--x:++y;b=x++;c=y; A.a=9,b=9,c=9 B.a=8,b=8,c=10 C.a=9,b=10,c=9 D.a=1,b=11,c=10 8.有定义int a=9;,语句“a+=a– =a+a;”执行后,变量的值是( )。 A.18 B.9 C.–18 D.–9 9.设x和y均为int型变量,则语句“x+=y;y=x–y;x– =y;”的功能是( )。 A.把x和y按从小到大排列 B.把x和y按从大到小排列 C.无确定结果 D.交换x和y中的值 10.有定义double x=1,y;,表达式“y=x+3/2”的值是( )。

A.1 B.2 C.2.0 D.2.5 11.设有定义int x;double y;,则下列表达式中结果为整型的是( )。

A. (int)y+x B.(int)x+y C.int(y+x) D.(double)x+y 12.设有整型变量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 void main() {

unsigned k,n;

scanf(\输入数据为:69 k=n*10+n/10;

printf(\}

解:n=69 k=96 2.

#include void main() {

int x=2,y=3; x*=y+4;

printf(\x/=y=5;

printf(\x-=y%2;

printf(\} 解:14,3

7