C语言问题(自学容易吗?)

如题所述

学习C语言,说难也难,说不难也不难,主要是入门难,如果通过"入门"这一关,那么下面就容易多了.不过到了"指针"这个知识点,那就又麻烦了.相对于其他的编程,C语言算是比较难的了,而且C语言也是非常重要的,它是很多编程的基础,所以一定要学好C语言,有些大学计算机系学的第一个编程语言,就是C语言,可见其重要性,建议你最好让老师教,建议你下载"C语言程序设计曾怡讲 谭浩强编",这样就好一些.
http://www.gougou.com/search?search=C%E8%AF%AD%E8%A8%80%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E6%9B%BE%E6%80%A1%E8%AE%B2%E8%B0%AD%E6%B5%A9%E5%BC%BA%E7%BC%96&id=0
到这里下载,再配一本教材就行了.教材你自己找吧

如果你真的要自学的话,下面是我帮您查找的C语言自学方法,供您参考:一、C语言入门的基本学习方法

《C语言》的内容很丰富,有的部分涉及到的细节很多,如硬件知识和数据结构知识等,自学时不可能面面俱到,否则必然会顾此失彼,反而抓不住主要矛盾。笔者认为对初学C语言的考生,开始不必在每一个细节上过于死抠,而应当把主要精力放在最基本、最常用的那些部份,待有一定的基础后再深入到一些非主要的细节,有一些细节需要通过较长期的实践才能熟练掌握。初学C语言时,可能会遇到有些问题理解不透,请不要气馁,鼓足勇气向后面的内容学习,待学完后面的章节知识,前面的问题也就迎刃而解了。学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是学习的人最不易做到的,然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。

下面我们就围绕《C语言》的特点、以98年全国等级考试大纲为基础,把里面的重点和难点,从宏观和微观两个角度,就如何学好这门课程提供一些建议和方法,供大家学习时参考。

首先从宏观上谈一谈自学C语言的方法。

我认为要学好C语言首先必须了解等级考试C语言的大纲和内容,以及各种辅助材料的用途,这是学好C的基础。从以前的经验以及考网上的一些信息可知,要自学C语言必须准备以下资料:

1、 教材:大家现在都公认是清华大学谭浩强主编的那本,当然有其他的也可以,如高校出版社的。

2、 习题集:我认为清华大学的《C语言样题汇编》不错。书后面附有答案。

3、 上机练习:我认为南开大学的那个可以,最好是在考前从头到尾做一遍。答案可以去考网下载区下载。

4、 大纲:这个肯定要的,可以在考网二级版那里去下,然后打印出来。

5、 自学计划:为了做到有计划有目的地学习C语言,大家可以根据自己的学习(或工作)情况,制定一个自学计划,循序渐进地学习。

6、 模拟盘:为了更好地熟悉考场环境,下一个模拟盘是必不可少的,可以在http://studywang.yeah.net/。下载,注意,在下载时要把锁匙盘一起下回来,否则不能进入考试环境。

7、 教学光盘:如果能买到C语言的教学光盘,那当然更好,这样可以更直观地学习C语言了。

下面从微观上针对C语言的几个重点和难点,逐个谈谈具体的自学方法。

二 如何学习C语言的运算符和运算顺序

C语言的运算功能十分丰富,运算种类远多于其它程序设计语言。因此,当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。

初学者往往对此感到非常困难,觉得C语言学习太繁杂,其实只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。

下面是所有的运算符按优先级不同分类列表:(对不起,因为表格显示不正常,已被我删除大家可以看书上的)

表中列出15种优先级的运算符,从高到低,优先级为1 ~ 15,最后边一栏是结合规则,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。

下面我们通过几个例子来说明:

(1) 3*20/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算3 * 20=60,然后被4除,结果为15,最后是%(求余数)运算,所以表达式的最终结果为15%10 = 5

(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;

例子中的“;”是C语言的语句分隔符,执行顺序为从左到右,第1条语句执行后a的值为3,第2条语句执行后b的值为5,第3条语句中有两个运算符前置+ +和*,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值为20,最后执行第4条语句,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。

这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20。

(3)a = 3,b = 5,b+ = a,c = b* 5

例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40。

三、如何学习C语言的四种程序结构

(1)顺序结构

这种结构的程序比较简单,就是按照语句的排列顺序依次执行的机制。顺序结构的执行顺序是自上而下,依次执行,因此编写程序也必须遵守这一规定,否则你的程序执行结果就不对。

例如;a = 3,b = 5,现交换a,b的值,正确的程序为:

c = a;

a = b;

b = c;

执行结果是a = 5,b = c = 3如果改变其顺序,写成:

a = b;

c = a;

b = c;

则执行结果就变成a = b = c = 5,不能达到预期的目的,这是初学者常犯的错误。

顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径R,计算S = 3.14159*R*R,输出圆的面积S。而大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的块体、循环结构中的循环体等。

C语言自学方法(2)

(2) 分支结构

分支结构与顺序结构不同,其执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。

分支结构适合于带有逻辑条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

学习分支结构不要被分支嵌套所迷惑,只要弄清基本的分支结构,嵌套结构也就不难了。嵌套只不过是分支块体中又包括分支语句而已,不是新知识,只要你基础知识扎实,分支嵌套也难不住你,下面我们重点讨论几种基本的分支结构的学习方法。

①If(条件)

{



}

这种分支结构中的块可以是一条语句,此时“{

}”可以省略,也可以是多条语句。它有两条分支路径可选,一条是条件为真,执行块,另一条是条件不满足,跳过块。

如,计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0)

x=-x;

②if(条件)

{块1}

else

{块2}

这是典型的分支结构,如果条件成立,执行块1,否则执行块2,块1和块2都有1条或若干条语句构成。

如:求ax^2+bx+c=0的根

分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:

d=b*b-4*a*c;

if(d>=0)

{x1=(-b+sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);

}

else

{r=-b/(2*a);

i =sqrt(-d)/(2*a);

printf(“x1=%8.4f+%8.4fi\n”r, i);

printf(“x2=%8.4f-%8.4fi\n”r,i)

}

③多路分支:其语句格式为:

if(条件1) {块1};

else if(条件2) {块2}

else if(条件3) {块3}

……

else if(条件n) {块n}

else {块n+1}

④switch语句:

switch

语句也是多分支选择语句,又称为多路开关语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if—else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。

(3)循环结构:

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。

四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提昌用goto循环,所以下面我们重点讲解另外的三种循环。

常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,大家好好看一下书中三种循环的格式和执行顺序,如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。

注意:在while和do—while循环体内和for

循环中的第3语句中,应包含趋于结束的语句(如I++,I--),否则就可能成了一个死循环,这也是初学者的一个常见错误。

下面我们来讨论下这三种循环的异同之处:

用while和do—while循环时,循环变量的初始化的操作应在循环体之前,而for循环是在语句1中进行的;while

循环和for循环都是先判断表达式,后执行循环体,而do—while循环是先执行循环体后判断表达式,也就是说do—while的循环体最少被执行一次,而while

循环和for就不一定了。这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,不能用break和

continue语句进行控制。

这三种结构并不是彼此孤立的,在循环中可能出现分支、顺序结构,分支中也可能出现循环、顺序结构而把循环、分支看成一个语句,它又是构成顺序结构的一个元素,因此这三种结构相互结合,就能实现各种算法,设计出解题程序,但若是很大的题目,这样编出的程序往往很长,重复结构多,并且可阅读性差,因此我们常将C程序设计成模块化结构。

(4)模块化程序结构

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个合法的C函数,然后用主函数调用函数及函数调用函数实现一大C程序:C程序=主函(main)+若干个函数。

在程序设计中,常将一些常用的功能模块写成函数,也可以将大程序段分割成若干函数,前者目的在于减少重复编写程序段的工作量,后者目的在于缩短模块长度,以便程序阅读方便。

一个源程序文件由一个或多个函数组成,它是一个编译单位,而一个C程序由一个或多个源程序文件组成。对较大的程序,往往分成多个文件,这样可以分别编写、分别编译,提高高调试效率,一个源程序文件可以被多个C程序公用。

C程序的的执行是从main()函数开始,调用其它函数后流程回到main函数,在main中结束整个函数运行,main函数的称是系统规定的,用户可以修改其内容即函数体,但不能修改其名称和参数,一个C程序必须有一个main函数,也只能有一个main函数。

所有函数都是平行的,即在定义函数时是互相独立的一个函数度不从属于另一个函数,即函数不能嵌套定义,但可以互相调用,但不能调用main函数。

函数分成两类,即标准函数和用户自定义函数,标准函数又称库函数,由系统提供,用户可直接调用,C语言提供了丰富的库函数,请考生在编写C程序时查阅教材后的函数说明,这可节省你的编程工作量;用户自定义函数由编程者自己编写。

我就说这么多了,祝您自学成功!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-08-14
学C语言前至少要有计算机基础知识功底,至少你要知道你为什么原因学C语言.学高数和C语言说不上直接联系,但数学学得好,可以锻炼你的思维反应能力,这对学C语言有很好的帮助,同时学C语言要好良好的空间想像能力.你可以去找一下谭浩强编写的C语言教程,书名我忘了

谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为C语言并非是“difficult(困难)”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C语言或者说学习C语言应从哪几方面着手。

一、明确学习目的:
◆ C语言功能强大,本书涉及知识结构全面、合理。是一门非常好的编程语言基础语言。
◆ C是一门学习逻辑、程序算法、算法实现很好的教程。通过第一学期C语言的学习,从而可以了解程序的设计编码的过程。
◆ C是一单进程、单线程执行,从头到尾执行,学习难不小。但结构严谨的高级语言,可以很好学习编程规范和要求。
◆ C语言是为以后学习其它语言打下基础的语言。

二、好的学习方法:
基于上述学习目的并且也我们第一门编程语言。学习方法是:
◆ 课前预习,课后复习,认真做课堂、课后的作业,理解理论知识。
◆ 记住语法规则。
◆ 加强逻辑思维。
◆ 多动手,通过练习上机了解它的运行过程。
◆ 实践—>理论—>再实践,刚开始学习C语言时,按示例练习,并推动理论的学习,然后再自己多思考,多上机实践。

常见问题:

1、有同学听说C语言很难,刚学习到第二、三章时,于是说:老师,我不会呀!真的很难。我不知道如何学习?
分析:
1)心理作用,在没有学习之前都认为很难了。学不会也正常。
2)前三章是基础,对于没有学习过编程语言的同学来说,新的专业名词很多。
3)前三章是基础,还不能完整的写出一个C程序。于是,就不知道如何去用,在哪个时候用等很多的疑问。

问题的存在:过于着急,对新的事务领悟不够。
解决方法:学习是循序渐进和积累的过程,不要着急。这此知识都是为以后作铺垫的。

2、有同学学到数组时,说:听你上课时,我懂,但要我自己写,我不知道如何写?不知道如何开始?
分析:
1)逻辑性思想太乱。如果问:“如果班上有30个同学,要判断成绩是否及格,你将如何做?”;“当然先知道每个同学的成绩,然后一个一个和60比较,如果大于等60,则及格,否则不及格。”;“那么C语言来实现,如何做?”。声明30个变量存储成绩?不是一个好办法。如果声明一个30元素的数组,是不是更合理。另外,如果要写30个条件语句来判断,也太过于繁锁。如果用for循环是不是更加合理。
2)练习太少,有解决方法,但不能用C语言实现。

问题的存在:思路不清淅,练习太少。
解决方法:多上机练习,多思考,举一反三。了解程序的运行过程和编码。

三、学习要点和重点:
◆ 第一章至第四章的:基础知识和理论知识必须要求能理解、领悟。也是学习其它语言的基础。
◆ 第二章、第三章提到很多的专业名词,如数据类型,变量与常量的区别,标识符的命名规则,表达式及各种运算符及输入输出函数基础
◆ 五章和第六章:程序的基本结构,学习完前六章,要求能理解程序运行和编码的过程。
◆ 将我们的算法用编程语言来实现,主要是学习程序设计的逻辑性。也是学习其它语言的基础
◆ 第七章到第十一章:学习C语言的特色,更深入了解C语言。本章让学员加强空间的想象力。
◆ 第十二章:是文件的操作。考虑的是如何将程序的输出结果及相关信息用文件记录下来。

四、学习难度:
◆ 与日常的自然语言的表达不完全相同,所有结果要通过计算才能得。计算机没有想像能力和空间思维能力。计算机能运行,依靠程序员的严谨的命令来驱动。
◆ 语法格式多,知识点全面。应用时,要将零散的知识点有效有序的组合。
很多问题的解决方法是需要经验的。
第2个回答  2007-08-14
自学入门是比较简单的。因为C语言的符号化等,使其与pascal等语言相比更易懂(只要你数学还将就)。

以下这些书是我的自学历程:《标准c程序设计》(《Programming in ANSI C》),这本书是印度大学的计算机教材,其英文版通俗易懂,贴近生活。
然后是《C++完全参考手册》,同样建议看英文版的。
本人现在上高一,在5个月的时间里已经学完了C的所有基础部分(个人感觉还不错)以及C++的类和对象、异常处理等等,其中每天大概只自学了1小时左右。现在在学《MFC程序设计》,同样是英文版的,应该还不错吧。
希望以上这些书对你有所帮助。

至于这些书怎么用,就看你的了,看你为什么而学。
如果你为竞赛而学习,那么,你只用看第一本书,然后再学算法就够了;
如果你想向编程专业进发,那么,应该说以上这些东西远远不够,学无止境啊;
如果仅仅是兴趣,那就看你的了;
如果为计算机考级,那么,恭喜你,以上这些书完全不会适合那些刁钻的考题,还是买本国内教材啃吧(可怜的娃娃)。

此外,学编程是一件很辛苦的事,虽然我现在没有怎么感到,但当你面对一大堆代码,要找错时,那感觉的确让人抓狂。要学编程,一定要有足够的兴趣和恒心,否则三天打鱼两天晒网,顶多就学个皮毛。

学习编程还忌讳过于求甚解,感觉这方面通常是国内教材给学习者的误导。看不懂的地方(只要不是主体知识点,主要指那些例子中的程序),不妨跳过,或者过几天再想想。

上机操作也很重要,“纸上得来终觉浅,绝知此事要躬行”嘛。

同时,要养成察看编程软件相关帮助文件、遇到问题用debug查看的习惯。

最后,祝你成功。
第3个回答  2007-08-14
这个不能太绝对地下评论。
我是高三时自学的,学了4章,很容易,讲的都懂,第五章开始糊涂了,有很多问题。

如果自学的话要有恒心,对于C语言,还要多上机练习,看懂的程序不一定会编写,有时你可以读懂程序,但让你写一个就会漏洞百出。所以要经常练习和比较。
另外,最好有朋友能帮你解决一些学习的疑问,这样学习就比较容易了
第4个回答  2007-08-14
C语言是一个实用性很强的语言。你如果想要学好它,就得下一翻功夫。可是大多数人都认为它太难学了。所以就没有认真的学,也当然学不好了。即使是学计算机的学生也不能把它学的很好,这是因为他们没有掌握学习这门语言的方法。我也是一个学计算机的人,我用C语言过了全国计算机等级考试。所以我有一些心得,想和大家分享。

首先你要有一个正确的态度,没有一个正确态度的人是学不好任何东西的。你如果真想学好C语言的话,你就要做好好好学它的准备,不要三心二意。

其次,你要了解你学这个语言的目的。你是想过计算机等级考试呢?

还是想真正想用这一门语言。这就有很大的区别,这决定你学习的程度。

再次,你要了解你需要的教材。什么样的教材才是适合你。你要认真的选,不要太随意了。因为不同的教材程度不同,也不一定适合你。

然后,就是学的问题了。你做好了上面的准备,就好好开始学了。可是学好一门语言,一个好的方法很重要的。你要从整体上来理解C语言,认识到C语言的优势,还有C语言的特点。C语言是面向过程的一门语言,特别强调各个程序的关系。像程序之间的调用,这是很平常的。

一门语言的基础部分不过是一些关于数的类型,字符的类型的定义。你只要认真看不难明白的。不过最好的方法还是上机调试。在这一阶段做一些简单的程序。来明白C语言的编程环境,数字的类型。这样理解起来会更快些,也比较容易记忆。

后来,就是学习一些过程语言的基础的模式。顺序,循环,选择这些东西。这些东西都是一些活的东西,千万不要死记硬背,这是没有用的。在这一阶段,你可以编一些比较简单的程序。像数据的计算,成绩的判定等等。

随着学习的深入,你会发现C语言有许多东西很有趣的。这样学习不再是一个多么难的事了,而是一件快乐的事。最后C语言和任何一门语言一样需要多上机调试,多动脑。C语言的基础部分很快就会掌握的。

最好的书是清华,谭浩强的 C语言程序设计