高质量C编程指南 学习笔记(一)

在网上搜索了一些学习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下的32C++程序,请计算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下的32C++程序,请计算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分)

 

 

天啊,几乎全错!请高手分析为什么是这个答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值