资源描述
1C语言程序教程重庆工学院2课程要求课程目标:课程目标:n正确理解和使用正确理解和使用C语言的基本数据结构和语言的基本数据结构和语法语法n运用结构化程序的思想去阅读和设计程序运用结构化程序的思想去阅读和设计程序n完成结构化程序的编写、调试的基本训练完成结构化程序的编写、调试的基本训练课程基本要求课程基本要求:n学会使用学会使用C语言编译系统,学会上机调试语言编译系统,学会上机调试C程序程序nC语言概念和方法要清楚,书上的例子要明语言概念和方法要清楚,书上的例子要明白白n掌握程序设计的一般方法和思想、常用算掌握程序设计的一般方法和思想、常用算法法n认真完成作业认真完成作业 3课程特点课程特点C是基础:接触各种数据类型及表达式、基本语句语法、常是基础:接触各种数据类型及表达式、基本语句语法、常用函数用函数C程序设计:程序设计:基本算法和案例程序的融合基本算法和案例程序的融合后续课程后续课程 C+程序设计、面向对象程序设计、数据结构与算法分析、程序设计、面向对象程序设计、数据结构与算法分析、操作系统操作系统(UNIX)学什么学什么语言及程序设计概述语言及程序设计概述数据类型、运算符与表达式数据类型、运算符与表达式简单程序设计简单程序设计(顺序、选择、循环结构程序设计顺序、选择、循环结构程序设计)数组数组函数函数指针指针结构体与共用体结构体与共用体文件文件4教学方法教学方法如何教如何教理论课:重点讲授主要算法和程序案例理论课:重点讲授主要算法和程序案例实验课:验证式实验教学,实现算法程序实验课:验证式实验教学,实现算法程序习题课:分析复杂程序案例习题课:分析复杂程序案例学习方法学习方法如何学如何学n课前预习:书中主要语句、函数、例题课前预习:书中主要语句、函数、例题n课后复习:教案中重点例题课后复习:教案中重点例题n认真独立完成作业认真独立完成作业n上机前必须完成基本程序上机前必须完成基本程序n多读、多看、多写程序多读、多看、多写程序5第一章第一章C C语言的发展及其特点和应用语言的发展及其特点和应用 本章要求:本章要求:n了解了解C语言的特点、与其它高级语言间异同;语言的特点、与其它高级语言间异同;n了解了解C程序在程序在PC机上的建立、编译和运行过程;机上的建立、编译和运行过程;n了解了解C语言程序设计思想;语言程序设计思想;重点:重点:nC语言的主要特点;语言的主要特点;nC语言在语言在PC机上的运行过程及上机操作过程;机上的运行过程及上机操作过程;n常用算法的应用常用算法的应用60.0.回顾下计算机相关知识回顾下计算机相关知识.计算机定义:计算机是一种在事先存入程序的控制下,能够接收数据、存储数据、处理数据并提供处理结果的数字化电子设备。输入数据输出结果2.计算机工作流程图输入输入处理处理存储存储输出输出数据数据7 3.计算机内所有的信息(多媒体信息)采用二进制代码表示,称为机器数。机器数有三种不同的编码形式:原码、反码和补码。4.采用二进制的原因:1)二进制只含有两个数字0和1,因此可用大量存在两种不同稳定状态的元件来表示。2)二进制数的运算规则简单,使得计算机中的运算部件的结构变得比较简单。5.计算机中信息的表示数值直接转换为二进制字符采用ASCII编码(7位、美国标准信息交换码)其它信息(汉字、图形、图象、声音、表格)也有相应的编码标准和规则。8 计算机系统计算机系统软件系统软件系统硬件系统硬件系统系统软件(操作系统、编译程序、测试程序等)系统软件(操作系统、编译程序、测试程序等)如如DOS、WINDOWS等等应用软件应用软件(WORD、EXCEL等)等)CPU控制器控制器运算器运算器输入设备(鼠标、键盘、手写笔、输入设备(鼠标、键盘、手写笔、MIC等)等)输出设备(显示器、绘图仪、打印机等)输出设备(显示器、绘图仪、打印机等)存储器存储器 内存储器(内存储器(ROM、RAM)外存储器(软盘、硬盘、光盘)外存储器(软盘、硬盘、光盘)6.计算机系统的组成9 程序设计语言发展10 程序执行111.1.1 C语言的发展nC语言是在研制UNIX操作系统过程中诞生,伴随着UNIX操作系统的发展而流行ALGOL60B语语言言C语语言言(UNIX)ANSIC(1983)n目前最流行的语言有以下几种:目前最流行的语言有以下几种:MicrosoftC或称或称MSCBorlandTurboC或称或称TurboC(本教材(本教材选用)选用)AT&TCTurboC2.01989年年TurboC+(3.0)1991年年121.1.2 C语言主要特点:1、C语言简洁、紧凑,使用方便、灵活。ANSI C一共只有32个关键字,9种控制语句,主要用小写字母表示。2、运算符丰富。共有34种。C把括号、赋值、逗号等都作为运算符处理。3、数据结构类型丰富。4、C语言是一种结构化、模块化的程序设计语言。其程序由函数组成,便于模块化的程序设计,程序结构完全由顺序结构、选择结构和循环结构组成。5、语法限制不太严格,程序设计自由度大。一行可以写多个语句,变量类型使用灵活。6、C语言既具有高级语言的功能,又具有汇编语言的许多功能。7、生成目标代码质量高,程序执行效率高,与汇编语言相比,用C语言写的程序可移植性好。131.2C语言程序的基本结构语言程序的基本结构1.简单的C程序例1.1输出指定字符串。#includevoid main()printf(Hello,this is a c programming language.n);/*输出C程序语言字符串*/程序运行结果:Hello,this is a c programming language.14程序分析程序分析1)C程序一般用小写字母书写;2)每个C源程序有且只能一个main()函数,称主函数;main前的void表示此函数是“空类型”。3)程序体必须在一对 之间;4)每个语句的结尾,必须要有“;”作为终止符。5)/*/表示注释部分,注释内容可用汉字或英文字符表示。6)函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示.7)printf函数是一个由系统定义的标准函数库中的输出函数,可在程序中直接调用。printf语句中双撇号中的字符串按原样输出。“n”是换行符即回车换行。8)“#include”为预编译命令也称为文件包含命令,常在“main”主函数之前,用于将有关的“头文件”包括到用户源文件中。被包含的文件通常是由系统提供的,其扩展名为.h。“stdio.h”为标准输入输出库文件,其内定义了printf函数的原型。15例1.2计算指定函数关系式。程序运行结果:input number:92*sqrt(9.000000)+1=7.000000#include#includevoid main()float x,y;/*定义两实型变量*/printf(input number:n);scanf(%f,&x);/*输入数字*/y=2*sqrt(x)+1;/*计算指定函数关系式的结果*/printf(2*sqrt(%f)+1=%fn,x,y);/按制定格式输出16 程序的功能是输入一个实数x,求2倍开方x加1关系式的值,然后输出结果1)凡是在程序中调用一个库函数时,都必须用预处理命令调用该函数原型所在的头文件。在本例中,使用了三个库函数:输入函数scanf,开平方函数sqrt,输出函数printf。sqrt函数是数学函数,其头文件为math.h文件。scanf和printf是标准输入输出函数,其头文件为stdio.h。2)/*/注释语句可出现在一行中的最右侧,也可独成为一行。注释也可以用“/”符号标识注释内容,这种注释只在一行有效,在执行语句的前面和中间不能使用这种注释。3)本例中主函数体分为两部分,一部分为说明部分,另一部为执行部分。说明是指变量的类型说明。语言规定,源程序中所有用到的变量都必须先定义,后使用,否则将会出错。本例中使用了两个变量x,y,用来表示输入的自变量和sqrt函数值。说明部分后的四行为执行部分或称为执行语句部分,用以完成程序的功能。执行部分的第一行是输出语句。第二行为输入语句。第三行是调用sqrt函数并把函数值送到变量y中。第四行是用printf 函数输出变量y的值。4)运行本程序时,首先在显示器屏幕上给出提示串input number,这是由执行部分的第一行完成的。用户在提示下从键盘上键入某一数,如9,按回车键(enter),接着在屏幕上给出计算结果。程序分析:17格式输入格式输出函数简介 scanf和 printf一般形式为:nprintf或scanf(格式控制,参数表)n 格式控制是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。各种类型的格式表示法可参阅后续章节。在printf函数中还可以在格式控制内出现非格式控制字符,这时在显示屏幕上将按原样输出。参数表中给出了输入或输出的量。当有多个量时,用逗号间隔。例如:n printf(2*sqrt(%f)+1=%fn,x,y);n其中%f为格式字符,表示按实数处理。它在格式串中两次现,分别对应了x和y两个变量。其余字符为非格式字符则按原样输出在屏幕上。18程序运行结果:程序运行结果:input two numbers:a,binput two numbers:a,b5,95,9max=9max=9例1.3求两个数的最大值。#includeint max(int x,int y)/*定义定义max函数函数*/int m;if(xy)m=x;elsem=y;return m;/*把结果返回主调函数把结果返回主调函数*/void main()/*主函数入口,程序执行起点主函数入口,程序执行起点*/int a,b,c;/*变量说明变量说明*/int max(int a,int b);/*函数说明函数说明*/printf(input two numbers:a,bn);scanf(%d,%d,&a,&b);/*输入输入a,b的值的值*/c=max(a,b);/*调用调用max函数函数*/printf(max=%dn,c);/*输出两数的最大值输出两数的最大值*/19程序分析:n程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。n本程序由两个函数组成,主函数和max 函数。函数之间是并列关系。可从主函数中调用其它函数。max 函数的功能是比较两个数的大小,然后把较大的数返回给主函数。max函数是一个用户自定义函数,其返回值类型是整型。因此在主函数中要给出说明。在程序的说明部分中,不仅可以有变量说明,还可以有函数说明。在程序的每行后用/*和*/括起来的内容为注释部分,程序不执行注释部分。n上例中程序的执行过程是,首先在屏幕上显示提示字符串,请用户输入两个数,回车后由scanf函数语句接收这两个数,并送入变量a,b中,然后调用max函数,把a,b 的值传送给max函数的参数x,y。在max函数中比较x,y的大小,把大者通过中间变量m返回(return m)给主函数的变量c,最后在屏幕上输出c的值。202.C程序结构特点通过上述例子,可以对源程序的结构特点归纳如下1)一个语言源程序可以由一个或多个源文件组成。2)每个源文件可由一个或多个函数组成。(main主函数、系统提供printf、scanf函数、用户定义max函数)3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。程序总是从main()处开始执行,而不管main()在源文件中的位置。4)源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“”之后不能加分号。6)C语言用函数进行输入输出,如printf(),scanf()。7)C语言用/*/或/作注释。注释部分便于阅读程序的人理解程序员的设计意图,这是一个良好的习惯。8)C程序书写格式自由,一个语句可以占多行,一行也可以有多个语句。213.书写C程序时应遵循的规则从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下的规则:1)一个说明或一个语句单独占一行。2)用 括起来的部分,通常表示了程序的某一层次结构。一般与该结构语句的第一个字母对齐,并单独占一行。3)低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来层次清晰、结构明了,增加程序的可读性。224.语言的字符集 字符是组成语言的最基本的元素。语言字符集由字母,数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉字或其它可表示的图形符号。1)字母小写字母az共26个,大写字母AZ共26个,2)数字09共10个 3)空白符空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。4)标点和特殊字符231.3算法表示方法算法表示方法1.基本概念介绍n做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。在详细展开算法内容前,先介绍几个基本概念。程序数据结构+算法。数据结构是程序中用到的数据的构造形式及其类型。对于面向对象程序设计,强调的是数据结构,而面向过程的程序设计语言如C语言,主要关注的是算法。算法是程序的核心,也是面向对象程序设计的基础。24n结构化设计是指任何复杂的程序皆可由顺序、分支、循环三种基本结构组成。n程序设计的一般步骤是:设计算法描述算法编写程序检查程序编译调试和运行程序。n由此,对于程序的概念,我们可以这样理解:n程序算法+数据结构+程序设计方法+语言工具和环境n程序设计的关键是解题的方法与步骤算法。算法可分为两大类:数值运算算法和非数值运算算法。数值运算算法:即求数值解,通过运算得出一个具体值,数值运算一般有现成的模型,算法较成熟。非数值运算算法:用于事务管理,如图书检索、人事管理等。具体对语言而言,其语法就是工具,是算法的一个具体实现和描述。25先看两个常用的简单算法:例1.4累加,求:1+2+3+4+5+100。n 第一步:1+2 S(结果)n 第二步:S+3 S(结果)n 第三步:S+4 S(结果)n n 第九十九步:S+100 S(结果)n这样的算法虽然正确,但太繁琐。改进的算法:n第一步:令x1;n第二步:令i2;n第三步:使x+i,和仍放在x中,可表示为x+ix;n第四步:使i的值+1,即i+1i。n第五步:若i100,返回重新执行步骤第三步以及其后的第四步和第五步;否则,算法结束。26例1.5有10个工人,要求查找其中工资高于1500元的人员,并输出。n算法分析:n如用n表示工人序号,ni表示第i个工人的序号,g表示工人的工资,gi表示第i个工人的工资。n算法表示:n第一步:1i。n第二步:如果gi1500,则打印ni和gi,否则不打印。n第三步:i+1i。n第四步:若i10,返回第二步,否则结束。一个优秀的算法应该具备以下特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。272.常用算法的表示方法n算法的表示方法有很多种,常用的有:自然语言描述、伪代码、流程图、NS图等。在这里重点介绍流程图和NS图。n用流程图表示算法 n一个流程图包括:表示相应操作的框,带箭头的流程线,框内外必要的文字说明。几何图形框的含义如下图所示。起止框起止框输入输出框输入输出框判断框判断框处理框处理框流程线流程线连接点连接点28例1.6用流程图表示例1.4和1.5 29一个流程图,包括以下几部分:n表示相应操作的框;n带箭头的流程线;n框内外必要的文字说明;n注意,画流程线时,不要忘记画箭头,因为它是反应流程的执行先后次序的,如不画出箭头就很难判断各框的执行次序了。30根据结构化程序设计的思想,任何一个程序都由顺序、循环、选择三种基本结构组成,其流程图结构如下所示。顺序结构顺序结构ABABP不成立成立AP不成立成立AP不成立成立AP成立不成立循环结构循环结构选择结构选择结构31用N-S流程图表示算法 顺序结构顺序结构AB选择结构选择结构循环结构循环结构32用计算机语言表示算法 例1.7用C语言改写示例1.4 例1.8用C语言改写示例1.5#includevoid main()int i;float arr10;printf(please input the salary);for(i=0;i=9;i+)scanf(%f,&arri);for(i=0;i=1500)printf(the%ds salary is%fn,i+1,arri);#includevoid main()int i,s;i=2;s=1;while(i=100)s=s+i;i=i+1;printf(sum is%dn,s);331.4 运行C语言程序的基本步骤#include文件文件C库文件库文件.C 源程序源程序.obj目标程序目标程序.exe 可执行程序可执行程序#include文件文件程序开发过程34写好一个程序后,要经过这样几个步骤:上机输入与编辑源程序对源程序进行编译与库函数连接运行目标程序。如下图所示,其中实线表示操作流程,虚线表示文件的输入输出。35Turbo C+3.0集成开发环境 关闭按钮关闭按钮窗口名称窗口名称最大化最大化/还原按钮还原按钮光标所在行号光标所在行号光标所在列号光标所在列号水平滚动条水平滚动条编辑窗口编辑窗口垂垂直直滚滚动动条条信息窗口信息窗口36小小结结C语言程序是由一系列函数组成的模块结构。C语言程序的书写格式自由、有较大的灵活性,但一般应采用一定的格式书写,养成良好的编程风格。C语言是一种编译型的高级程序设计语言,其开发过程包括:编辑、编译、连接、运行四个步骤。具体操作应参阅操作系统支撑环境的有关资料。37作业n复习1.2,1.3n熟悉和理解1.3,掌握1.3中提到的常用算法的思路和解决问题的步骤38C语言运行环境nTurbo C2.0版本编译系统启动的命令如下:n进入开机画面第二项win98n在win98下四个选项中进入real dos项nC:tc 回车n退出该系统时,先选择主菜单File,再在其下拉菜单中选择Quit子菜单项,或直接按下【Alt+X】键,便可退出该系统。39常用命令有:n“Ins”键用来设置“插入”或“修改”方式。在“插入”方式下,从键盘上键入的字符被插入在当前光标之前;在“修改”方式下,从键盘上键入的字符将替代当前光标处的字符。n“Del”键用来删除光标所在的字符。n使用光标键可以上下左右移动光标。n使用“Ctrl+N”组合件可在当前光标所在行上插入一空行。n使用“Ctrl+Y”组合键可删除当前光标所在行。n使用退格键可删除当前光标前一个字符。40基本操作:基本操作:nF10-调用主菜单 F2-存盘 F3-打开nAlt+F9-Compile Ctrl+F9-RunnAlt+F5-User ScreenNew编辑新文件Load装入已有文件Save重新存储文件Write to按指定名字存储文件Change dir指定目录下的文件名Pick显最近编辑过的若干个文件名Directory显示当前目录下指定扩展名的所有文件OS shell进入DOS系统,出现DOS系统提示符,可直接执行DOS命令。键入Exit命令返回原来的编译系统状态Quit退出该编译系统,返回到DOS操作系统状态
展开阅读全文