谭浩强 《C程序设计》 第三版 第三章习题答案 (修正)

时间:2022-07-29 00:12:01

第三章习题答案

 

3.1不同的计算机语言所容许定义和使用的数据结构不同的。处理同一类问题,如果数据结构不同,算法也会不同。例如:对10个整数排序和对由10个整数构成的数组排序的算法是不同的。因此,在考虑算法时必须注意数据结构。应当综合考虑算法和数据结构,选择最

佳的数据结构和算法。

3.2C语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”,这样做的目的如下:

(1)凡未被事先定义的,系统不把它认作变量名,这就能保证程序中变量名使用得正确。

(2)每一个变量被指定为一个确定类型,在编译时就能为其分配相应的存储单元。

(3)指定每一个变量属于一个类型,这就便于在编译时据此检查在程序中要求对该变量进行的运算是够合法。

3.3 略

3.4如下表:

VC变量的类型

 

25

-2

2147483649

int

 (4B=32bit)

0000 0000 0000 0000 0000 0000 0001 1001

1111 1111 1111 1111 1111 1111 1111 1110

1000 0000 0000 0000 0000 0000 0000 0001

long

 (4B=32bit)

0000 0000 0000 0000 0000 0000 0001 1001

1111 1111 1111 1111 1111 1111 1111 1110

1000 0000 0000 0000 0000 0000 0000 0001

short

(2B=16bit)

0000 0000 0001 1001

1111 1111 1111 1110

0000 0000 0000 0001

signed char

(1B=8bit)

0001 1001

1111 1110

0000 0001

unsigned int (4B=32bit)

0000 0000 0000 0000 0000 0000 0001 1001

1111 1111 1111 1111 1111 1111 1111 1110

1000 0000 0000 0000 0000 0000 0000 0001

unsigned long

(4B=32bit)

0000 0000 0000 0000 0000 0000 0001 1001

1111 1111 1111 1111 1111 1111 1111 1110

1000 0000 0000 0000 0000 0000 0000 0001

unsigned short

(2B=16bit)

0000 0000 0001 1001

1111 1111 1111 1111 1111 1111 1111 1110

0000 0000 0000 0001

unsigned char

(1B=8bit)

0001 1001

1111 1110

0000 0001

3.5  ‘a’是字符常量,”a”是字符串常量,但二者究竟有什么区别?C规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。

3.6运行结果:

aa bb  cc      abc

       A N

Press any key to continue

3.7   程序代码:

void main()

{

        char c1='C',c2='h',c3='i',c4='n',c5='a';

        printf("%c%c%c%c%c/n",c1+=4,c2+=4,c3+=4,c4+=4,c5+=4);

}

运行结果:

Glmre

Press any key to continue


3.8 运行结果:

ab

97 98

Press any key to continue

3.9 2.5;

    3.5;

3.10 9,11,9,10;

3.11 

int

99

100

76

53

68

42

-1

char

‘c’

‘d’

‘L’

‘5’

‘D’

‘0’

ASCII-1

unsigned int

99

100

76

53

68

42

4294967295

float

99.000000

100.00000

76.000000

53.65

68.000000

42.0000000

-1.000000

long int

99

100

76

53

68

42

-1

int 99 0 000 0000 0000 0000 0000 0000 0110 0011

char ‘d’ 0 110 0100

unsigned int 76 0000 0000 0000 0000 0000 0000 0100 1100

3.12

a=12

1. a+=a;  a=24;

2. a-=2;  a=10;

3. a*=2+3;  a=a*(2+3);  a=60;

4. a/=a+a;  a=a/(a+a);   a=0;

5. a%=(n%=2),n=5;  a%=(n=n%2); a%=1; a=a%1; a=0;

6. a+=a-=a*=a;

a+=a-=(a=a*a); a+=a-=144a=144;

a+=(a=a-144); a=0;

a+=0;

a=a+0; a=0;

声明:以上只是参考答案,难免有所疏漏或错误,竭诚希望得到大家的批评指正!