文档介绍:请写出BOOLflag与“零值”比较的if语句。(3分)标准答案:if(flag)if(!flag)如下写法均属不良风格,不得分。if(flag==TRUE)if(flag==1)if(flag==FALSE)if(flag==0)请写出float x与“零值”比较的if语句。(4分)标准答案示例:constfloatEPSINON=;if((x>=-EPSINON)&&(x<=EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。如下是错误的写法,不得分。if(x==)if(x!=)请写出char*p与“零值”比较的if语句。(3分)标准答案:if(p==NULL)if(p!=NULL)如下写法均属不良风格,不得分。if(p==0)if(p!=0)if(P)if(!)、以下为WindowsNT下的32位C++程序,请计算sizeof的值(10分)charstr[]=“Hello”;char *p=str;int n=10;请计算sizeof(str)=6 (2分)sizeof(p)= 4 (2分)sizeof(n)= 4 (2分)voidFunc(charstr[100]){请计算sizeof(str)= 4 (2分)}void*p=malloc(100);请计算sizeof(p)=4 (2分)、简答题(25分)干什么用?(5分)1、头文件中的ifndef/define/endif答:防止该头文件被重复引用。2、#include<>和#include“”有什么区别?(5分)答:对于#include<>,#include “”,、const有什么用途?(请至少说明两种)(5分)答:(1)可以定义const常量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?(5分)答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为:voidfoo(intx,inty);该函数被C编译器编译后在库中的名字为_foo,而C++S译器则会产生像_foo_int_int之类的名字。C+H提供了C连接交换指定符号extern“C”来解决名字匹配问题5、请简述以下两个for循环的优缺点(5分)for(i=0;ii++)if(condition){{if(condition)for(i=0;ii++)DoSomething();DoSomething();else}DoOtherthing();else}{for(i=0;ii++)DoOtherthing();}优点:程序简洁优点:循环的效率咼缺点:多执行了N-1次逻辑判断,缺点:程序不简洁并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率c语言常见笔试题关键词:笔试题intStrcmp(char*str1,char*str2){inti=0;intb=0;while(str1[i]||str2[i]){if(str1[i]>str2[i]){b=1;break;}elseif(str1[i]<str2[i]){b=-1;break;}i++;}returnb;}***************************************************************************************************************,并简要叙述其理由:charbuf1[10]="hello";charbuf2[10]="hello";if(buf1==buf2)printf("equal!");elseprintf("notequal!");因为buf1,buf2分配了不同的内存块,而比较的是数组名,实际上是两个分别指向数组起始元素地址的指针。:intloop,a[5];int*p=a;for(loop=0;loop<5;loop++){p++;*p=loop;}数组a[5]在创建时没有初始化,在for循环里也没有起到完全初始化数组的作用,而且对一块未知内存赋值。在最后一轮循环结束时p指向了数组a[5]的最后一个元素的下一个地址。string系列char*strcpy(char*str