资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第一章 C程序概述 本章要点n程序与程序设计语言程序与程序设计语言nC程序的结构程序的结构nC程序的开发环境及开发过程程序的开发环境及开发过程本章学习目标 n了解程序设计语言的发展简史和分类了解程序设计语言的发展简史和分类n掌握掌握C程序的基本结构程序的基本结构n掌握掌握C程序的编辑、编译、链接和执行的过程程序的编辑、编译、链接和执行的过程1.1 什么是程序n程序是为完成某一特定任务而定义的一组指令的序程序是为完成某一特定任务而定义的一组指令的序列。列。1.向左转向左转2.迈左脚迈左脚3.前进前进步步4.右脚跟进右脚跟进5.向右转向右转6.迈左脚迈左脚7.前进前进1步步8.右脚跟进右脚跟进9.向右转向右转10.跳跃跳跃n从广义上讲,这就是为完成穿越障碍而制定的程序。从广义上讲,这就是为完成穿越障碍而制定的程序。不难看出,只要严格按照我们发出的指令,不同的人不难看出,只要严格按照我们发出的指令,不同的人均可以穿过障碍,到达目的地。另一方面,程序的执均可以穿过障碍,到达目的地。另一方面,程序的执行必须严格按照指令发出的顺序执行,否则将不能到行必须严格按照指令发出的顺序执行,否则将不能到达目的地。达目的地。n计算机执行程序的过程与这个游戏类似。我们先来看计算机执行程序的过程与这个游戏类似。我们先来看一下程序在计算机上执行的原理。计算机硬件只能按一下程序在计算机上执行的原理。计算机硬件只能按部就班的执行指令,计算机要想工作必须通过执行程部就班的执行指令,计算机要想工作必须通过执行程序来实现。在这里,计算机就是命令接收者,而程序序来实现。在这里,计算机就是命令接收者,而程序就是我们向计算机发送的指令序列。计算机通过逐条就是我们向计算机发送的指令序列。计算机通过逐条执行程序中定义的计算机能够识别的指令来完成规定执行程序中定义的计算机能够识别的指令来完成规定的任务。另外,类似于人类能够理解的指令有限,计的任务。另外,类似于人类能够理解的指令有限,计算机能够识别的指令也是有限的(比人类能理解的要算机能够识别的指令也是有限的(比人类能理解的要少很多)。因此,程序必须由计算机能够识别的指令少很多)。因此,程序必须由计算机能够识别的指令组成。组成。1.2 程序设计语言n语言就广义而言,是一套共同采用的沟通符号、语言就广义而言,是一套共同采用的沟通符号、表达方式与处理规则。人类沟通所使用的语言表达方式与处理规则。人类沟通所使用的语言称为自然语言。程序设计语言是程序员与计算称为自然语言。程序设计语言是程序员与计算机交流的主要工具。程序员采用某种特定的程机交流的主要工具。程序员采用某种特定的程序设计语言编写程序,计算机执行程序以完成序设计语言编写程序,计算机执行程序以完成规定的任务。目前世界上已知现存的语言大约规定的任务。目前世界上已知现存的语言大约有有3000多种,而程序设计语言的种类也多种多多种,而程序设计语言的种类也多种多样。从程序设计语言的发展来看,程序设计语样。从程序设计语言的发展来看,程序设计语言分为低级语言和高级语言两大类。低级语言言分为低级语言和高级语言两大类。低级语言又分为机器语言与汇编语言。又分为机器语言与汇编语言。程序设计语言机器语言n机器语言是机器指令的集合。机器指令就是计算机能机器语言是机器指令的集合。机器指令就是计算机能够直接识别并执行的指令。计算机的机器指令是一个够直接识别并执行的指令。计算机的机器指令是一个二进制编码。如应用二进制编码。如应用8086CPU完成计算完成计算s = 768+12288-1280的三条机器指令如下:的三条机器指令如下:n假如将程序错写成如下形式,请你找出错误。假如将程序错写成如下形式,请你找出错误。程序设计语言汇编语言n汇编语言是汇编指令的集合。汇编语言是汇编指令的集合。n汇编语言与机器语言的区别在于指令的表示方法。机汇编语言与机器语言的区别在于指令的表示方法。机器语言是面向计算机的语言,采用二进制的形式。而器语言是面向计算机的语言,采用二进制的形式。而汇编指令则是面向程序员的语言,它采用了类似于人汇编指令则是面向程序员的语言,它采用了类似于人类所使用的自然语言的语法来表示这些指令,从而便类所使用的自然语言的语法来表示这些指令,从而便于程序员阅读和记忆。于程序员阅读和记忆。n例如:将寄存器例如:将寄存器BX的内容传送到寄存器的内容传送到寄存器AX的机器的机器指令是:,而对应的汇编指令则为:指令是:,而对应的汇编指令则为:mov ax,bx。n需要说明的是,计算机只能够识别机器指令,因此需需要说明的是,计算机只能够识别机器指令,因此需要将采用汇编语言编写的程序翻译成计算机能够识别要将采用汇编语言编写的程序翻译成计算机能够识别的指令序列,这一工作的由称为的指令序列,这一工作的由称为“汇编程序汇编程序”的专门程的专门程序完成。序完成。程序设计语言高级语言n汇编指令与机器指令基本上是一一对应,它的执行同汇编指令与机器指令基本上是一一对应,它的执行同机器语言一样受硬件底层平台的限制。更重要的是,机器语言一样受硬件底层平台的限制。更重要的是,用一条条指令实现一个程序的编写过于繁琐。用一条条指令实现一个程序的编写过于繁琐。n高级语言是对汇编语言的进一步抽象,高级语言是对汇编语言的进一步抽象,它更接近于人它更接近于人类使用的自然语言,类使用的自然语言,同时又不依赖于计算机硬件同时又不依赖于计算机硬件,编,编出的程序能在不同体系结构的计算机上执行。出的程序能在不同体系结构的计算机上执行。n例如,求两个数的最大值的例如,求两个数的最大值的C语言代码如下所示:语言代码如下所示:if (a b)max = a;elsemax = b;n高级语言更接近于人类的自然语言描述。但需高级语言更接近于人类的自然语言描述。但需要注意,计算机能识别的只有机器语言,因此要注意,计算机能识别的只有机器语言,因此用高级语言编写的程序也需要经过专门的编译用高级语言编写的程序也需要经过专门的编译器程序翻译成机器指令才能在计算机上执行。器程序翻译成机器指令才能在计算机上执行。1.3 C语言程序 nC语言是目前世界上普遍流行、使用最广泛的语言是目前世界上普遍流行、使用最广泛的高级程序设计语言之一。鉴于高级程序设计语言之一。鉴于C语言在对底层语言在对底层硬件操作方面的优势,硬件操作方面的优势,C语言广泛应用于操作语言广泛应用于操作系统(如系统(如Windows、Linux、Unix操作系统)、操作系统)、工业控制等软件的开发;另外,工业控制等软件的开发;另外,C语言具有绘语言具有绘图能力强,可移植性好的特点,并具备很强的图能力强,可移植性好的特点,并具备很强的数据处理能力,因此也适用于二维、三维图形数据处理能力,因此也适用于二维、三维图形动画软件(如动画软件(如3D游戏)的开发。游戏)的开发。第一个C语言程序n在屏幕上输出以下内容:在屏幕上输出以下内容:Hello, World!/*输出输出”hello,World!”的简单的简单C程序程序*/#include void main( )printf(“Hello, World!n”); /*调用格式化输出函调用格式化输出函数数*/nC语言程序严格区分代码的大小写形式。例如语言程序严格区分代码的大小写形式。例如在上述程序代码中,在上述程序代码中,main不能写成不能写成MAIN、Main等形式。等形式。注释n程序中,程序中,“/*”和和“*/”之间包含的内容属于注释,之间包含的内容属于注释,“/*”表示注释的开始,表示注释的开始,“*/”表示注释的结束。表示注释的结束。注释可以单独占一行,也可以和程序中的其它注释可以单独占一行,也可以和程序中的其它代码放在一行,并且注释可以占多行。代码放在一行,并且注释可以占多行。n注释一般分为序言性注释和功能性注释。注释一般分为序言性注释和功能性注释。n为程序适当增加一些注释是一种良好的程序设为程序适当增加一些注释是一种良好的程序设计习惯。注释可以提高程序的可读性,同时便计习惯。注释可以提高程序的可读性,同时便于程序的维护。于程序的维护。n注释不影响程序的执行,注释只存在于源程序注释不影响程序的执行,注释只存在于源程序中,源程序在编译时,编译器会忽略注释,生中,源程序在编译时,编译器会忽略注释,生成的目标程序中不包含这些注释。成的目标程序中不包含这些注释。关键字n上述程序中的上述程序中的include、void、main是是C语言的语言的关键字,关键字是被关键字,关键字是被C语言本身所使用的,具语言本身所使用的,具有特殊含义和功能的词汇,不能被用作其他用有特殊含义和功能的词汇,不能被用作其他用途。途。n注意注意C语言中的关键字全部使用小写形式。语言中的关键字全部使用小写形式。1.3.3 预处理命令n程序代码中的程序代码中的“#include ”是一个预处理命是一个预处理命令。预处理命令均以令。预处理命令均以“#”符号开始,并且每符号开始,并且每个预处理命令要独占一行。个预处理命令要独占一行。include表示命令名,表示命令名,称为文件包含命令。称为文件包含命令。n“#include ”用于告诉编译器本程序要将一用于告诉编译器本程序要将一个叫做个叫做“”的文件内容包含进来。的文件内容包含进来。“”(stdio即为即为standard input output的缩写)是的缩写)是C语言标语言标准函数库中定义的一个头文件,由于准函数库中定义的一个头文件,由于C语言中语言中的输入输出操作均由已在标准函数库中定义的的输入输出操作均由已在标准函数库中定义的输入输出函数来实现,而在文件中包含了这些输入输出函数来实现,而在文件中包含了这些输入输出函数的说明信息。因此包含了该头文输入输出函数的说明信息。因此包含了该头文件的内容后,我们便可在程序中直接使用这些件的内容后,我们便可在程序中直接使用这些输入输出函数。输入输出函数。函数n程序中的其它代码给出了程序中的其它代码给出了main函数的定义,函数的定义,main是函数名,可称为主函数。是函数名,可称为主函数。n函数(函数(function)是用来构建)是用来构建C语言程序的模语言程序的模块,是块,是C语言程序的基本组成单位。通过使用语言程序的基本组成单位。通过使用函数可以降低程序开发的难度,并让程序具有函数可以降低程序开发的难度,并让程序具有良好的结构。良好的结构。n函数的概念来自于了数学。在数学中,假定函数函数的概念来自于了数学。在数学中,假定函数f,g的的定义如下:定义如下:f(x) = x3g(x,y)=f(x)+3y+1n其中,其中,f,g称为函数名,称为函数名,x,y称为函数的自变量(在程称为函数的自变量(在程序设计中称为函数的参数)。序设计中称为函数的参数)。f(x)、g(x,y)的定义给出的定义给出了通过自变量计算函数值的方法。另外可以看出,函了通过自变量计算函数值的方法。另外可以看出,函数数g(x,y)中调用了函数中调用了函数f(x),即在进行,即在进行g(x,y)的计算时,的计算时,x3的计算交由的计算交由f(x)完成。完成。nC语言中的函数与数学中的函数有相似之处,也包括函语言中的函数与数学中的函数有相似之处,也包括函数名、参数以及具体操作的定义。数名、参数以及具体操作的定义。n程序中程序中main函数的定义可以分为两部分,函数函数的定义可以分为两部分,函数首部和函数体。首部和函数体。 n函数首部依次给出函数类型、函数名称和函数函数首部依次给出函数类型、函数名称和函数参数定义,参数定义放在函数名后的一对小括参数定义,参数定义放在函数名后的一对小括号中。函数体放在一对大括号中,其中可以包号中。函数体放在一对大括号中,其中可以包含一系列的语句,这些语句给出了函数执行的含一系列的语句,这些语句给出了函数执行的操作。操作。n和数学函数不同的是,和数学函数不同的是,C语言的函数可以有确语言的函数可以有确定的计算结果,也可以没有,对于没有明确计定的计算结果,也可以没有,对于没有明确计算结果的函数应将其类型指定为算结果的函数应将其类型指定为void。另外,。另外,C语言函数可以有参数,也可以没有参数,对语言函数可以有参数,也可以没有参数,对于没有参数的函数,其参数定义可以为空白,于没有参数的函数,其参数定义可以为空白,但函数名后的一对小括号不能省略。但函数名后的一对小括号不能省略。nmain函数是函数是C语言程序中的一个特殊函数,每语言程序中的一个特殊函数,每个程序必须而且只能包含一个个程序必须而且只能包含一个main函数,它代函数,它代表程序运行时的入口。程序运行时,首先找到表程序运行时的入口。程序运行时,首先找到main函数,然后依次执行函数,然后依次执行main函数中包含的每函数中包含的每条语句,直到条语句,直到main函数的结束。函数的结束。n每个函数(包括用户自定义函数和系统定义函每个函数(包括用户自定义函数和系统定义函数)都用于实现某一特定的功能,并且可以相数)都用于实现某一特定的功能,并且可以相互调用。调用函数时,只需要使用函数名加上互调用。调用函数时,只需要使用函数名加上小括号括起来的参数即可。小括号括起来的参数即可。nmain函数可以调用了其它函数,从而将一部分函数可以调用了其它函数,从而将一部分工作交给其它函数完成,被调用的函数执行完工作交给其它函数完成,被调用的函数执行完成后将返回成后将返回main函数,函数,main函数继续执行直到函数继续执行直到程序结束。程序结束。n我们在程序中使用的函数可以分为两类,一类我们在程序中使用的函数可以分为两类,一类是我们为了实现某个功能自己编写的函数,通是我们为了实现某个功能自己编写的函数,通常称为自定义函数;另一类是由我们使用的编常称为自定义函数;另一类是由我们使用的编译器提供的函数库中的函数,通常称为库函数。译器提供的函数库中的函数,通常称为库函数。语句nC语言中的语句是程序执行时向计算机发出的语言中的语句是程序执行时向计算机发出的指令,语句给出了计算机要执行的操作。指令,语句给出了计算机要执行的操作。n预处理命令、变量定义等内容不算作语句。预处理命令、变量定义等内容不算作语句。n语句出现在函数体内,一个函数的执行过程就语句出现在函数体内,一个函数的执行过程就是依次执行函数体内语句的过程,这些语句实是依次执行函数体内语句的过程,这些语句实现了函数的功能。现了函数的功能。printf (“Hello, World!n”); n这是一个函数调用语句,该语句执行时,这是一个函数调用语句,该语句执行时,main函数将调用函数将调用printf函数,参数是一个字符串函数,参数是一个字符串“Hello, World!n”,printf函数将完成在显示器函数将完成在显示器上输出该字符串,然后返回上输出该字符串,然后返回main函数。函数。n语句必须以分号结束。语句必须以分号结束。n在在C语言程序中,一个语句可以独占一行,也语言程序中,一个语句可以独占一行,也可以占用多行,多个语句也可以放在一行中,可以占用多行,多个语句也可以放在一行中,因此分号是语句结束的唯一标志。因此分号是语句结束的唯一标志。1.4 编写和运行C程序n本书的编程与讨论均基于(简称)编译系统。本书的编程与讨论均基于(简称)编译系统。VC 不仅是一个编译器,而且是一个基于不仅是一个编译器,而且是一个基于Windows操作系统的可视化集成开发环境操作系统的可视化集成开发环境(integrated development environment,IDE)。)。我们可以在内编辑程序、编译程序、运行程序我们可以在内编辑程序、编译程序、运行程序以及调试程序。以及调试程序。编写和运行C程序的步骤n(1)启动和运行,通过单击【开始】菜单)启动和运行,通过单击【开始】菜单-【程序】【程序】-【Microsoft Visual Studio 6.0】-【Microsoft Visual C+ 6.0】启动。】启动。编写和运行C程序的步骤n(2)单击文件菜单下的【新建】子菜单,打)单击文件菜单下的【新建】子菜单,打开新建对话框。开新建对话框。编写和运行C程序的步骤n(3)单击对话框上方的【文件】标签,在左)单击对话框上方的【文件】标签,在左边选择文件类型为【边选择文件类型为【C+ Source File】,在右】,在右边文件名输入框中输入程序的文件名(由于边文件名输入框中输入程序的文件名(由于C程序源文件的扩展名为程序源文件的扩展名为.c,因此文件名后不要,因此文件名后不要忘了加忘了加.c扩展名);在位置输入框中给出程序扩展名);在位置输入框中给出程序源文件的存放位置。然后单击确定按钮。源文件的存放位置。然后单击确定按钮。编写和运行C程序的步骤n(4)输入程序、编辑程序。编辑程序完毕后)输入程序、编辑程序。编辑程序完毕后单击单击“构造构造”按钮(或按按钮(或按F7快捷键)。快捷键)。编写和运行C程序的步骤n(5)单击构造按钮后会弹出提示对话框。对)单击构造按钮后会弹出提示对话框。对话框的内容为:话框的内容为:“This build command requires an active project workspace. Would you like to create a default project workspace?”。意思是说构造命令需要一个活动的工程,你是意思是说构造命令需要一个活动的工程,你是否愿意创建一个默认的工程工作区。为了保证否愿意创建一个默认的工程工作区。为了保证程序的正常编译,我们需要选择程序的正常编译,我们需要选择“是是”。编写和运行C程序的步骤n(6)编译完成后,如果程序编译成功,在下)编译完成后,如果程序编译成功,在下方输出区会提示方输出区会提示“0 errors,0 warnings”。如。如果程序有错误,下方输出区会显示错误的个数,果程序有错误,下方输出区会显示错误的个数,并给出相应的错误提示。警告不是错误,但有并给出相应的错误提示。警告不是错误,但有可能影响程序的正常运行,因此也需要重视。可能影响程序的正常运行,因此也需要重视。查看错误或提示信息可以通过快捷键查看错误或提示信息可以通过快捷键F4快速定快速定位。位。编写和运行C程序的步骤(7)至此,程序的编译和链接成功,生成了相)至此,程序的编译和链接成功,生成了相应的可执行文件。通过单击右上方的应的可执行文件。通过单击右上方的“!”按钮按钮(或按(或按Ctrl+F5快捷键),可以运行程序以查看快捷键),可以运行程序以查看结果。结果。习 题一、选择题一、选择题(1)以下叙述中错误的)以下叙述中错误的 ( )B) C程序经过编译、连接步骤之后才能形成程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件一个真正可执行的二进制机器指令文件C) 用用C语言编写的程序称为源程序,它以语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中代码形式存放在一个文本文件中D) C语言中的每条可执行语句和非执行语句语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令最终都将被转换成二进制的机器指令 (2)以下叙述中错误的是)以下叙述中错误的是 ( ) A) 计算机不能直接执行用计算机不能直接执行用C语言编写的源程序语言编写的源程序 (3)对于一个正常运行的)对于一个正常运行的C程序,以下叙述中正确程序,以下叙述中正确的是(的是( )A) 程序的执行总是从程序的执行总是从main函数开始,在函数开始,在main函函数结束数结束B) 程序的执行总是从程序的第一个函数开始,在程序的执行总是从程序的第一个函数开始,在main函数结束函数结束C) 程序的执行总是从程序的执行总是从main函数开始,在程序的最函数开始,在程序的最后一个函数中结束后一个函数中结束D) 程序的执行总是从程序中的第一个函数开始,程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束在程序的最后一个函数中结束(4)C语言源程序名的后缀是语言源程序名的后缀是 ( )A).exe B).C C).obj D).cp (5)计算机能直接执行的程序是)计算机能直接执行的程序是 ( ) A)源程序)源程序B)目标程序)目标程序C)汇编程序)汇编程序D)可执行程序)可执行程序(6)以下叙述中正确的是)以下叙述中正确的是 A)C语言程序将从源程序中第一个函数开始语言程序将从源程序中第一个函数开始执行执行 B)可以在程序中由用户指定任意一函数作为)可以在程序中由用户指定任意一函数作为主函数,程序将从此开始执行主函数,程序将从此开始执行 C)C语言规定必须用语言规定必须用main作为主函数名程序作为主函数名程序将从此开始执行,在此结束将从此开始执行,在此结束 D)main可作为用户标识符,用以命名任意一可作为用户标识符,用以命名任意一个函数作为主函数个函数作为主函数(7)以下叙述中正确的是)以下叙述中正确的是 A)C程序中的注释只能出现在程序的开始位程序中的注释只能出现在程序的开始位置和语句的后面置和语句的后面B)C程序书写格式严格,要求一行内只能写程序书写格式严格,要求一行内只能写一个语句一个语句C)C程序书写格式自由,一个语句可以写在程序书写格式自由,一个语句可以写在多行上多行上D)用)用C语言编写的程序只能放在一个程序文语言编写的程序只能放在一个程序文件中件中(8)以下叙述中正确的是)以下叙述中正确的是 ( )A)C程序的基本组成单位是语句程序的基本组成单位是语句B)C程序中的每一行只能写一条语句程序中的每一行只能写一条语句C)简单)简单C语句必须以分号结束语句必须以分号结束D)C语句必须在一行内写完语句必须在一行内写完二、编程题(1)输入以下程序代码并尝试进行编译,看出)输入以下程序代码并尝试进行编译,看出现什么错误提示,思考为什么?现什么错误提示,思考为什么?#include main( ) /*/*programming*/*/ printf(programming!n); (2)根据本章学习的例子,编写程序输出如下)根据本章学习的例子,编写程序输出如下图形:图形:
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号