C++/C试题答案与比较技巧:if语句、sizeof和头文件用法

需积分: 5 0 下载量 46 浏览量 更新于2024-08-07 收藏 64KB DOC 举报
本资源是一份关于C++/C语言的试题答案和评分标准文档,主要关注以下几个关键知识点: 1. **布尔类型与零值比较**(3分): - 在C++中,布尔类型`BOOL`的比较应避免直接与`TRUE`、`FALSE`或`0`进行比较,因为这可能导致不良代码风格。正确的做法是使用逻辑运算符`!`,如`if (!flag)`,或者使用一个较小的常量值,如`const float EPSILON = 0.00001;`来判断浮点数是否接近零。 2. **浮点数比较**(4分): - 浮点数的比较应该避免使用`==`或`!=`,因为它们不能处理浮点数的精度问题。正确的做法是使用`>=`和`<=`,如`if ((x >= -EPSILON) && (x <= EPSILON))`。 3. **字符指针与零值比较**(3分): - 对于字符指针`p`,通常将其与`NULL`进行比较,而非数字0。正确的方式是`if (p == NULL)`,而不是`if (p == 0)`。 4. **C++ sizeof运算符**(10分): - `sizeof`操作符用于计算数据类型或变量在内存中的字节数。例如: - `sizeof(str)` 对于`char str[]="Hello";`,结果是5(包括终止符'\0'),但这里给出了4,可能是计算不完整。 - `sizeof(p)` 和 `sizeof(n)` 分别计算`char *p=str;`和`int n=10;`,结果分别是4(指向变量的指针占用4个字节)和4(整型变量占用4个字节)。 - `void *p=malloc(100);`时,`sizeof(p)`同样为4,表示动态分配的内存地址。 5. **预处理器指令的理解**(15分): - `ifndef/define/endif`组合用于条件编译,避免头文件的重复包含,确保宏定义仅在第一次被包含时生效。 - `#include <filename.h>`与`#include "filename.h"`的区别在于: - `<>`要求编译器从标准库路径查找文件,适用于标准库中的头文件。 - `" "`则从当前工作目录或包含文件所在目录查找,适用于自定义的头文件。 6. **const关键字的用途**(至少2种): - `const`用于声明常量,表示其值在程序执行过程中不能改变,提高代码的可读性和安全性。 - `const`还可以修饰函数参数,使其指针不能被修改,保证函数内部数据的安全性。 通过这些题目,学习者可以掌握C++语言中变量比较的正确方法,理解sizeof运算符的使用,以及预处理器指令和`const`关键字在编程实践中的重要性。