1 1. ia 写出float x 与“零值”比较的 if 语句。 if (x < 0.000001 && x > -0.000001) 说明:一个浮点数在存储时只能保证的有效数字是 7 位,我们应当避免在 C 语言中将一个很大的数和一个很小的数直接相加或者相减,否则就会丢失“小的数”,比如: #include void main(void) { float a=1.3,b=0.3; printf("%.18f",a+b); getch(); } 2. 已知一颗树的后序遍历结果为:CEFHDGIBA,中序遍历结果为:HCFEAGDBI,则前序遍历为: AHFCEBGDI 三种顺序 TLR(根左右)、LTR(左根右)和 LRT(左右根)根据根访问的位置不同分别被称为前序遍历、中序遍历和后序遍历。 前序遍历的规律是:输出根结点,输出左子树,输出右子树; 中序遍历的规律是:输出左子树,输出根结点,输出右子树; 后序遍历的规律是:输出左子树,输出右子树,输出根结点 AHFCEBGDI 3. 编写一个整数拆分的算法,即把一个数拆分为若干个质数(也称素数)相乘,如果被拆分数为 30,则结果为: 2*3*5 素数:只能被 1 或自身整除的整数。 从 2 到 Sqrt(这个数)去除这个数,如果有任何一个除得开就不是素数,否则就继续判断 int prime(int n) { int m; for(m=2;m<=sqrt(n);m++) if(n%m==0) return 0; return 1; } 4. 计算 n 的值 7 int i = 5, n = 0; while (i) { H A B F C D G I E 2 switch(i) { defualt: break; case 1: n += i; case 2: case 3: n += i; } i--; } 要注意当i=3 时 n=3;当i=2 时 n=5;当i=1 时 n 加了两次1 所以为7 5. 一个有关sizeof 的问题,针对字节对齐,环境使用的gcc version 3.2.2 编译器(32 位x86平台)为例。 13.1 struct A{ char a; char b; char c; }; sizeof(struct A)值是 3 一共三个字节,因为是四字节对齐所以占 3 个字节。 13.2 struct B { int a; char b; short c; }; sizeof(strcut B)值是 8 结构体 B 中包含了4 字节长度的int 一个,1 字节长度的char 一个和 2 字节长度的short 型数据一个。所以A 用到的空间应该是 7 字节。但是因为编译器要对数据成员在空间上进行对齐。 所以使用sizeof(strcut A)值为8。 13.3 struct C { char b; int a; short c; }; sizeof(struct C)的值是 12 这时候同样是总共 7 个字节的变量,但是 sizeof(struct...