第三章习题答案
3.1 不同的计算机语言所容许定义和使用的数据结构不同的。处理同一类问题,如果数据结构不同,算法也会不同。例如:对10个整数排序和对由10个整数构成的数组排序的算法是不同的。因此,在考虑算法时必须注意数据结构。应当综合考虑算法和数据结构,选择最
佳的数据结构和算法。
3.2 在C语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”,这样做的目的如下:
(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 |
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-=144;a=144;
a+=(a=a-144); a=0;
a+=0;
a=a+0; a=0;
声明:以上只是参考答案,难免有所疏漏或错误,竭诚希望得到大家的批评指正!