罗坚版C语言第一章.ppt_第1页
罗坚版C语言第一章.ppt_第2页
罗坚版C语言第一章.ppt_第3页
罗坚版C语言第一章.ppt_第4页
罗坚版C语言第一章.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计,主讲:傅清平 TelEmil:,C语言程序设计(第3版),中国铁道出版社 China Railway Publishing House,普通高等教育“十一五”国家级规划教材,教材、参考书与课时安排,主 教 材:C语言程序设计(第三版) 书 号:ISBN 978-7-113-09512-3 中国铁道出版社 2009年2月 第3版 配套教材:C语言程序设计实验教程 书 号:ISBN 978-7-113-09513-0 中国铁道出版社 2009年2月 第1版 作者电子邮箱: L ,课时安排,课时安排 授课 :3学时/周 C综合编程训练:2学时/周,上机安排 上机地点:现代教育技术中心机房(x2407) 上机时间:周二上午1、2、3节。 上机内容: 随教学进度的基础训练(上机调试每次课堂作业及书后作业) 要求: 所有作业必须独立完成 作业必须经上机调试通过,课程要求,课前请做好预习 保持课堂安静,头脑清醒,思维活跃 认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间,第1章 C程序设计入门,1.1 简单的C程序,1.3 C语言程序的上机调试步骤,1.2 C语言常用符号,1.4 Visual C+开发工具,1.5 C语言概况,结束放映,1.1 几个简单的 C 程序,【例1.1】要求在命令提示符窗口中显示“hello, world!”这一行文字。 /* 第一个 C 语言程序举例 */ /* 包含有关标准库的信息 */ #include /* 定义名为main 的函数,它不接收实参值*/ main() /* main 的语句括在花括号中 */ printf(“hello ,world!n“); /* 调用库函数printf() ,在命令提示符窗口中显示 hello ,world!*/ ,【例1.1】分析: 程序代码中介于/*与*/之间的字符序列称为注释,它可以是一行文字或者连续的多行文字。使用注释能增强程序的可阅读性,注释可以在程序中自由地使用,但在程序编译时被自动忽略。 C语言是函数式的语言,函数是组成C程序的基本单位,每个C程序不论大与小,都是由一个(或者多个)函数组成的。 函数是一个单独的程序模块,完成指定的功能。一个 C 程序不论由多少个文件组成,有且只有一个main()函数,通常称为主函数,而且任何一个C程序的执行都是从main()函数开始的。 主函数main( )的一般格式: 函数返回值的类型 main( 形式参数表 ) /* 函数首部 */ 语句; /* 函数体 */ ,【例1.1】继续分析: 用双引号括住的字符序列称为字符串,printf()函数是一个格式化输出库函数,本例通过它在命令提示符窗口中照原样显示双引号内的字符序列hello,world!。 具有这种特征的字符称为转义字符,除n之外,还有表示制表符的t、表示退格符的b、表示双引号的、表示反斜杠符本身的,在第2章中有介绍。 文件包含命令:#include 这里的“#include”称为文件包含命令,其意义是把尖括号()内指定的文件包含到本程序中,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为“.h”,常称为头文件或首部文件。 如果使用了系统提供的库函数,一般应在文件的开始用 #include 命令,将被调用的库函数信息包含到本文件中。本例中使用#include 是因为调用了标准输入/输出库中的printf()函数。,【例1.2】数值计算:编写程序,计算t的值。 #include main() int sum; /*说明整型变量sum*/ sum=1+1/2+1/3+1/4+1/5; /*计算累加和*/ printf(“The sum is %dn“,sum); /*按整型数格式显示计算结果*/ ,【例1.2】程序分析: (1)变量说明: 本例的主函数由两部分组成:一是说明部分,二是执行部分。在主函数的说明部分中,定义了本例所使用的变量名,通常它是放在函数开始处、且位于可执行语句之前。 C语言规定,程序中所有用到的变量都必须“先定义,后使用”。说明语句由一个类型名与若干所要说明的变量名组成: int sum; 其中int是类型名,sum是变量名。int类型表示所列变量为整型变量,整数不能包含小数;float型表示所列变量为浮点变量或称实型变量,浮点数可以包含小数。 除int与float之外,C语言还提供了其他的基本数据类型,包括char(字符型)、short(短整型)、long(长整型)和double(双精度浮点型)等。 另外,由上述这些基本数据类型还可以构成数组类型、结构类型、联合类型和指针类型,这些将在以后的章节中介绍。,【例1.2】程序继续分析: (2)赋值表达式: 与Basic、Pascal、Fortran等计算机高级程序设计语言类似,C语言程序中也使用赋值表达式。 在C语言中,赋值表达式格式如下: 变量名 = 表达式 其中,“=”称为赋值号,与数学中的等号不一样,它是将其右边的表达式的值赋给左边的变量。 (3)算术表达式: 编程时需把传统的数学式子转换为C语言中等价的表达式。C语言中的算术运算符包括加法+、减法-、乘法*、除法/和求模运算符%。 求模运算%只适用于两个整数之间的运算。表达式x%y表示x除以y所得的余数。这里的x和y均为整数,结果符号与被除数x的相同。,【例1.2】程序继续分析: 在C语言中,整数中的除法与实数中的除法虽然运算符相同,都是/,但除法的结果不同:整数中除法的结果仍为整数,只保留商的整数部分而抛弃小数部分(即截尾取整);而实数除法与数学中所讲的除法是一致的,可能会出现小数部分。 例如: 5%3 = 2, (-5)%3=-2, 5%(-3)=2, 3%5 = 3 5/2 = 2 , 5.0/2.0 = 5/2.0 = 5.0/2 = 2.5 (4)格式输出: printf()函数是一个通用格式化输出函数,详细内容将在第2章中详细介绍。 printf(“The sum is %dn“,sum); 在上述语句中,字符串”The sum is”照原样输出;“%d” 与最右边的变量名sum相呼应,表示把sum的值计算出来之后,按照十进制int类型(整数)的格式输出。,【例1.2】程序继续分析: (5)程序运行结果: 本例程序运行之后,在命令提示符窗口(或者称MS-DOS窗口)中显示: The sum is 1 结果显然是不精确的,为什么呢? 对源程序代码进行分析,发现在对1/2、1/3、1/4和1/5这些表达式进行求值时,C语言程序中的计算结果全部都为0。 在这里,由于1/2、1/3、1/4和1/5中的被除数与除数都是整数,因此在C程序中实际上进行的是整数范围内的除法,而不是我们想象中的实数除法。前面已经介绍过,整数除法的结果是截尾取整,因此上述几个表达式的结果就是0。 为了得到更加精确的计算结果,必须用浮点数代替上面的整型数。,【例1.3】对例1.2进行修改后的程序。 #include main() float sum; /*定义单精度浮点型变量*/ sum=1.0f+1.0f/2.0f+1.0f/3.0f+1.0f/4.0f+1.0f/5.0f; /* 求累加和sum */ printf(“The sum is %fn“,sum); /*按浮点型数格式显示计算结果*/ 程序运行结果如下: The sum is 2.283333,【例1.3】程序分析: (1)程序中1.0f/2.0f是两个单精度浮点数的除法,与数学中的实数除数是一致的。在C程序中,浮点数最好写成带小数点的形式,即使该浮点数取的是整数值,因为这样可以使程序更加清晰; (2)printf()语句中的“%f”对应于单精度的浮点变量sum,它表示按单精度浮点数格式显示计算结果。 在printf()函数中可以指定显示宽度的格式举例如下: “%8d” 显示十进制整数,至少8个字符宽; “%8f” 显示浮点数,至少8个字符宽; “%.2f” 显示浮点数,小数点后有两位小数; “%8.2f” 显示浮点数,小数点后有2位小数(注:从小数点后 第3位向小数点后第2位进行四舍五入取整)。最后 显示的实数,至少有8个字符宽。 此外,printf()函数还可以识别如下格式说明:表示八进制数的“%o”、表示十六进制数的“%x”、表示字符的“%c”等,在第2章中有介绍。,【例1.4】解决例1.3问题的另一种程序。 #include main() int i; float sum; sum=1.0; for(i=2;i6;i+) /* 采用循环结构来实现 */ sum=sum+1.0f/i; printf(“The sum is %fn“,sum); 程序运行结果如下: The sum is 2.283333,【例1.4】程序分析: (1)for循环语句: 本例采用了循环结构来编程,代码中的for语句是一种循环语句,for后面的圆括号共包含了三个部分,彼此之间用分号隔开: 第一部分i=2是初始化部分,此处的i称为循环变量 第二部分i)、小于等于(=)、等于(=)和不等于(!=)等关系运算符。,【例1.4】程序继续分析: 数学里的a=3在C语言中应改写为a=3,而数学里的b10在C语言中应改写为b!=10,C语言中的a=3是赋值表达式。 前面第(1)点中介绍的for循环语句,以及第(2)点中介绍的关系表达式,这些内容在第3章中有详细的介绍。 (3)如果某个算术运算符的运算分量都是整数类型,那么将执行整数运算。 如果某个算术运算符的运算分量有一个是浮点运算分量,另一个是整数类型分量,那么这个整数类型分量在开始运算之前会被转换成浮点类型,表达式1.0f/i不会影响结果的精度。,【例1.5】扩充例1.3功能的又一个C程序。从键盘上输入数列的项数m,此处要求m5,要求编程计算下列数列的和。 #include float func(int x); /*函数声明*/ main() int m; /*说明部分,定义变量m和c*/ float c; printf(“n Please enter an integer number m (m5):“); scanf(“%d“, ,/*定义函数func(),函数值为浮点型,参数x为整型*/ float func(int x) int i; /*func()函数中的说明部分 */ float sum=1.0; for(i=2; i5):10 屏幕提示输入m的值,这里输入10 The sum=2.928968 显示最后的运行结果 ,【例1.5】程序分析: (1)按功能来划分函数。本例程序的执行过程是:首先在屏幕上显示提示字符串,请用户输入一个整数。输入数据之后按回车键,程序计算出累加和并在屏幕上显示。 本程序需要处理三件事情: 从键盘接收输入的m、若m5则计算累加和、输出计算结果 在程序中除了主函数main()之外,还包含了用于计算累加和的函数func(x)、键盘输入函数scanf()、结果输出函数printf()。其中,scanf()和printf()都是系统库函数,由C编译系统库提供,用户可以直接使用,但是累加和计算函数func(x)则是一个由用户自己编写的自定义函数,需要自己编写。 (2)键盘输入函数scanf():本程序中的scanf语句的作用是从键盘上输入一个整型数给整型变量m。%d 的含义与前面介绍的printf语句中的用法一致,表示按十进制整型数输入,&m的含义是将输入的数赋给变量m,注意不要漏写“&”。,【例1.5】程序继续分析: (3)if选择语句 在求解过程中,往往需要根据输入的数据作出逻辑判断,对不同的结果作出不同的处理。本题如果输入的m值大于5,则作累加和计算,否则不会计算。 简单的if语句的格式如下: if(表达式) 语句或语句组 if语句的执行过程是: 如果if处的表达式的值不为0,则表示结果为真,将执行花括号内的语句;如果表达式的值为0,则花括号内的语句将不执行。 有关选择结构程序设计的内容将在第3章中介绍。,【例1.5】程序继续分析: (4)自定义函数func()。 用户自定义函数的一般定义形式为: /* 函数首部 */ 函数返回值类型 函数名(形参类型名 形参1, 形参类型名 形参2, ) /* 以下是函数体的内容 */ 函数的说明部分 函数的执行部分 本例中自定义函数fun(x)的具体形式为: float func(int x) int i; float sum=1.0; for(i=2; i=x; i+) sum=sum+1.0f/i; return sum; ,【例1.5】程序继续分析: 自定义函数必须先定义后使用。在定义一个自定义函数时,函数名的后面必须跟上一对圆括号,这是函数结构的特有标志。圆括号中的形参可以是一个或多个,也可以一个都没有,当没有形参时,此时的圆括号也必须加上,不能省略不写。 函数体一般包括说明部分和执行部分: (1)说明部分:在此定义函数内部所要使用到的变量。 对照上面的例子为: int i; float sum=1.0; 另外,对被调用的函数也需要进行说明。 (2)执行部分:由若干条语句组成。 对照上面的例子为: for(i=2; i=m; i+) sum=sum+1.0f/i; return sum;,【例1.5】程序继续分析: (5)如何调用函数func(x) 本例中main()函数前的说明语句: #include float func(int x); /*函数声明*/ main() 表明自定义函数func(x)包含了一个int类型变元(或称形式参数),返回值为float类型函数值的函数,这个说明称为函数原型,要与函数的定义和使用相一致。 本例中main()函数通过下述赋值语句 c=func(m); 调用时将实际参数m的值传送给func(x)的形式参数x,通过执行func(x)函数后得到一个返回值,把这个值赋给变量c。,(6)一个C程序的主函数main()可以放在程序的任何位置,例如本程序的main()函数也可以放在func(x)函数的后面,写成下面这种形式: #include float func(int x) int i; float sum=1.0; for(i=2;i5):“); scanf(“%d“, ,书写C程序时应注意的几点: (1)在C程序中,虽然一行可以写多条语句,而且一条语句可以分写在多行上,但是为了代码的清晰起见,一般一条语句单独占一行; (2)用一对花括号与括起来的部分,通常表示了程序的某一层次结构。一般与该结构语句的第一个字母对齐,并单独占一行; (3)源程序代码应该采用缩格的方式书写,在阅读时显得程序结构层次会更清晰,增加了程序的可读性; (4)标识符、关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,虽然也可不再加空格来间隔,但也可以加一个空格来增加清晰度。,1.2 C语言常用符号,在C语言中使用的符号分为6类: 标识符、关键字、常量、字符串字面值、运算符、分隔符。 其中,空格符、制表符、换行符、换页符和注释等统称为空白符,空白符在程序中仅起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。,1.2.1 C语言的关键字,在标准C中规定了32个符号,它们具有特定含义,必须用小写字母表示,不能另作他用,称为关键字。这32个关键字分别是: auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while 请注意,不同版本的C语言编译系统对关键字会作适当的增减。,1.2.2 标识符,C 语言规定:标识符是以字母或者下划线开头,后面跟若干个字母、数字或者下划线。在标识符的组成中,英文字母大写与小写字母所组成的标识符是不同的。 C程序中的标识符常用于标识区分不同的变量名、函数名、符号常量名和类型名。 例如,下述的标识符是合法的: a,x,x3,BOOK_1,sum5 而下述的标识符则是非法的: 3s(以数字开头),s*T(出现非法字符*),-3x(以减号开头),bowy-1(出现非法字符-) 需要强调的是,C语言中系统规定的标识符,例如main、scanf、printf等,在语法规定上允许用户改变它们原来的含义,但这样容易引起混淆,通常不把它们挪作它用。,在使用标识符时须注意以下几点: (1)标准C不限制标识符的长度,但它受到各种版本的C语言编译系统限制,同时也受到具体机器的限制。例如:Microsoft C规定标识符前8位有效。当两个标识符的前8个字符相同时,则被认为是同一个标识符;而Turbo C则允许使用包含32个字符的标识符; (2)标识符虽然可由程序员随意定义,但标识符是用于标识某个数据量的符号,因此,在命名时应尽量做到“见名知义”,便于阅读理解; (3)书写程序时,在关键字与标识符之间必须要有一个以上的空格符作为间隔,否则将会出现语法错误。 例如,把int a;写成inta;时,C编译器会把inta当成一个标识符处理,其结果必然出错。,1.2.3 其它符号,C语言还规定了其他一些符号,譬如各种运算符(如算术运算中的+、-、*、/和%等),或者分隔符,这些符号的使用将在以后的章节中作介绍。,1. 3 C语言程序的上机调试步骤,C语言是一种编译型的高级程序设计语言。 当一个用于描述解决问题算法的C 语言源程序文件(扩展名为.c)编写完成之后,必须先用C语言编译程序(Compiler)将其编译,形成中间目标程序文件(扩展名为.obj),然后再用连接程序(Linker)将该目标程序文件与相关的库文件(扩展名为.lib),以及其他有关的中间目标程序文件连接起来,最终形成一个可以在操作系统平台上运行的、二进制形式的可执行程序文件(扩展名为.exe)。,一个完整的C语言源程序代码,最终转换为能够运行的可执行程序文件,一般需要经过以下几个步骤:,1. 4 Visual C+开发工具,有关C语言程序的编译系统有许多种,早期非常流行的编译系统有 Turbo C,它是美国 Borland 公司生产的一套DOS平台上的C语言编译系统。随着面向对象技术的飞速发展,面向对象技术的C+、C#陆续面世,在Windows 程序和大型软件开发中得到广泛的使用。C+是C语言的超集,用C写的程序也能够在C+中运行。 本书采用Microsoft Visual C+6.0作为C程序开发工具,书中所有的例题源程序均在Visual C+ 6.0中调试运行。,1.4.1 Visual C+ 6.0 的安装,将Microsoft Visual Studio 6.0 安装盘插入光驱,运行Setup执行文件,根据屏幕提示进行安装。,VC+6.0安装完成后,可以选择安装 MSDN(Microsoft Developer Network,简称SDN),在MSDN中含有许多Visual Studio 6.0的帮助信息,对学习编程帮助很大,不过它需要单独的安装光盘。,上机运行VC+6.0的过程: 任务栏“开始”按钮“所有程序”“Microsoft Visual Studio 6.0” “Microsoft Visual Studio C+ 6.0”,选“Microsoft Visual Studio C+ 6.0” 。,1.4.2 Visual C+ 6.0 的IDE操作界面,VC+6.0的运行界面如下图所示。,1.4.3 Visual C+ 6.0 的基本操作,C语言程序的主要上机过程包括编辑、编译、连接、调试和运行这几个连续的过程,本教程主要介绍如何在VC+6.0环境下运行一个C语言程序,这与在Turbo C(或者在Win-TC)环境下运行C程序的操作有所不同。 关于如何在Turbo C环境下运行C语言程序的内容,在与本书配套的C语言程序设计实验教程(ISBN 978-7-113-09513-0/TP.3114)中有详细介绍,欢迎参考。,在VC+6.0下运行C程序的一般过程: 1.启动VC+6.0; 2.新建一个用来保存源程序文件的文件夹(譬如D:mydir); 3.选择 FileNew 命令,在弹出的New对话框中选择Files选项卡下的C/C+ Source File选项,输入源文件名first.c及文件夹名D:mydir;,4.在正文编辑窗口中输入C语言程序源代码。 在输入源代码时,要求采用缩格形式(或者称为嵌入式)来输入源程序,注意上下行程序之前的层次关系,增加程序的可读性。另外,在编辑过程中所涉及的操作,与在Microsoft Word中编辑文档的过程相类似; 5. 选择 File Save 命令保存源程序文件,当源程序代码较多时,在编辑时更要注意要多次保存; 6.选择 Build Compile first.c 命令来编译源程序。如果出现编译错误,则返回编辑窗口对程序进行针对性的修改,然

温馨提示

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

评论

0/150

提交评论