如果是自学的话,最好不要看潭浩强的书,他喜欢用数学公式做例题,不适合初学者或自学。
其实潭浩强的书并不怎么样,比国外的教程差远了,只是国内高校缺乏创新意识,跟风现象严重,从高校到职校,《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:大致看上去没什么问举激题。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)