1. c语言学啥
[编辑本段]定义
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。
常用的C语言IDE(集成开发环境)有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C等等......
[编辑本段]C语言的发展历史
C语言的原型ALGOL 60语言。(也称为A语言)
1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。
1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。
1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。
而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。即是着名的ANSI C。
1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合着了着名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C 语言,后来由美国国家标准协会(American National Standards Institute)在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。
1988年,随着微型计算机的日益普及, C语言出现了许多版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准3.C语言的主要特点 。C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多着名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。
[编辑本段]C语言的优点
1. 简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
2. 运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3. 数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4. C是结构式语言
结构式语言的显着特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5. C语法限制不太严格,程序设计自由度大
虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。
6. C语言允许直接访问物理地址,可以直接对硬件进行操作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
7. C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
8. C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。
[编辑本段]C语言的缺点
1. C语言的缺点主要是表现在数据的封装性上,这一点使得C在数据的安全性上做的有很大缺陷,这也是C和C++的一大区别。
2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。
[C语言指针]
指针就是C语言的一大特色,可以说C语言优于其它高级语言的一个重要原因就是因为它有指针操作可以直接进行靠近硬件的操作,但是C的指针操作也给它带来了很多不安全的因素。C++在这方面做了很好的改进,在保留了指针操作的同时又增强了安全性。Java取消了指针操作,提高了安全性。
[编辑本段]C源程序的结构特点
1.一个C语言源程序可以由一个或多个源文件组成。
2.每个源文件可由一个或多个函数组成。
3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。
4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。
5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。
6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
[编辑本段]学习C语言
在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习,又谈何学的好?
学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。
那么,我们如何学好《C程序设计》呢?
一.学好C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序.
二.学好C语言的四种程序结构
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如;a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: 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。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(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;
x2=(-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}
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。
④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。
(3)循环结构:
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do ?Cwhile循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
在学完这三个循环后,应明确它们的异同点:用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程序=主函数+子函数。 因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。
三.掌握一些简单的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义
结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学
C源程序的关键字---------------------------------------------------------------------------------------
所谓关键字就是已被C语言本身使用, 不能作其它用途使用的字。例如关键字不能用作变量名、函数名等
由ANSI标准定义的C语言关键字共32个 :
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。
1 数据类型关键字
A基本数据类型(5个)
void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
char :字符型类型数据,属于整型数据的一种
int :整型数据,通常为编译器指定的机器字长
float :单精度浮点型数据,属于浮点数据的一种
double :双精度浮点型数据,属于浮点数据的一种
B 类型修饰关键字(4个)
short :修饰int,短整型数据,可省略被修饰的int。
long :修饰int,长整形数据,可省略被修饰的int。
signed :修饰整型数据,有符号数据类型
unsigned :修饰整型数据,无符号数据类型
C 复杂类型关键字(5个)
struct :结构体声明
union :共用体声明
enum :枚举声明
typedef :声明类型别名
sizeof :得到特定类型或特定类型变量的大小
D 存储级别关键字(6个)
auto :指定为自动变量,由编译器自动分配及释放。通常在栈上分配
static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
register :指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
extern :指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的对象的一个“引用”
const :与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
volatile :与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值
2 流程控制关键字
A 跳转结构(4个)
return :用在函数体中,返回特定值(或者是void值,即不返回值)
continue :结束当前循环,开始下一轮循环
break :跳出当前循环或switch结构
goto :无条件跳转语句
B 分支结构(5个)
if :条件语句
else :条件语句否定分支(与if连用)
switch :开关语句(多重分支语句)
case :开关语句中的分支标记
default :开关语句中的“其他”分治,可选。
C 循环结构(3个)
for :for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件
do :do循环结构,do 1 while(2); 的执行顺序是 1->2->1...循环,2为循环条件
while :while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件
以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。
2. C语言怎么学习啊
C语言是一种非常优秀的程序设计的入门语言。它比其他大部分语言都简洁易学,所以在开始使用C语言编写真正的应用程序之前并不需要学习太多语法。C语言也是功能相当强大的语言,很多操作系统都是用C语言编写的。大多数计算机环境都支持C语言,因此当你学会了C语言后,你将有能力在各种环境下进行程序设计。
是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。下面我们通过几个例子来说明:
(1) 5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
对于c=++a*b来说,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于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。
(4)a=5;b=6;c=a>b?a:b;
例中的a>b?a:b是一个三目运算,它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if…else…语句的简单应用。
二.学好C语言的四种程序结构
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: 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。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(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}
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。
④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。
(3)循环结构:
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
在学完这三个循环后,应明确它们的异同点:用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程序=主函数+子函数。 因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。
三.掌握一些简单的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a)与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下:
for(i=1;i<=9;i++)
for(j=i+1;j<=10;j++)
if(a>a[j]
{temp=a;
a=a[j];
a[j]=temp;
}
结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学。
参考资料:http://www.kudonet.cn/forum/ultimatebb.cgi?ubb=get_topic;f=15;t=000968
3. 计算机专业课C语言该怎么学好
学好C语言的语法 无它,看书并记忆,加上机练习。有很多考三级的朋友都学过其它程序语言,如VB,很容易受它们习惯的影响,在写程序上经常忘记C语言中的分号、小括号、大括号的运用,导致很多人看着答案编程老是出错,检查半天不知哪里错了,大呼小叫“我按照答案输进去的,为什么提示错误,对了N遍,不知哪里错了”,所以一开始就要养成良好的习惯和细心。特别注意的是为什么说上机练习很重要,原因就是在纸上写的,语法错了不知道,学好C语言的运算符和运算顺序 这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。 掌握一些简单的算法 编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。 c的心得 英语基础好的话看英文版,翻译过来的有些味道没了. 1.目的要明确 首先确定自己的目的,是为了以后就从事程序设计职业,还只是为了应付考试,还是为了学习更多的知识而希望打下好的基础。 2.书籍的选择 既然确定好了目的,选择书籍是很重要的,这里的内容供你参考一二。 前面已经说过了,目的要明确,而书籍是根据目的进行选择的。 用最笨的方法学习 买来了书,剩下的内容就是学习了。方法?最笨的方法就是最有效的方法,其实学习C语言的方法就是反复阅读上面的书籍(当然了,为了应付考试的还要背诵一些内容),读一遍不懂可以读第二遍,直到读懂为止。如果你需要捷径,你可以问问Eris研究了多少年的C语言。 多做练习 别怕累,每本书都配有大量的练习,这对你理解当章的内容有很大的帮助,没有答案怎么办?不是有输出范例吗?把它在你的C编译器上进行编译,看看出来的结果和你需要的是否一样,反复尝试,直到得出正确的结果。由于每章学到的内容不同,你可以再学完后面的内容后,重新改进原来的C程序,不知不觉中,你的水平已经有了很大的进步。不要有了问题就问,你可以先放在一边,等你学完下面的章节,你可能将前面的问题已经解决了呢!.读程序,写程序 经过上面的步骤,你已经能轻松解决书中的问题了,现在你就应该上网了,上网去读人家的程序源码,把你的想法写上去或者再写出新的程序,直到有了自己的一套风格。
记得采纳啊
4. c语言入门教学
楼主,你可以去编程入门网,那里有挺多知识点的,很多语言都有,很适合初学者,你也可以去CSDN,那里有很多源代码提供下载,也有论坛,呵呵,你也不要忽视网络贴吧,知道,贴吧是学习很多课本没有东西的地方,知道,你需要看解决答案,这样很有收获,你也可以去中国编程网,不过,我觉得一楼也是有道理的,看看书掌握知识点,网上我觉得主要还是提高的地方哦……呵呵……关于怎么学,我是这么过来的,每看一节书,做一节课后习题,其实初学主要还是学习语法和算法(解决问题的方法),多上机自己写程序,写不出来看答案的算法,自己再写一边,关键这个阶段还是积累为主,基本知识学好了,可以学深入编程,不过你需要有熟悉的语法,可以写一些小程序:学生成绩管理系统等等,就过关了,然后可以学习链表,图像编程,等等高级编程……呵呵……努力一定有回报的……加油吧…
5. c语言怎样深入学习
多看书:谭浩强《C程序设计》、C创造者的《C程序设计语言》、《C陷阱与缺陷》、《C专家编程》(经典)、《C程序员成长攻略》、《算法导论》、《数据结构》等等;
多读代码;多抄袭代码;多动手;多浏览相关网站;多问;另外还要了解一些电路方面的知识,会看SCH和PCB电路,反复阅读相关芯片资料,多做相关方面的开发工作,积累工作经验,光看是不行的,必须亲自冻手设计,初学者可以用开发板来学习,用人家的例程。
努力就会成功!祝你早日入门啊!
6. 什么是C语言
C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多着名的系统软件,如DBASE Ⅳ都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。
C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多着名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。
1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
2.C是结构式语言。结构式语言的显着特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。
5.C语言文件由数据序列组成,可以构成二进制文件或文本文件 常用的C语言IDE(集成开发环境)有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++ ,Borland C++ Builder,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc 等等…… 对于一个初学者,Microsoft Visual C++是一个比较好的软件。界面友好,功能强大,调试也很方便。
学习C语言
在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺的。大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习,又谈何学得好? 学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。
掌握一些简单的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义 结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学 。
7. 想深入学习C语言,却不知怎样学起,请帮忙推荐相关书籍或方法
初学C语言程序设计的基本方法和技巧
C语言是一门应用最广泛的基础高级编程语言,有很多语言都是由它发展而来的,所以学习好C语言之后再学习任何一种编程语言都会轻松上手。
1 熟记基本知识点
学习C语言和学习任何一种语言的方法基本一样。我们婴儿期间咿呀学语时,从一个字开始学,然后两个,接着更多,最后我们能成句,成段,到出口成章。学习C语言的时候也一样,有些最基本的内容必须要记下来。
1.1 关键字
关键字是由C语言规定的具有特定意义的字符串。它们是写C语言的基础,如果关键字不记下来,那编程是寸步难行。
1.2 运算符
C语言中的运算符和表达式与我们数学上的运算符和表达式有相同的,也有不同的。我们在学习的时候就注意记住并弄清楚那些不同的地方。基本的语法表达式及执行过程。选择结构中的if语句和switch语句。循环语句中的for语句、while语句和do-while语句。这部分就好比是你会了许多词,然后得把这些词组成一些句子,语法的作用就是告诉你怎样说好一句话,表达清楚的意思。
1.3 常用库函数
在这里最重要有两个函数:输入函数scanf()和输出函数printf()。一个程序如果没有输入,那无论运行多少次结果都一样,那也就失去了写程序的目的了。同样一个程序如果没有输出,那运行程序有什么意义呢?当然输出的形式比较多。在初学C语言的时候主要是从屏幕上输出结果。所以这两个函数的使用方法也必须要掌握。这两个函数已经定义在stdio.h这个头文件中,不用我们自己写,它们不是C语言中的语句,所以在使用这两个函数时在源程序顶部一定要加上#include 。这是为了让我们在执行程序的时候,让计算机知道scanf()和printf()这两个函数怎么用。
掌握上面的必须要记下来的内容,相当于我们开始学说话时先听别人说,我们自己跟着学一些最基本的日常语言。这时我们就可以从一些简单的程序开始读,能把每一个程序的运行结果能自己读程序准确地执行出来,那样我们就可以开始来编写程序了。
2 掌握程序的基本结构
编写程序一定要注意程序的结构性。学习写程序,不能开始就写代码。许多人在动手写程序的时候感到无从下笔。原因主要是:看到一个题目不知道如何去分析,它怎么才能变成一个程序呢?这是初学者在编写程序的主要问题。我在教学中采用了一种分步式的方法。
2.1 看到一个题目的时候先别想着编程序,用一个具体的实例想想不用程序你是如何解决这个问题的
例如输入三个数,输出最小值。我们用3,8,6三个数来考虑,我们一看就知道3是最小的。可是我们这一看中其实并不简单,其中有判断。我们先看第一个数3,然后已经记在我们头脑中了,再看第二个数8,3比8小,那我们还是记住3,再比较第3个数6,最后确定3是最小的。我们现在就是要把我们头脑中很快闪过的这些判断过程想清楚。
2.2 我们要弄清楚一个程序由哪些部分组成
这就好比我们写一篇文章也有一些结构。一个C程序也有其一般结构,我把它归纳成下面格式。
#include
main()
{
定义变量;int,float,char,double
输入数据;键盘输入scanf();
直接赋值;例如x=3;
处理数据;if-else;switch;for;while;do-while;
输入数据;printf();
}
第一行代码表示把标准的输入输出头文件包含在这个程序中。第二行代码是C程序的主函数,每个C程序中必须有且仅有一个main()函数。然后是函数的一对“{}”。
定义变量的意思好比买一块地,有了这块地就可以在上面盖房、种庄稼之类的。但是为了便于统一管理,比如城市已经规划好了,你在郊区买的地就只能种庄稼,在市中心买的,就只能盖房,这就是变量类型的含义了。用上面求最小值的例子。我们在三个数中求最小值。这三个是什么数,是整数还是小数?这就必须用变量类型来说明。对于上例应该定义三个整型变量用来存放三个整数,还要定义一个整型变量用来存放最小值。如:int a,b,c,min;这行代码的作用其实是要了一块内存,然后在这块内存里存东西。因为我需要一个整数,所以就用int这个关键字来声明(相当于用这块地干什么)。那么变量a,b,c是什么呢?你买了一块地,总要知道这块地在哪是吧?不然就白买了,变量就是这样一个作用。我们需要把数据存在计算机中,什么样的数就定义什么样的类型,需要存几个数就定义几个变量。
输入数据有两种方法。第一种从键盘输入,就需要用到scanf()这个函数;第二种是直接赋值。
处理数据是对于初学者来说最难的一部分,也就是把我们刚才分析过程转换成语句。这需要学好C语言的三种程序结构。
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。顺序结构可以独立使用构成一个简单的完整程序,不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(2)选择结构
对于要先做判断再选择的问题就要使用分支结构。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。选择结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据条件的结果选择对应的分支语句。选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
例如上例中,把我们头脑中很快闪过的这些判断过程画成流程图即图1:
由上面的流程图再写出对应的语句就比较容易了。如下所示:
min=a;
if(min>b) min=b;
if(min>c) min=c;
学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的部分,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。
①if(条件)
{ 分支体
}
这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x;
②if(条件)
{分支1}
else
{分支2}
这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求某年的年号是否是闰年。
分析:因为当某年号能被4整除但不能被4整除但不能被100整除,则这一年是闰年;或者这一年号能被400整除也是闰年。即year%4==0&&year%100!=0||year%400==0
其程序段如下:
if(year%4==0&&year%100!=0||year%400==0)
printf(“%d is leap year!”,year);
else
printf(“%d is not leap year!”,year);
}
③嵌套分支语句:其语句格式为:
if(条件1) {分支1};
else if(条件2) {分支2}
else if(条件3) {分支3}
……
else if(条件n) {分支n}
else {分支n+1}
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用switch语句。
④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。
(3)循环结构
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供三种循环,即while循环、do while循环和for循环。三种循环可以用来处理同一问题,一般情况下它们可以互相代替换,另外还有一种goto循环语句,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,所以不提倡使用。
常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,就能更好地理解它们的作用。在分析循环结构的语句时要开清楚,什么时候开始循环(即循环的初始值);什么时候结束循环(即循环的终止条件);循环的时候都做哪些操作(即循环体的执行部分);特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。
顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。输出数据是每一个程序必须包含的部分。在C程序中的输出通常是从显示屏上输出最后的结果,使用printf()这个函数。
3 掌握一些简单常用的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就好比我们学习写作文段落的时候都有一些经典的好词好句,可以使文章添彩。同样程序虽然可以实现各种功能,但最基本的一些算法并不是特别多,我们掌握一些简单的算法,在掌握这些基本算法后,根据不同的问题,再灵活应用。如百钱买百鸡的问题,就是用100元钱买100只鸡,公鸡5元一只,母鸡3元一只,小鸡1元三只。这种问题用数学方法可以列出方程:
x+y+z=100
5*x+3*y+z/3=100
按数学方法三个未知数两个方程无解,实际上是可以解的,如果把公鸡,母鸡和小鸡可能的只数全部代入到方程中检验就可以得到最后结果。这种方法叫穷举法。如果我们用手算那可能要花上半天的功夫,但让计算机来算就只需要1秒种。使用算法后分析和处理问题都会简单很多。当我们能熟练地掌握了简单算法后就能实现一些比较复杂的编程问题了。
任何程序只要有思维,有想法,那么实现程序时就不会觉得无从下手。而要学习这种思维方法就是多做题,多读程序,学习别人好的思维方法,多想想一个程序还可不可以有另外一种方法来实现它。这样久而久之,自然会形成一种自己的思维方法。因此我认为不管学什么语言都是这样。
4 培养良好的编程习惯
培养良好的编程习惯要从第一行代码开始,这也是学好C语言的重要因素。例如编写程序时用缩进的方式、写注释、程序写到一定的阶段时要做一下测试等。这些工作可以帮我们在调试程序时有很大的帮助。程序代码实现后,错误是难免的,所以也要锻炼自己的调试查错能力,而良好的编程习惯可以使我们在调试时减小工作量和提高调试效率,也有助于形成自己的编程风格。
C语言教学探讨
注重编程细节,培养编程技巧
C语言的规则颇多,编写C程序得严格按照其规则进行程序设计,对初学者而言,常常马虎大意,所编写的程序不能正常编译和执行结果,从而打消学生的学习积极性。因此在教学初期,教师必须强调C的许多细节问题,让学生的这种不良习惯扼杀于“萌芽”状态。如学生常常在写程序时出现以下问题:
3.1 字母大小写问题
C语言程序严格区分字母的大、小写,此规则一定给学生讲清楚,让其记住那些特例。如用科学计数法表示浮点数中的“E”,弄清该计数法的规则,其中的字母“E”可以不区分大、小写;再如表示16进制数的符号“0x”,其中字母“x”也可不区分大、小写等等,在教学过程中,对该类问题进行总结、归纳让学生一次就掌握并记住。
3.2 标点符号问题
学生在录入程序时,往往忽略标点符号。问题主要表现在:
(1)忘记录入标点,C语言中,一条语句的结束需要用符号“;”与另一语句隔开,对初学的学生,他们通常会忽略掉这个细节问题,这需要教师在讲授中明确地指出,让学生弄清楚。另外,强调不同标点符号的作用和区别,如“;”和“,”等等。
(2)标点录入错误,在录入程序时,很多学生录入的标点是不正确的。如分号“;”和“;”是有区别的,前者为中文下的标点符号,而后者才是程序中需要的。必须给学生强调程序中所需要的标点符号都应该是英文状态下的。
3.3 容易混淆的符号
字母符号“o”,“O”与数字符号“0”;字母符号“l”与数字符号“1”;字母符号“z”与数字符号“2”的区别等等。
对于少数学生,教师虽然强调了很多的细节,但还是不能接受,这便通过程序的调试来让他们明白问题的严重性,通过他们自己对程序的调试来纠正问题的所在,这需要教师耐心地为学生指导。如程序xx.c:
#include <stdio.h>
void main()
{
int a=10
printf("a=%d\n",a);
}
编译时出现以下问题:xx.c(5) : error C2146: syntax error : missing ';' before identifier 'printf',给学生讲解提示,让学生通过提示明白问题所在,即该程序第5行的printf语句前缺少“;”,这是学生自己通过实践证明了问题的所在,使之深受体会。通过程序调试的方法不仅可以为学生解决错误,同时也增强了学生调试程序的能力,从而提高编程的经验和技巧。
4 明确教学目标,任务驱动学习
教师深入分析教学大纲, 在全面了解学生的数学基础知识状况的前提下, 根据大纲制定好教学计划,做好每次教学任务计划,明确教学目标,选择适当的练习作业,督促学生不断深入学习。
在制定计划的过程中要针对学生的数学知识基础, 将教材中涉及到的学生未掌握的数学知识类例题进行更换, 避免因数学的方面的问题形成教学障碍, 在课时允许的条件下也可在教学前为学生补充一定的数学方面相关知识。
设计“循环”语句教案时,可以先给学生讲清楚学习循环语句的用处及优点,介绍学习重点、难点,要求掌握一些程序设计的算法,让他们明确该语句的重要性。如实现求等差数列s=1+2+3+…+n的和时,主要介绍使用循环语句求解,并要求学生掌握其求解方法,并按照此方法推广,以掌握算法思想,然后再通过作业的任务编写垒加算法的相关程序,如求s=1!+2!+3!+…+n!等,学生通过自己的练习不断总结编写循环程序的经验,体会循环的思想,使得他们对循环语句有更深的理解和认识,从而达到较好的教学效果。
5 改进教学方法,实现教学相长
传统教学模式的教学方式是:用大量的时间讲定义、语法、概念、语句,对学生的要求是注重接受、理解、记忆,讲课方式是老师讲、学生听。学生掌握的知识比较抽象、机械、静止、片面和孤立,他们不知道如何灵活地综合运用这些知识去解决实际问题。基础知识固然重要,但利用基础知识解决实际问题能力的培养是高等教育更为重要的目的。如何使当前的大学生具备扎实基础知识的同时,又具备解决实际问题、批判性思维和创造性思维,发展合作能力与自主学习能力,是目前急待解决的问题,也是人们进行教学改革的思路。
注重问题求解方法,掌握算法思想。如实现求等差数列s=1+2+3+…+n的和时,该数列的求解方法有多种。除了使用循环语句求解外,还可以通过公式s=(1+n)*n/2进行求,也可以使用函数的递归调用进行求解。通过多种方法的介绍,不仅可以巩固学生的基础知识,又能培养学生的创造性思维。
在教学中一定要做到培养学生学习兴趣,让学生体验成功乐趣,改变学习方式,促进教学互动。
6 知识转变能力培养,注重实践课教学
计算机科学是一门经验学科与理论学科相结合的课程,在学习时,不仅要掌握理论知识,而且实践操作的经验的积累也非常重要。C语言变成实践经验的积累是不断从编写程序、调试程序和运行程序结果的过程中总结得出,由此,教师在讲授C语言课程时,不能忽视实践课的教学,尤其是学生上机辅导课的教学。
往往,很多教师认为,上机辅导课就是让学生自由练习,及时为有疑问的学生解决问题。实际上这种教学辅导方式是不合理的,应该在以下方面进行改进:
1)学生上机应有明确的练习目标,提高编程效率
在每学期的教学调查中,同学们总会提到这样的问题:上机课不知道该干什么;写程序无从下手;编程很难等。这就要求我们教师在上机课程中要有目的有意识的给同学安排上机的任务。应该从以下几点来进行上机课程:
(1)结合上课的理论知识,确定上机课要完成的目标。
(2)引入相关的程序实例,逐步分析解决该程序的思路和相关的程序代码。让学生了解如何下手去编写程序。
(3)根据引入的程序实例再扩展开,让同学们自己动手完成相关的程序代码。
(4)评讲相关的程序代码,并引出新的程序,让学生自己独立的完成。
(5)课程随时的课堂答疑。
2)激发学生的学习兴趣
学生学习的最关键的因素是兴趣,一定要注意提高学生学习的兴趣,如何提高是一个很关键的问题。首先要充分的肯定学生,即便是一点点值得肯定的地方也要肯定。其次多评价学生做的作业,让学生有一定的满足感。最后多让枯燥的程序与实际的生活联系起来。这样就可以大大的提高学生的学习兴趣。
7 小结
以上就是在学习和教授过程中,对C语言程序设计教学课程的心得体会,希望对广大的同仁能有一定的参考价值
C语言快速学习技巧(原创)默认分类 2010-03-14 12:09:53 阅读46 评论0 字号:大中小
从最基本的流程学起,从最基本的语句学起。在学习的过程中,特别注意每个函数的作用,多想想这个函数能怎样用,用在哪里,能起到什么另外的效果!要学会活用!程序,对数学,特别是逻辑的要求把比较高。写好程序,首先对整个程序的流程有缜密的思考,要求周到,准确,先思考,不要急着写程序!!这一点请注意!也就是说先算法,先研究程序的结构,是用什么来实现的,循环?分支?等等。然后再用语言来实现!语言只是编写程序的工具。所以学语言,先学会程序化的思想。在将算法翻译成语言的时候,再结合实际情况,逐步求精,有目的的修改,达到最优化。我们学院的C语言,很有特色,英文版,考试也是。我想说的就是,外文版的这本书,它在引领一个不懂编程的人,逐步养成程序、流程、逻辑的思想,是非常优秀的一本书。如果能字字句句阅读,将会很清楚领会到程序的思想。然而,书太厚,生词太多,时间太短。我的建议是,看某一本中文版的书,一本不够,看两本。先尽快学会程序的思想,也就是用程序来想问题,这样,就会编程了。然后,考试前几周,背一背生词、关键词,就可以考试了。如果你坚持要读外文版,可以,但要跳读!然后,还要看你是想只是应付期末考试,还是想学好编程。应付期末考,需要注意书中的重点,也就是考点,这样就够了。比如说字符型变量加指针,这样就够了,不需要更高级的指针的知识。而你如果想真正学好程序(我不说C语言是因为我说过C语言只是编写程序的工具之一),肯定是要打好基础的!任何一个细节,都是不能放过的!而且,这样的人往往会很郁闷~因为我们程序真正要求的,考试一般不会涉及到,因为比较难!(不会指针的人,永远不要说他会C语言!)而考试的内容,恰恰是最无聊的东西,比如格式化输出printf函数的第一个参数,太繁了,记都记不住。如果学的深的话,只需要知道有这么一个函数,有这么一个功能。而要用的时候,查书就行。可是对考试来说,显然不行。所以要看看你是哪一种~掌握一些简单的算法 编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a[i])与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a[i]与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下: for(i=1;i<=9;i++) for(j=i+1;j<=10;j++) if(a[i]>a[j] {temp=a[i]; a[i]=a[j]; a[j]=temp; } 结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学.
8. 学习C语言需要掌握哪些基本知识
1.入门程序
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
2.数据类型
数据类型:
1.基本数据类型:
1.1. 整型:int 4个字节
1.2. 字符型:char 1个字节
1.3. 实型(浮点型)
1.3.1.单精度型:float 4个字节
1.3.2.双精度型:double 8个字节
%d:十进制整数;
%c:单个字符;
%s:字符串;
%f:6位小数;
- #include <stdio.h>
- int main()
- {
- int age = 18;
- float height = 1.85;
- char unit = 'm';
- printf("小明今年%d岁 ", age);
- printf("小明身高%f%c ", height, unit);
- printf("小明现在在慕课网上学习IT技术 ");
- return 0;
- }
- #include <stdio.h>
- #define POCKETMONEY 10 //定义常量及常量值
- int main()
- {
- printf("小明今天又得到%d元零花钱 ", POCKETMONEY);
- return 0;
- }
表达式1 ? 表达式2 : 表达式3;
- #include <stdio.h>
- int main()
- {
- //定义三位数num,个位数sd,十位数td,百位数hd
- int num, sd, td, hd;
- //循环所有三位数
- for( num=100 ; num<1000 ; num++ )
- {
- //获取三位数字num百位上的数字
- hd = num/100 ;
- //获取三位数字num十位上的数字
- td = num/10%10 ;
- //获取三位数字num个位上的数字
- sd = num%10 ;
- //水仙花数的条件是什么?
- if(num ==hd*hd*hd+td*td*td+sd*sd*sd )
- {
- printf("水仙花数字:%d ", num);
- }
- }
- return 0;
- }
- #include <stdio.h>
- int main()
- {
- int i, j, k;
- for(i=1; i<5; i++)
- {
- /* 观察每行的空格数量,补全循环条件 */
- for( j=i ; j<5 ; j++ )
- {
- printf(" "); //输出空格
- }
- /* 观察每行*号的数量,补全循环条件 */
- for( k=0 ; k<2*i-1 ; k++ )
- {
- printf("*"); //每行输出的*号
- }
- printf(" "); //每次循环换行
- }
- return 0;
- }
- #include <stdio.h>
- int main()
- {
- int sum = 0;
- int i;
- for(i=1; i<=10; i++)
- {
- printf("%d ", i);
- if(i==3){
- goto LOOP;//满足条件就执行goto语句
- }
- }
- //执行goto
- LOOP:printf("结束for循环了...."); //请选择合适位置添加标识符
- return 0;
- }
形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值等办法使实参获得确定值。
在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
- #include <stdio.h>
- int getPeachNumber(int n) //这里要定义n,要不编译器会报错!
- {
- int num;
- if(n==10)
- {
- return 1;
- }
- else
- {
- num = (getPeachNumber(n+1)+1)*2;
- printf("第%d天所剩桃子%d个 ", n, num);
- }
- return num;
- }
- int main()
- {
- int num = getPeachNumber(1);
- printf("猴子第一天摘了:%d个桃子。 ", num);
- return 0;
- }
用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。
用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。
为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。
用extern声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。
- #includ <stdio.h>
- //来源公众号:C语言与CPP编程
- int main()
- {
- //定义外部局部变量
- extern int x;
- return 0;
- }
- int x=100;
数据类型 数组名称[长度n] = {元素1,元素2,元素3,......};
数据类型 数组名称[] = {元素1,元素2,元素3,......};
数类类型 数组名称[长度n]; 数组名称[0] = 元素1;数组名称[1] = 元素2;...... 注意: 1、数组的下标均以0开始; 2、数组在初始化的时候,数组内元素的个数不能大于声明的数组长度; 3、如果采用第一种初始化方式,元素个数小于数组的长度时,多余的数组元素初始化为0; 4、在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。
- #include <stdio.h>
- int main()
- {
- int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- int i;
- for(i=0;i<10;i++)
- {
- printf("%d ",arr[i]);
- }
- return 0;
- }
数组的冒泡排序
字符串与数组
char 字符串名称[长度] = "字符串内容";
char 字符串名称[长度] = {'字符串1','字符串2',....,'字符串n','
2.构造类型:
2.1.枚举类型
2.2.数组类型
2.3.结构体类型
2.4.共用体类型
3.指针类型:
4.空类型:
3.格式化输出语句
学好C++才是入职大厂的敲门砖! 当年要是有这课,我的C++也不至于这样
已失效
4.常量
值不发生改变的量成为常量;
定义字符常量(注意后面没有;)
5.运算符
5.1.算数运算符:+,-,*,/,%,++,--;前++/--,先运算,再取值.后++/--,先取值,再运算;
5.2.赋值运算符:
5.3.关系运算符;
5.4.逻辑运算符;
5.5.三目运算符:
6.水仙花数计算
输出所有三位数的水仙花数字
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数,如:153就是一个水仙花数,153=111+555+333。
7.打印正三角形的*
8.臭名远扬的goto语句
很少使用
9.形参与实参
形参:形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数;
实参:实参是在调用时传递该函数的参数。
函数的形参和实参具有以下特点:
10.函数返回值注意
注意:void函数中可以有执行代码块,但是不能有返回值,另void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为:return;
11.递归
12.变量存储类别 !
12.1.生存周期划分存储方式
C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。
静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。
动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。
12.2.存储类型划分
C语言中存储类别又分为四类:自动(auto)、静态(static)、寄存器的(register)和外部的(extern) ;
注意:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)
注意:只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;局部静态变量不能定义为寄存器变量。
13.内部函数外部函数 !
在C语言中不能被其他源文件调用的函数称为内部函数 ,内部函数由static关键字来定义,因此又被称为静态函数,形式为:
static [数据类型] 函数名([参数])
这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。
在C语言中能被其他源文件调用的函数称为外部函数 ,外部函数由extern关键字来定义,形式为:
extern [数据类型] 函数名([参数])
C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。 extern可以省略; 14.数组 数组:一块连续的,大小固定并且里面的数据类型一致的内存空间, 数组的声明:数据类型 数组名称[长度n]
15.数组遍历
冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序。
在C语言中,是没有办法直接定义子字符串数据类型的,需使用数组来定义所要的字符串,形式如下: