在网上搜索了一些学习C语言的教材,觉得高质量C编程指南这个电子档不错,作者是林锐博士,希望我能做到他所说的
(1)知错就改;
(2)经常温故而知新;
(3)坚持学习,天天向上。
首先请做附录B的C++/C试题(不要看答案),考查自己的编程质量究竟如何。然后参照答案严格打分。
(1)如果你只得了几十分,请不要声张,也不要太难过。编程质量差往往是由于不良习惯造成的,与人的智力、能力没有多大关系,还是有药可救的。成绩越差,可以进步的空间就越大,中国不就是在落后中赶超发达资本主义国家吗?只要你能下决心改掉不良的编程习惯,第二次考试就能及格了。
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。
请写出 BOOL flag 与“零值”比较的 if 语句: if (flag == true)
|
请写出 float x 与“零值”比较的 if 语句: if (x == 0.0)
|
请写出 char *p 与“零值”比较的 if 语句: if ( p == NULL)
|
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
char str[] = “Hello” ; char *p = str ; int n = 10; 请计算 sizeof (str ) = 1
sizeof ( p ) = 1
sizeof ( n ) =4 | void Func ( char str[100]) { 请计算 sizeof( str ) = 1 }
|
void *p = malloc( 100 ); 请计算 sizeof ( p ) =100
|
请写出 BOOL flag 与“零值”比较的 if 语句。(3分) | |
标准答案: if ( flag ) if ( !flag ) | 如下写法均属不良风格,不得分。 if (flag == TRUE) if (flag == 1 ) if (flag == FALSE) if (flag == 0) |
请写出 float x 与“零值”比较的 if 语句。(4分) | |
标准答案示例: const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON) 不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。
|
如下是错误的写法,不得分。 if (x == 0.0) if (x != 0.0)
|
请写出 char *p 与“零值”比较的 if 语句。(3分) | |
标准答案: if (p == NULL) if (p != NULL) | 如下写法均属不良风格,不得分。 if (p == 0) if (p != 0) if (p) if (!) |
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
char str[] = “Hello” ; char *p = str ; int n = 10; 请计算 sizeof (str ) = 6 (2分)
sizeof ( p ) = 4 (2分)
sizeof ( n ) = 4 (2分) | void Func ( char str[100]) { 请计算 sizeof( str ) = 4 (2分) }
|
void *p = malloc( 100 ); 请计算 sizeof ( p ) = 4 (2分)
|
天啊,几乎全错!请高手分析为什么是这个答案。