学习c语言看什么书

学习c语言看什么书,第1张

如果是自学的话,最好不要看潭浩强的书,他喜欢用数学公式做例题,不适合初学者或自学。

其实潭浩强的书并不怎么样,比国外的教程差远了,只是国内高校缺乏创新意识,跟风现象严重,从高校到职校,《C程序设计》几乎人手一本,这才创下了“发行量第一”现象。而且潭浩强已公开表示:不再就他的书回答任何技术性的问题!这分明是对自己技术没信心、落后于时代的表现。

国外教程:

《21天学通C语言

《C语言三日通》(很多人国外自学者都是看了这本书才入门的,所用的例题简单易懂)

再介绍以下两本真正经典的教材:

1.《The C Programming Language》

2.《Expert C Programming --- Deep C Secrets》

如果E文好就看原版,否则只有买译本了。

强调一句:如果您是自学(初学者),千万别表谭浩强的书,否则你很难看懂。他的书到处都是,您自己找一本先体验一下就知道了。

1、《啊哈C语言》

这本书为计算机纯小白量身打造。风格幽默,生动形象,通俗易懂,对入门小白培养兴趣大。在语言艺术这方面,是登峰造极。对已经有基础的人进阶或者巩固帮助不大。

2、《C primer plus 第5版/第6版》

从书名就可以看出这是一本为入门小白准备的,对希望能够系统学习c语言的读者很有帮助。入门小白在啃书过程中,遇到的主要阻碍,以及对很多关键字不够了解,而这本书中每一个知识点都安排了很多生动简单的示例,并给出了相应的运行结果,畅通无阻的感觉。而《C Primer Plus 6》相对于第5版又做了一个全新的升级,在完整度、示例运行、详细度上更进一步,读樱宽起来不会枯燥乏味。

3、《C++ Primer Plus(第6版)中文版》

被誉为“开发人员学习C++的必备教程,没有之一”!一本经久不衰的c++入门畅销书适合,从未学习过C语言甚至没学过编程的零基础小白。从基础内容开始,先讲解了有关传统编程的一些规则,到了后面才一点一点引出C++的精髓之一的相关内容,挺有丰富的案例,新手理解容易。

4.《C和指针

指针和指针 *** 作一直是c语言中的重点和难点。而这本书深入脊纯亮和完整的提供了关于指针的知识,足以帮助避开指针的痛苦。更主要的一点,这本书中ADT、递归、指针和数组的部分有自己独特的思想,可以和教材互补,形成一个正确的c语言观。

5、《C程序设计语言》

这本裤培书在c语言界的殿堂级宝藏,可谓是经典之中的经典。纵向上,从hello world衍生出计算机的发展历程,横向上不断深入,层层拔高。在短短的100多页之内,几乎就手把手教写了stdio.h stdlib.h string.h当中大部分例程,实现了二分查找、快速排序、二叉树、哈希表这些重要的数据结构和算法。

没有编译调试

/** 定义书架数据结构 */

typedef struct SHELF {

    int size

    int count

    int id_list[0]

} Shelf, *ShelfPtr

/** 创建并初始化书架 */

int 

Shelf_create(Shelf **shelf, int size=100) {

    size_t len = sizeof(Shelf) + sizeof(int) * size

    *shelf = (Shelf*)malloc(len)

    if (*shelf <= 0) {

        return -1

  迹拍  }

    memset(*shelf, 0x00, len)

    return 0

}

/** 销毁并释放书架 */

int 

Shelf_destroy(Shelf **shelf) {

    if (*shelf > 0) {

        free(*shelf)

        *shelf = NULL

    }

    return 0

}

/** 书架加载数据(从控制台) */

int 

Shelf_load(Shelf *shelf) {

    int count = 0

    sscanf("input the count of books: ", &count)

    if (count <= 0 || count > shelf->size) {

        return -1

    }

    shelf->count = count

    char buff[1024]

    buff[0] = 0x00

    sscanf("input IDs of all the books:", buff)

    char *from = *to = buff

    for (int i = 0 i < count i ++) {

        while ((*from < '0' || *from > '9') && *from != 0x00) {

       缓锋     from ++

        }

        if (*from == 0x00) {

            return -1

        }

        while (*to >= '0' && *to <= '9') {

            to ++

        }

        *to = 0x00

        self->id_list[i] = atoi(from)

    }

    return 姿哪羡0

}

/** 查找图书 */

int 

Shelf_search(Shelf* shelf, int id, int *pos) {

    *pos = search(shelf->id_list, 0, shelf->count, id)

    return 0

}

/** 对半查找法,前提是数据已经按升序排列 */

int search(int* list, int from, int to, int value) {

    if (from == to) {

        return -1

    }

    int mid_pos = (from + to) / 2

    int mid_value = list[mid_pos]

    if (mid_value == value) {

        return mid_pos

    } else if (mid_value < value) {

        return search(list, from, mid_pos, value)

    } else {

        return search(list, mid_pos, to, value)

    }

    return 0

}

int main() {

    Shelf *shelf = NULL

    Shelf_create(&shelf, 1024)

    Shelf_load(shelf)

    int id = -1

    int pos = -1

    scanf("input the id to search:", &id)

    Shelf_search(shelf, id, *pos)

    if (pos >= 0) {

        printf("the position of book[%d] is %d\n", id, pos)

    } else {

        printf("the book[%d] is not found\n", id)

    }

    Shelf_destroy(&shelf)

    return 0

}

book[max_index].price=book[0].price如果是IF判断条件用=肯定不对啊。。if条正凯袜件的等孙余于是这样的“==”。。。

PS:大致看上去没什么问举激题。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12402628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存