第3章作业答案(第2部分)

  • 格式:doc
  • 大小:105.50 KB
  • 文档页数:4

第3章作业

第2部分:C中的运算符与表达式(100分)

本答案只是参考答案,请各组根据实际情况批阅。有些问答题只要关键点能答出就算对。编程题也没有绝对的写法,因各人而异,但变量定义类型、输入格式符、输出格式符等必须准确。

请用红色笔批阅,将总分写在第一页右上角。

批阅组长务必在批完后将全部作业和成绩单电子版给课代表。

1. 写出C中的算术运算符、关系运算符、逻辑运算符(1分)

算术运算符: + — * 、 % ++ --

关系运算符: > >= < <= == !=

逻辑运算符: && || !

2. 写出C中3级及以上级别的运算符的类别名称,依照优先级的从高到低排列。(2分)

算数运算(3/4) 位运算(5) 关系运算(6/7) 位运算(8/9/10)逻辑运算(11/12)条件运算(13)

赋值运算(14) 逗号运算(15)

3. 写出C运算符中结合性为“从右至左”的运算符(1分)

二级运算符 条件运算符 赋值运算符

4. 写出C中用于表达式计算的数据类型转换规则(隐式转换规则)(1分)

Float 型作为double型运算, char/short 型作为int型运算

其它类型的转换方向为:int -> unsigned -> long -> double

5. 若有 int a=6; unsigned int b=3 ; long c=555;

float x=4.5 ; double y=88.44 ;

char z= ‘B’ ;

写出下面各单项表达式的值/ 表达式的结果数据类型 及表达式中各变量的值(60分)

单项表达式 表达式的值 表达式值的数据类型 表达式中各变量的值

(1) a+b 9 Unsigned int A b 仍为原值

(2) b+4 7 Unsigned int b 仍为原值

(3) a+c 561 Signed long int A c仍为原值

(4) a / 4 1 int A仍为原值

(5) a / 4.0 1.5 double A仍为原值

(6) y / 4 22.11 double y仍为原值

(7) a%3 0 int A仍为原值

(8) x %5 编译错误

(9) a++ 6 int A=7

(10) ++a 7 int A=7

(11) --a 5 int A=5

(12) a-- 6 int A=5

(13) ++x 5.5 double X=5.5

(14) --(b+2) 编译错误

(15) z++ 66 int Z=67或者‘C’

(16) a+z 72 int A z 仍为原值

(17)a>b 1 int A b仍为原值

(18) x!= 3 1 int X仍为原值

(19) a==6 1 int a仍为原值

(20) z>=b 1 int Z b仍为原值

(21) a && y 1 int a y仍为原值

(22) z || 0 1 int Z仍为原值

(23) ! z 0 int Z仍为原值 (24) a=3, b=4+a, c=a+b 10 Signed long int A=3,b=7,c=10

(25) a+10, b=a+3 9 Unsigned int A=6,b=9

(26)sizeof(unsigned int) 2 int

(27) sizeof(x+a) 8 double A x值未变

(28) (int)x 4 int X值未变

(29) a<10? a+10 : a+30 16 int A值未变

(30) z!=‟\0‟ ? „1‟ : „0‟ 49 int Z值未变

6. 若使用TC2.0,设有定义

int a=6, b=-1;

unsigned int c=3,d=65535 ;

long e= -1;

unsigned long f=65535 ;

请按要求填写下面表格内容(注:%x 以十六进制形式显示 , %xH 显示的十六进制后面带一个H(进制符号)):(11分)

程序段 赋值前表达式中各变量在内存中的二进制形式 赋值后表达式中各变量在内存中的二进制形式 Printf

输出结果

(1)

a=b;

printf(“%d ,%u”, a,a); a:00000000 00000110

b:11111111 11111111 a:11111111 11111111

b:11111111 11111111 -1, 65535

(2)

c=b;

printf(“%u %d”,c,c); b:11111111 11111111

c:00000000 00000011 b:11111111 11111111

c: 11111111

11111111 65535, -1

(3)

a=d;

printf(“%d,%u”,a,a); a: 00000000 00000110

d: 11111111 11111111 a: 11111111

11111111

d:11111111 11111111 -1,65535

(4)

e=b;

printf(“%ld\t%lu\t%xH”,e,e,e); b:11111111 11111111

e:11111111 11111111

11111111 11111111 b:11111111 11111111

e:11111111 11111111

11111111 11111111 -1,4294967295,

FFFFFFFFH

(5)

e=a;

printf(“%ld\t%lu\t%xH”,e,e,e); a: 00000000 00000110

e: 11111111 11111111

11111111 11111111 a:00000000 00000110

e:00000000 00000000

00000000 00000110 6,6,6H

(6)

f=b;

printf(“%ld\t%lu\t%xH”,f,f,f); b: 11111111 11111111

f: 00000000 00000000

11111111 11111111 b:11111111 11111111

f:11111111 11111111

11111111 11111111 -1,

4294967295,

FFFFFFFFH

(7)

f=a;

printf(“%ld\t%lu\t%xH”,f,f,f); a: 00000000 00000110

f: 00000000 00000000

11111111 11111111 a:00000000 00000110

f:00000000 00000000

00000000 00000110 6,6,6H

(8)

e=c;

printf(“%ld\t%lu\t%xH”,e,e,e); c: 00000000 00000011

e: 11111111 11111111

11111111 11111111 c:00000000 00000011

e: 00000000 00000000

00000000 0000011 3,3,3H

(9)

f=c;

printf(“%ld\t%lu\t%xH”,f,f,f); c: 00000000 00000011

f: 00000000 00000000

11111111 11111111 c:00000000 00000011

f: 00000000 00000000

00000000 00000011 3,3,3H

(10)

e=32768;

a=e;

printf(“%d”,a); a: 00000000 00000110

e:00000000 00000000

10000000 00000000 a:10000000 00000000

e: 00000000 00000000

10000000 00000000 -32768 (11)

f=65536;

c=f;

printf(“%u”,c); f: 00000000 00000001

00000000 00000000

c: 00000000 00000011 f: 00000000 00000001

00000000 00000000

c: 00000000 00000000 0

7.读程序段,按要求填写表格内容(6分)

程序段 显示结果

(1)

float x=4.5; double y;

y=x;

printf(“%lf”,y); 4.500000

(2)

float x; double y=34678.245;

x=y;

printf(“%f”,x); 34678.246094 (第8位以后是近似)

(3) int x; float y=39.7;

x=y;

printf(“%d”,x); 39

(4) int x=34; float y;

y=x;

printf(“%f”, y); 34.000000

(5) int x; char b=‟A‟;

x=b;

printf(“%d”,x); 65

(6) int x=68; char b;

b=x;

printf(“%c”,b); D

8. 计算下列混合表达式的值,写出结果值及其数据类型:(7分)

(1)3.5 (2)0 (3) 0 (4) 1 (5) 6 (6)26 (7)10

9.用C语言的关系或者逻辑运算符和其他运算符书写下列条件(11分)

(1)若有变量a、b、c,则要表示条件“a b c三个变量互不相等”该如何写?

a!=b && b!=c && c!=a

(2)若有整型变量x,要表示“x值在10~20之间(包括端点值)”如何书写?

x>=10 && x<=20

(3)若有字符变量c,若要表示“c是大写字母”应如何书写

c>=’A’ && c<=’Z’

(4)若有字符变量c,若要表示“c是数字类的字符”应如何书写

c>=’0’ && c<=’9’

(5)若有字符变量c,若要表示“c是大写或者小写字母”应如何书写