学习c语言看什么书好?

如题所述

第1个回答  2019-06-14
推荐三本书:
1
谭浩强<<C程序设计>>(第三版)该书通俗易懂,简练细致,极易读懂。发行量1000万册不是吹的。配合该书的习题解答<<C程序设计题解>>学起来快马加鞭,事半功倍。
不过该书略有缺陷,对算法没强调,对编程风格没说明,而这是非常重要的。
2
C.Primer.Plus中文第五版
(网上有原书电子版并附带全书例子程序和大部分习题答案)(美国著名计算机教育专家Stephen
Prata倾心奉献,该书曾获得美国图灵图书奖,细致入微又系统完整,被誉为学习c的最通俗完整教材。强烈推荐!初学者必备)
3.
<<The
C
programming
Language>>,该书是C语言之父Dennis
M.
Ritchie传世经典,简练,深刻。Dennis
M.
Ritchie还是c编译器的第一个实现者。该书确立了c语言中影响深远的k&r标准。
不过该书更适合有一定编程基础的人阅读。
第2个回答  2017-11-01
与网友分享
勇于探索 追求简朴
学习《C语言的科学和艺术(中文版)》随记
#include <stdio.h>
#include "genlib.h"
#include "simpil.h"
#define Sunday 0
#define Monday 1
#define Tuesday 2
#define Wednesday 3
#define Thursday 4
#define Friday 5
#define Saturday 6
void GiveInstructions(void);
int GetYearFromUser(void);
......;
bool IsLeapYear(int year);
main()
{
int year;
GiveInstructions();
year = GetYearFromUser();
PrinCalendar(year);
}
void GiveInstructions(void)
{
......;
}
......
......
......
bool IsLeapYear(int year)
{
return (((year%4==0) && (year%100 != 0)) || (year%400==0));
)
以上是美国 Eric S. Roberts 博士编著的《C语言的科学和艺术》一书中第5章的例题程序(由于该程序较长,为使本文篇幅短小,故未全部录下)。能编著这样一本关于计算机知识的书,应该是大师级的水平。该例题是一个输入不小于1900即可打印输入年份月历的程序。由于本人初学C语言,刚开始被该例题程序的函数嵌套调用搞得晕头转向,看了好长时间才终于弄明白该程序的功能。首先要说明的是:TURBO C 2.0 没有该书作者自己编写的函数库,几经周折从网上找到所需源程序,却不能通过编译,只得改用C标准库的函数。改用C标准库的函数,就必须对书中的例题程序作较大改动,也同样费了不少周折才终于通过编译。
在学习过程中,本人发现该例题程序有好多问题。
1. 用 define 定义了在程序中用不到的多余符号常量;
2. 定义的函数过多,令人看得眼花缭乱;
3. 函数的层层嵌套调用使得程序逻辑混乱,将人搞得晕头转向。
4. 函数 int FirstDayOfMonth(int month,int year) 被调用12次,而其中求从2月份到12月份第一天是星期几的 for 循环也是多余的。
于是本人经过思考,决定修改该程序。修改后的程序短小精悍,函数调用无层层嵌套现象,看得清楚明白,也没有多余的函数调用。经过修改后的程序可以通过 GCC10、WINTC、TURBO C 2.0 编译器的编译,但只有 GCC10 编译器编译的该程序才能正常显示中文。修改后的程序附在本文的最后。
学而后思,获益不菲;学而不思,难得真谛。我们应当敬重大师,向大师虚心学习。但不能迷信大师,大师写出的东西不可能都是经典范例,更不是改不得的金科玉律,要用自己的头脑思考,去发现问题并解决问题,从而提高自己的认识水平及解决问题的能力。而这正是我们学习的最终目的。
附经过修改后的例题程序如下:
#include <stdio.h>
#define MOND 1
#define SATU 6
void prim(int month,int year,int ndays,int weekday);
int firs(int year);
int main(void)
{
int year=0,month,weekday,ndays[12]={31,28,31,30,31,31,30,31,30,31,30,31};
printf(" 这是一个输入年份数即可打印该年份年历的程序\n");
while(year<1900)
{
printf(" 请输入一个不小于1900的年份数: ");
scanf("%d",&year);
}
printf("\n");
if(((year%4==0) && (year%100 != 0)) || (year%400==0))
ndays[1]=29;
weekday=firs(year);
for(month=1;month<13;month++)
{
prim(month,year,ndays[month-1],weekday);
weekday=(weekday+ndays[month-1])%7;
printf("\n");
}
printf(" %d 年历已打印完毕, 再见!",year);
return 0;
}
void prim(int month,int year,int ndays,int weekday)
{
const char yue[12][10]={"1月","2月","3月","4月","5月","6月","7月",
"8月","9月","10月","11月","12月",};
int i,day;
printf(" %d年 %s\n",year,yue[month-1]);
printf(" 日 一 二 三 四 五 六\n");
for(i=0;i<weekday;i++)
printf(" ");
for(day=1;day<=ndays;day++)
{
printf(" %2d",day);
if(weekday==SATU)
printf("\n");
weekday=(weekday+1)%7;
}
if(weekday+6 != SATU)
printf("\n");
}
int firs(int year)
{
int weekday=MOND,i;
for(i=1900;i<year;i++)
{
weekday=(weekday+365)%7;
if(((i%4==0) && (i%100 != 0)) || (i%400==0))
weekday=(weekday+1)%7;
}
return weekday;
}
写于17:41 2017/11/1
第3个回答  2023-03-31
  C语言其实有很多好书,我们上学普遍学的是老谭的书,对于应付考试,考计算机等级够用了。但是对于一个真正想把编程当饭吃的人来说,这是根本不够的。从入门到精通,学习编程总有个过程。不同阶段看不同的书,或者看一本能“活到老,学到老”的书。编程书籍以国外的受欢迎程度远远大于国内。下面给大家推荐几本:    入门:   C语言入门经典   《C语言入门经典》例子简单生活化,而且每个例子分析很细。章节安排合理,章末的例子还特别注重思路的引导,而且分析起来特别有成就感。这本书是自学过程的一本好书。   进阶:   C primer plus   这本书很适合希望系统学习C语言的读者,正如他的名字,是一本不错的入门和进阶的书。书中的每一个知识点都有很多生动简单的示例,并给出了相应的运行结果。总之,在看这本书的`过程中,有一种一气呵成的感觉。   高手:   C专家编程   《C专家编程》展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。   本书可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,本书可以帮助他们站在C的高度了解和学习C++。   当然,C语言的书籍很多,大家也不必拘泥于推荐的书籍,适合自己的才是最好的。只读书而不去实际动手,这相当于纸上谈兵。理论联系实际才是硬道理。
第4个回答  2019-08-15
最近很多人都在问如何学习编程。我觉得学习编程最重要的是入门,如果你入门的时候有一个好的方法和思路,打下比较扎实的基础,对今后的编程工作是很有益处的。即使在学习新的编程语言也无所谓,因为它们有很多相通之处,可以相互借鉴。
我认为可以先学习一下pascal,这个语言比较严谨,适合初学者。pascal它被称为教学语言,结构严谨,不像C语言那么灵活,易于理解和学习。
然后可以继续学习C语言,这个语言比较灵活。有了pascal的基础,在进行C语言编程就不会因为C语言的灵活而有问题
。后面的就可以学习VC什么的了。
C语言的书推荐谭浩强的,比较好。
我当时学习pascal和C语言的时候是将书后的习题都做了一遍,感觉效果很好。
当然了,学习什么语言也要看你具体准备从事什么行业。例如你要进行嵌入式开发,C就是很好的选择,如果是Windows开发,那么VC就不错。还有数据库方面的开发、网络开发等等。不同的语言适合不同的方面。要看自己的选择的,呵呵

还有很多人说自己的基础很差,甚至中学毕业什么的。其实这个并不重要,比较说英语,在计算机语言里所用到的单词量很少,而且都是常用词,经常使用就记住了。当然,如果你要看原文资料或者帮助的话,专业词汇比较多,不过在金山词霸的帮助下,经常看,也是没什么大的问题的。至于数学什么的,其实数学只是培养你一个逻辑思维能力,在初学编程的时候影响不是很大。况且,作为一个基础编程人员来说,上面还有系统分析师、项目经理,他们会把需求分析、概要设计和详细设计做好的,你只要按照文档写代码就OK了。不过,要上更上一步的话,其他基础知识就非常重要了,毕竟你不能写一辈子代码。
在你学习好C语言以后,个人建议好好学习一下数据结构和软件工程。这两门对你的水平提高都是很有帮助的。特别是软件工程,它能够使你按照科学的工程方法进行软件开发,对今后的发展很有好处。
只是一家之言,有不到之处,还望见谅
第5个回答  2019-09-07
可以看《C陷阱与缺陷》绝对推荐,这本书是强化你的c语言的好书。上面有很多我们在c上常犯得错误,是c大师安德鲁编的。《c与指针》也可以看看,毕竟指针是c的精华与灵魂,说实话,c功力怎么样,关键是看指针用得好不好。最后如果你想很牛的话就看《c语言专家编程》,你吃透后就可以说你精通c语言了