谭浩强高等教育出版社第3版_第1章C语言程序设计的概念_第1页
谭浩强高等教育出版社第3版_第1章C语言程序设计的概念_第2页
谭浩强高等教育出版社第3版_第1章C语言程序设计的概念_第3页
谭浩强高等教育出版社第3版_第1章C语言程序设计的概念_第4页
谭浩强高等教育出版社第3版_第1章C语言程序设计的概念_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章第一章 C C语言程序设计的概念语言程序设计的概念主讲人:韩维良2016/2/28一、学习目的一、学习目的1、通过这一门课的学习,掌握基本的C语言语法规则,学会编写一些常用的程序。2、通过一系列正规的训练,进一步培养用计算机解决问题的思维,掌握一些编程技巧。二、学习要求二、学习要求做好笔记,多练习,多模仿,抄程序,按时完成作业。机器要固定。第一节第一节 程序与程序设计语言程序与程序设计语言指令语句:指令语句:用来指挥计算机执行某个操作的命令语句。 如:稍息、立正程程 序:序:为了实现一定的目的而用计算机语言编写的一系列指令语句的集合。计算机通过执行程序来完成各种各样的工作。如:如:sum

2、=a+b;sum=a+b;一、计算机程序一、计算机程序程序(原始定义):程序(原始定义):按照一定的顺序安排的工作步骤。一种工具能够自动工作,一是要有记忆功能,能够记住程序;二是具有按照程序控制相关部件操作的能力。加法器程序加法器程序 #include main( ) int a,b,sum; scanf(“%d%d”,&a,&b); sum=a+b; printf(“sum=%d”,sum); 二、计算机程序设计语言二、计算机程序设计语言自然语言: 人与人之间进行交流的语言。计算机语言:是人和计算机进行信息交流的工具,人们可以使用计算机语言来命令计算机进行各种操作处理。 象自

3、然语言要遵循一定的语法规则一样,使用C语言编程时也要遵循一定的语法规则。三、计算机语言的发展三、计算机语言的发展1 1、机器语言、机器语言由0和1二进制代码构成,计算机可直接识别的语言。机器语言的指令由二进制数组成,直观性差,现在已经不用它直接编写程序。比如:10000000 代表一个加法10010000 代表一个减法2 2、汇编语言、汇编语言用一组容易记忆的符号代表机器指令,它的指令与机器语言基本上一一对应的。比如:ADD A, B 表示加法SUB A, B 表示减法机器语言和汇编语言都和机器硬件密切相关,称为面向机器的语言。3 3、高级语言、高级语言接近于人们习惯使用的自然语言和数学语言,

4、方便人们学习和掌握,又称为类自然语言。高级语言与机器硬件关联小,用它编写的程序通常不需要修改或只需进行少量修改就能用于不同计算机。第一种高级语言是FORTRAN语言,现在已经有数千种。常用的有C语言、FORTRAN语言、Basic语言、Pascal语言等。机器语言汇编语言高级语言面向过程面向对象四、高级语言的开发过程四、高级语言的开发过程高级语言程序不能被计算机硬件直接识别,必须把它翻译成机器语言程序才能被计算机执行。分析问题建立模型编写源程序编译链接执行程序第二节第二节 C C语言语言C语言是目前世界上公认的集表达能力强、灵活方便,应用面广,效率高、可移植性好等特点于一身的编程语言。可以用来

5、开发Windows、 Linux、 Unix、 MacOS等各大操作平台上的应用程序,广泛地被专业与非专业人员所使用。掌握C语言程序设计也是继续学习C+、Java等其他高级语言的必要前提。.简洁、紧凑,使用方便、灵活(37个关键字,9种控制语句);.运算符丰富(34种运算符);.数据类型丰富(整型、实、字符、数组、指针、结构体、共用体);.具有结构化的控制语句(if-else,while,do-while, switch,for等);.语法限制不太严格,程序设计自由度大。.C语言允许直接访问内存物理地址,能进行位操作,能实现汇编语言的大部分功能,可直接对硬件进行操作。.生成的目标代码质量高,程

6、序执行效率高。.可移植性好,能用于各种型号的计算机和各种操作。37个关键字:(auto break case char constcontinue default do double elseenum extern float for gotoif inline int long register restrict return short signed sizeof static struct switch typedef union unsigned void volatile while _bool_complex _imaginary注意:在C语言中,关键字都是小写的。 9种控制语句:

7、if( )elsefor( )while( )dowhile( )continuebreakswitchgotoreturnC语言有 9 种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。 34种运算符:算术运算符:+ - * / % + -关系运算符: = !=逻辑运算符:! & |位运算符 : | &赋值运算符:= 及其扩展条件运算符: ?:逗号运算符: ,指针运算符: * &求字节数 : sizeof强制类型转换:(类型)分量运算符: . -下标运算符: 其 它: ( ) -C语言数据类型长双精度型long doubleC数据类型基本数据类

8、型导出数据类型指针类型空类型void字符类型char枚举类型enum整 型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union文件类型函数类型第三节第三节 简单简单C C语言程序的构成与格式语言程序的构成与格式任何一种语言的程序都有其特定的框架结构,学习一种语言,首先应准确地把握它的框架。一、组成特点一、组成特点【例】在屏幕上显示出“Hello,Welcome to beijing!”信息。#includemain() printf( Hello,Welcome to beijing!n);mainmain是主函数的函数名,

9、表示这是该程序的主函数。每一个C源程序都必须有,且只能有一个主函数(main函数)。作为一个函数,其名称后的一对小括号不可省略。一对花括号的内容为函数体。函数调用语句printf函数的功能是把要输出的内容送到显示器去显示。printf函数是一个由系统定义的标准函数,可在程序中直接调用。【例】输入两个整数,输出它们的和。#include /*文件包含*/main()/*主函数*/ int a,b,c;/*声明定义变量a,b和c*/ scanf(%d%d,&a,&b);/*输入变量a和b的值*/ c=a+b;/*计算c等于a与b的和值*/ printf(c=%dn,c); /*输出

10、变量c的值*/include称为文件包含命令文件包含命令,是编译预处理命令。扩展名为.h的文件称为头文件由/* */对括起来的内容为注释,用于对程序某部分的功能进行说明,不妨碍程序的执行。2022/7/124【例】输入两个整数,通过调用函数计算它们的和,然后输出和值。#include /*文件包含*/int sum(int x,int y)/*定义sum函数*/ int z;/*声明定义变量z*/ z=x+y; /*计算z等于x与y的和值*/ return (z); /*将z的值返回,通过sum带回调用处*/main()/*主函数*/ int a,b,c;/*声明定义变量a,b和c*/ sca

11、nf(%d%d,&a,&b);/*输入变量a和b的值*/ c=sum(a,b); /*调用sum函数,将得到的值赋给c*/ printf(c=%dn,c);/*输出变量c的值*/2022/7/125二、C语言程序结构1、一个C语言程序是由一个或多个函数组成的,每一个函数完成相对独立的功能。2、任何一个程序必须有一个且只能有一个主函数main,其位置任意。 一个函数由两部分组成:函数的首部和函数体。函数体有声明部分和执行部分组成。2022/7/126函数值的类型 函数名函数名(形参表)形参说明;内部变量的说明;执行部分;3、凡是在程序用到的变量、函数都要先定义,后使用。4、函数体

12、从“”开始,到“”结束,每条语句以“;”作为结束符。5、有丰富的库函数(标准函数)供用户直接调用,但在调用前,必须用“#include ”的形式将函数所在的头文件写在程序首部(所以C内核很小)。6、C程序解决问题的过程实际上就是从主函数的第一条语句开始执行,并在main中结束,其它函数通过不断调用得以执行,程序的执行实际上就是执行main函数。2022/7/127三、源程序书写规则1除字符串常量中的字符外,一律使用半角字符。例如,字母、数字、标点符号等。2所有语句都必须以分号“;”结束。3允许一行内写几条短语句,也允许将一条很长的语句分写在几行上。2022/7/1284允许使用注释:/* 注释

13、内容 */ /注释内容 (直到回车符结束) (1) “/*”和“*/” 必须成对使用,且“/”和“*”、以及“*”和“/”之间不能有空格,否则都出错。技巧技巧:必须配对使用的符号(例如注释符号、函数体的花括号、圆括号等等),可连续输入这些起止标识符,通过插入来完成内容的编辑。(2) 注释可以单独占1行,也可跟在语句的后面。(3) 如果1行写不下,可另起1行继续写。(4)注释中允许使用汉字。在非中文操作系统下,看到的是一串乱码,但不影响程序运行。2022/7/129四、语句语句是程序中的最小单位,以末尾的分号为标志,用于向计算机发出操作指令,要求执行相应的操作。C语言程序的结构语句分为以下3类:

14、1、表达式语句表达式由运算符、变量和常量组成。如: sum = a + b s = add(2,3) x=sin(0.19199) 表达式+分号 a=3;表达式加上语句结束符(分号)就构成表达式语句。2. 2. 流程控制语句流程控制语句程序中的语句一般是按照书写顺序执行的。但是,时需要改变默认的执行顺序; 例如左图中要从两个或多个语句中挑选一个语句执行,或者像右图那样要重复执行某一个语句或语句块。前者称为选择控制,后者称为循环控制。条件条件语句语句是是否否条件条件语句语句1 1语句语句2 2是是否否3. 3. 块语句块语句 块语句也称为复合语句,就是用一对花括号将一组语句括起来。 若干语句若干

15、语句 在一个块语句中可以包括若干声明和若干语句。 块语句在语法上相当于一条语句。因此,当语法上需要一个语句,而一个语句又不能满足需要时,就必须使用块语句。 如: int t; t=a; a=b; b=t;五、名字与声明1 1、标识符与关键字、标识符与关键字用来表示程序中各种操作对象或语法实体的名称的用来表示程序中各种操作对象或语法实体的名称的符号。符号。如在程序中使用的变量名、函数名、标号等都是标识符。标识符的命名规则:由字母、下划线开头的,由字母、数字、下划线组成的多个字符组成。(长度一般不超过32个字符)大小写不等价。(有别于其它语言)如:Book,book,BOOK等都不等价。见名识义。

16、如age用来表示年龄,number表示学号。(1 1)关键字标识符)关键字标识符关键字又称为命令符,在程序中具有特定的含义,不能另作它用,其他字符又无法直接替代。如:类型说明符,int,double等;语句定义符,if else等。 (2 2)预定义标识符)预定义标识符预定义标识符是指C语言提供的库函数名和预编译处理命令(如printf、scanf、define)等。(3 3)用户标识符)用户标识符由用户根据需要自定义的标识符称为用户标识符。使用用户自定义标识符时,应注意:最好根据其含义选用英文缩写及汉语拼音作标识符,这样便于阅读程序。 不能与关键字相同。如果与预定义标识符相同系统并不报错,程

17、序仍能运行,只是预定义标识符失去原来的含义,代之以用户确认的含义。 合法的标识符:如sum,average, _total, Class, day, BASIC, li_ling不合法的标识符:M.D.John,¥123,33,3D64,ab2. 声明如变量的定义就是一个声明:int s; 建立了变量名s与它的实体之间的关联。声明也称为说明,它的作用如下:告诉编译器,一个名字是与哪个实体联系,不能张冠李戴。告诉编译器,也要程序员明白这个实体的类型。告诉编译器,这个实体什么时候建立?在什么范围内可以使用?C语言是要求“先声明后使用”的语言。如变量的声明、函数的声明。说明:声明是非执行语句,表达式

18、语句和流程控制语句是执行语句。 六、变量及其赋值1 1、变量、变量程序运行过程中,其值可以改变的量叫变量;有一个名称,在内存中占据一定的存储单元。(数据的载体数据的载体)每个变量在使用之前必须确定其类型(如:整型变量、实型变量、字符型变量等),即先定义后使用。 变量用于在程序中上下承载、传递欲处理的数据,类似于代数化的表示形式。变量的三个基本要素变量的三个基本要素:变量名、变量数据类型和变量的值。(1)(1)变量名变量名:每个变量都必须有一个名称,是C语言合法的标识符。(2)(2)变量值变量值:在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用。好比一个容器,容器中盛放的内容可以

19、改变。a 变量名3变量值int age;float score;agescorechar sex;sexsex=a;例:例:定义变量类型的一般形式为:定义变量类型的一般形式为: 类型标识符类型标识符 变量名表;变量名表;a变量定义的实质变量定义的实质是按照变量说明的数据类型为变量分配相应空间的存储单元,在该存储单元中存放变量的值。 (1)数据类型数据类型:C语言的合法数据类型。如int、short、char、float、double等。 数据类型决定数据类型决定:数据的存贮方式、所占用的字节数、可施加的运算、数据的取值范围。(2)变量名表变量名表:可以包含多个变量名,彼此之间使用逗号分开,表示

20、同时定义若干个具有相同数据类型的变量。如: float a,b;(3)变量定义语句可以出现在变量使用之前的任何位置。不违背“先定义,后使用”的原则即可。 变量的初始化变量的初始化概念概念: :在编写程序的时候,常常需要对变量预先设置一个在编写程序的时候,常常需要对变量预先设置一个初值,称为初值,称为变量初始化。可以在定义一个变量的同时,给变量一个初始值。如如: int number;: int number; number=21; number=21;int number=21;int number=21;int a,b,c;a=4;b=4;c=4;int a,b,c;a=b=c=4;int

21、a=b=c=4;C语言程序设计2.2.变量的赋值运算变量的赋值运算赋值运算符是“=”,其作用是将赋值运算符右侧的表达式的值赋给其左侧的变量(作为变量的值)。格式: 变量表达式变量表达式x=0;i=3,a=5,b=7;c=ab?a:b;都是将“=”右侧的数值或表达式的值赋给“=”左侧的变量。赋值运算符的优先级低于条件运算符,其结合性是右结合。如:a=b=c=10;相当于a=(b=(c=10);C语言程序设计注意注意:赋值运算符运算对象中的左侧对象一定是变量。如:a=b-c=5;按优先级相当于a=(b-c)=5);由于表达式中出现将数值5赋给b-c表达式,因此,该表达式是非法的。赋值语句是由赋值表

22、达式加上一个分号构成。一个程序用得最多的语句是赋值语句。C语言程序设计七、算术运算七、算术运算1 1、运算符的种类、运算符的种类根据不同运算符所需运算对象的个数,C语言的运算符分为:单目运算符:运算对象只有1个。双目运算符:运算对象有2个。三目运算符:运算对象有3个。 如单目+,双目,三目? :等。有时又称为一元、二元、三元运算符,是相同的道理。C语言程序设计2 2、运算符的优先级、运算符的优先级运算符的优先级是指不同的运算符在同一表达式中进行运算时的先后次序。如“先加减,后乘除”的思想。:不同的运算符有不同的优先级,进行运算时,按不同的运算符有不同的优先级,进行运算时,按照优先级从高到低的顺

23、序进行。照优先级从高到低的顺序进行。算术运算符*、/的优先级高于+、-的优先级。如:3+4*7+6 (3+4)*7+6(3+4)*(7+6)显然,按常识,这三个表达式的值不同。C语言程序设计3 3、运算符的结合性、运算符的结合性当一个运算对象两侧的运算符的优先级相同时,运算符的优先结合方向称为结合性结合性。运算符的结合性分为左结合左结合和右结合右结合两种。在C语言中,运算对象先与左面的运算符结合称左结合左结合,如+、-、*、/的结合方向为自左到右;如:8*4/6*2 对于4、6而言先均与其左侧的结合 8-4+2运算对象先与右面的运算符结合称右结合右结合,如单目运算符+、-、赋值运算符的结合方向

24、是自右向左。a=b=c=3 相当于a=(b=(c=3)C语言程序设计4 4、基本算术运算符、基本算术运算符 按优先级从高到低的顺序:取正(+)、取负(-)、乘法(*)、除法(/)和求余(%)、加法(+)、减法(-)。它们都是左结合性左结合性。对于运算符对于运算符/ /和和% %有如下说明:有如下说明: (1)若除法运算符的运算对象均为整型数据整型数据,则结果为其商的整数部分,舍去小数部分,即取整运算。如13/7的结果为1。若运算对象中有一个为负值,则舍入的方向是不固定的。C语言程序设计如, -13/7在有的机器上得到结果是-1,有的机器上得到结果是-2(2*7=14),但多数机器(不同版本)采

25、取“向零取整”方法,即13/7=1,-13/7=-1,取整后向零的方向靠拢。 (2)求余运算符的运算对象必须是整型数据,运算结果的符号与被除数的符号相同。如,-13%7运算结果为-6, 13%-7运算结果为6 -13%-7运算结果为-6 。 01-2-1C语言程序设计5 5、自反算术赋值运算符、自反算术赋值运算符格式:变量变量 表达式;表达式;在“=”之前加上算术运算符,则构成自反算术赋值运算符自反算术赋值运算符;如:+=、-=、*=、/=、%=等(两符号间没有空格)。a+=5等价于a=a+5a+=b-c等价于a=a+(b-c) 将等号右侧的内容作为一个整体处理a%=b-c等价于a=a%(b-

26、c)。C语言程序设计6 6、自增、自减运算符、自增、自减运算符 自增(+)和自减(-)运算符是单目运算符,其功能是使运算对象(变量)的值增1或减1。 格式:+变量变量 变量变量 前缀形式:先增值后应用 变量变量+ + 变量变量 后缀形式:先应用后增值如 +i;等同于 i=i+1; i-;等同于 i=i-1;如果出现在一个表达式中,则结果不同的,对于前缀形式表示在使用该表达式之前先使变量值增(减)1;对于后缀形式表示在使用该表达式的值之后使n的值增(减)1。单独使用,前后缀形式没有区别C语言程序设计i=5;j=5;y= i+;x= +j;说明:单独使用i+、+j,对于i、j值的改变是等同的,但若

27、出现在表达式中,应用的结果不同。y=i+等同于y=i;i=i+1;x=+j等同于j=j+1;x=j;C语言程序设计int i=3;printf(“i=%dn”,i+); printf(i=%dn,i);i+是后缀形式,则先计算表达式的值,其值为当前i值,因此,输出i=3,然后使i自增1,i值为4。再一次输出时,输出的结果为:i=4。自增或自减运算符在使用时,需要注意以下几点:(1)运算符的操作对象,只能是变量,而不能作用于常量或表达式。运算符的优先级高于基本算术运算符,结合性是“自右向左”的右结合。(2)遵照右结合原则,i+相当于-( i+),而不相当于(-i)+形式。 594. 4. 正负号

28、运算符正负号运算符 正负号运算符为+(正号)和-(负号),是单目运算符。例如,-5和+6。它们的优先级别高于*、/运算符。例如: -a * b先使a变符号再乘以b。其实正负号运算相当于一次算术赋值运算,例如: -a 相当于a = 0 a -a * b 相当于(0 - a) * b 它的结合方向为自右至左。综上所述,凡赋值运算符及其变种(包括自反算术赋值运算符、自加自减运算符和正负号运算符)的结合方向都是自右至左的。例:输入三角形的三边长,求三角形面积。设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为:area=area=(s(s* *(s-a)(s-a)* *(s-b)

29、(s-b)* *(s-c);(s-c);其中其中s=(a+b+c)/2s=(a+b+c)/2。#include #include main() float a,b,c,s,area; scanf(“%f%f%f”,&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area); 运行情况如下:3,4,6a= 3.00,b= 4.00,c= 6.00,s= 6.50area= 5

30、.33程序说明:程序中sqrt()是求平方根的函数。由于要调用数学函数库中的函数,必须在程序的开头加一条#include命令,把文件math.h包含到程序中。请注意,以后凡在程序中要用到数学函数库中的函数,都应当包含math.h头文件。例:输入3个整数,求它们的和及平均值。#include “stdio.h”void main() int num1,num2,num3,sum; float aver; printf(Please input three numbers:); scanf(%d%d%d, & &num1, & &num2, & &n

31、um3); sum = num1 + num2 + num3num1 + num2 + num3;/*求累计和*/ aver = sum / 3.0sum / 3.0; /*求平均值,只除以3会成为整除*/ printf(num1=%d,num2=%d,num3=%dn, num1, num2, num3); printf(sum=%d, aver=%7.2fn,sum, aver); getch();第五节第五节 C C程序的开发过程程序的开发过程一、源程序与目标程序一、源程序与目标程序源程序:源程序:使用高级语言编写的程序代码,以文件存在。 目标程序:目标程序:源程序经过编译后生成计算机可

32、以理解的二进制形式的程序,以文件存在。源程序目标程序编译可执行程序链接2022/7/16464用高级语言编写出来的程序称为源程序,经过编译以后生成目标程序,链接后形成可执行程序。C语言程序设计二、二、C C语言的开发过程语言的开发过程1 1、编辑、编辑(1)编辑指编辑创建源程序,是将编写好的C语言源程序代码录入到计算机中,形成源程序文件。(2)在VC+ 6.0环境中的源程序文件,其扩展名为.cpp。 C语言程序设计2 2、编译、编译 (1)编译源程序就是由VC+系统提供的编译器将源程序文件的源代码转换成目标代码的过程。(2)编译过程主要进行词法分析和语法分析,在分析过程中如果发现错误,将错误信息显示在屏幕上通知用户。经过编译后的目标文件的扩展名为.obj。 C语言程序设计C语言程序设计3 3、连

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论