zoukankan      html  css  js  c++  java
  • 《高质量程序设计指南》C++题目

       今天晚上下了本《高质量程序设计指南》,据说那几个题目 20个硕士里面,得50分以上的还没有超过一半。如果能得满分,

    林锐博士拜你为师。我就很感兴趣的去做了一下,发现都很基本。我这个半路出家的人,居然也能做个80分。给了自己很大的信心,同时,

    也觉得很多问题,还是平时很爱犯的错误。今天把我的错误贴出来和大家分享。

        1. bool flag, float t 和 指针 char *p 如何 和 0 值进行比较。

         bool :我的答案是 if (flag == 0) 0 分,标准答案 应该是 if (flag)。

         float: 我的是 :

        float t = 0.0;
        if (fabs(t) <= FLT_MIN) {
            printf("Zero Value");
        }

        只是我的答案,貌似要包含两个头文件。他的标准答案是这样的:

        const float delt = 0.00001

        if (x >= -delt && x <= delt) 

        只是这里, FLT_MIN 是不是限制的太强了,但是选择delt 的大小是个难题。

       char *p 的比较方法是 if (p == NULL)  这个和标准答案一样。

       只是,在老版本的编译器上,NULL 不能保证转换成指针.

        这个题目,想了下,给自己 6分吧。

        2. sizeof 计算下面的值。这个题目我全对(默认是win32 的机器).

     

        char str[] = "Hello"; 这个是数组的初始化。sizeof 数组,就是这个数组占用的空间。

        sizeof(str) = 6;

        char *p = str;

        sizeof(p) = 4; 在32 位机器上,这个是4. 指针的大小,一般是一个word 的大小。

        int n = 10;

        sizeof(n) = 4;  一般也是一个 word 的大小

        void func(char P[100]) {sizeof(p) =  4}  数组默认是传地址的,所以,这个函数实际上传过来的是数组的头指针,而且是一个拷贝。

        这个拷贝是一个普通的指针。是普通指针的大小。

        void *p = malloc(100); sizeof (p) = 4 p 是普通指针,而非数组指针。所以是普通指针的大小。一个cpu 字。

      

       做到这里,给我的感觉是,题目虽然简单,但是,也涉及C 的基本原理。

       今天太迟了,要睡觉了。下次再续,把后面的题目再贴上来,给大家分享。

  • 相关阅读:
    149. Max Points on a Line(js)
    148. Sort List(js)
    147. Insertion Sort List(js)
    146. LRU Cache(js)
    145. Binary Tree Postorder Traversal(js)
    144. Binary Tree Preorder Traversal(js)
    143. Reorder List(js)
    142. Linked List Cycle II(js)
    141. Linked List Cycle(js)
    140. Word Break II(js)
  • 原文地址:https://www.cnblogs.com/niniwzw/p/1628007.html
Copyright © 2011-2022 走看看