1、1.4 C语言程序的基本结构 include void main()/*求两数之和*/int a,b,sum;/*这是定义变量*/a=123;b=456;sum=a+b;printf(“sum is%dn”,sum);函数是程序的基本单位。一个源程序至少包含一个函数(main函数)。为增加程序的可读性,源程序中应当加上必要的注释。程序中可用*对程序的任何部分作注释。注释对程序的执行没有任何影响。例例1.7第1页/共21页C语言程序的基本结构include void main()/*void main()/*主函数主函数*/int a,b,c int a,b,c;/*/*定义变量定义变量*/sc
2、anf(scanf(“%d,%d%d,%d”,&a,&b),&a,&b);/*/*输入变量输入变量a a和和b b的值的值*/c=max(a,b)c=max(a,b);/*/*调用调用maxmax函数,将得到的值赋给函数,将得到的值赋给c*/c*/printf(printf(“max=%dmax=%d”,c),c);/*/*输出输出c c的值的值*/int max(int x,int y)/*int max(int x,int y)/*定义定义maxmax函数,函数值为整型,函数,函数值为整型,x,yx,y为形式参数为形式参数*/int z int z;/*max/*max函数中用到的变量函数
3、中用到的变量z z,也要加以定义,也要加以定义*/if(x y)z=x if(x y)z=x;else z=yelse z=y;return(z)return(z);/*/*将将z z返回,通过返回,通过maxmax带回调用处带回调用处*/CC程序中必须有一个而且只能有一个程序中必须有一个而且只能有一个main()main()函数,不论函数,不论main()main()函数处于程函数处于程序中的什么位置,序中的什么位置,CC程序执行时总是从程序执行时总是从main()main()函数开始。函数开始。CC程序的执行与程序的执行与函数位置无关。函数位置无关。被调用的函数可以由系统提供(库函数),也
4、可以根据需要自己编制。被调用的函数可以由系统提供(库函数),也可以根据需要自己编制。例例1.8第2页/共21页n通过以上几个例子,我们对程序的组成和形式有一个初步的了解:n程序是由函数构成的。main函数printf 和scanf库函数第3页/共21页n一个函数由函数的首部和函数体两个部分组成:(1)函数的首部包括函数名、函数类型、函数属性、函数参数(形参)名、形式参数类型,例如例1.8中的max 函数的说明部分为:int max (int x,int y)函数类型 函数名 参数类型 参数名 函数名后面必须跟一对圆括号,但括号中的函数参数可以没有,如main()。(2)函数体。即函数说明部分下
5、面的花括弧 内的内容。如果一个函数内有多个花括弧,则最外层的一对 为函数体的范围。第4页/共21页n3.一个程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何。n.程序书写格式自由,一行内可以写多个语句,一个语句也可以分写在多行上。n.每个语句和数据定义的最后必须有一个分号。分号是语句的必要组成部分。例如:cab;非常重要的一点是什么是一个语句非常重要的一点是什么是一个语句第5页/共21页n.语言本身没有输入输出语句。输入和输出操作都是由库函数scanf和printf等函数来完成的。对输入输出实行“函数化”。n可以用*对程序中的任何部分作注释。一个好的,有使用价值的源程
6、序都应当加上必要的注释,以增加程序的可读性。第6页/共21页本章难点再分析 算法设计举例问题:开发一个程序求全班学生某门课程的平均成绩。要求程序每次运行时班级人数可为任意。设计方法用结构化程序设计方法(“自顶向下、逐步求精”的方法)来解决这个问题并用伪代码来表示求精过程中得到的算法。首先,顶层描述程序的整个功能,然后将其分解为一系列较小的任务,并按照执行顺序列出这些任务。每一步的求精都是一个完整的算法说明,只是每层的细节在变化。重复上述求精过程直到表示每一任务的伪代码能够转化为程序设计语言(如C)指令或程序段为止。第7页/共21页算法设计举例问题描述求未知人数班级的平均成绩求未知人数班级的平均
7、成绩数据设计(数据及其存储)总成绩(记为总成绩(记为totaltotal)成绩个数计数器(记为成绩个数计数器(记为countercounter)每次输入的成绩(记为每次输入的成绩(记为scorescore)全班平均成绩(记为全班平均成绩(记为averageaverage)第8页/共21页算法设计举例逐步求精n设计步骤1、初始化阶段(对程序变量初始化);2、处理阶段(输入数据值并对程序中的变量作相应调整);3、终止阶段(计算和打印最终结果)。n任务分解n初始化变量;n输入、求和及对输入的成绩计数;n计算并打印班级平均成绩;初始化总成绩total为0;初始化计数器counter为0;读入第一个成绩
8、放到score中;当score不等于标记值时,重复以下工作:将score加到total中;计数器值counter加1;读入下一个数据放到score中;如果counter0,那么执行以下工作:将total除以counter的结果放到average中;打印average;否则执行 打印信息“没有输入成绩”第9页/共21页算法设计举例C程序printf(“输入下一个成绩,-1表示输入结束”);/*屏幕提示*/scanf(“%d”,&score);/*终止阶段*/if(counter!=0)average=total/counter;printf(“全 班 平 均 成 绩 为%.2fn”,averag
9、e);else printf(“没 有 输 入 成 绩n”);/*用标记值控制循环求全班平均成绩*/#include main()float average,total;int counter,score;/*初始化*/total=0.0;counter=0;/*处理阶段*/printf(“输入成绩,-1表示输入结束”);/*屏幕提示*/scanf(“%d”,&score);while(score!=-1)total=total+score;counter+;第10页/共21页1.5 C程序的上机步骤程序的上机步骤第11页/共21页在纸上写好一个程序后,要经过以下几个步骤:上机输入与编辑源程序
10、对源程序进行编译与库函数连接运行目标程序这样几个步骤。以上过程如图1.1所示。其中实线表示操作流程,虚线表示文件的输入输出。例如,编辑后得到一个源程序文件f.c,然后在进行编译时再将源程序文件f.c输入,经过编译得到目标程序文件f.obj,再将目标程序文件f.obj输入内存,与系统提供的库函数等连接,得到可执行的目标程序文件f.exe,最后把f.exe调入内存并使之运行。在了解了C语言的初步知识后,读者最好上机运行一个C程序,以建立对C程序的初步认识。第12页/共21页1.用Turbo C 运行C程序的步骤Turbo C是在微机上广泛使用的编译程序。它具有方便、直观、易用的界面和丰富的库函数。
11、它向用户提供一个集成环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。为了能使用Turbo C,必须先将Turbo C编译程序装入磁盘的某一目录下,例如放在C盘根目录下一级TC子目录下。第13页/共21页图1.2(1)调用调用 Turbo C程序。如果用户的当前目录是程序。如果用户的当前目录是Turbo C编译程序所在的子目录(例如编译程序所在的子目录(例如TC子目子目录),只需从键盘键入录),只需从键盘键入“tc”命令即可命令即可:第14页/共21页8个菜单项:File Edit Run Compile Project Option Debug break/w
12、atch用户可以通过以上菜单项来选择使用Turbo C集成环境所提供的Turbo C的各项主要功能。以上8个菜单项分别代表:文件操作、编辑、运行、编译、项目文件、选项、调试、中断/观察等功能。用键盘上的“”和“”键可以选择菜单条中所需要的菜单项,被选中的项以“反相”图1.3形式显示第15页/共21页(例如主菜单中的各项原来以白底黑字显示,被选中时改为以黑底白字显示)。此时若按回车键,就会出现一个下拉菜单。例如在选中“File”菜单并按回车键后,屏幕上“File”下面出现下拉菜单,见图1.3所示。它是一个子菜单,提供多项选择。可以用“”键选择所需要的项。例如选择“New”处,并按回车键,表示要建
13、立一个新的C源程序。图图1.3第16页/共21页如果选择“Load”,并按回车键,表示要调入一个已有的源文件,此时屏幕上出现一个对话框(见图1.4)。要求你输入该文件的名字。用户可输入该文件名,例如:tc1.c,如果已存在此文件,则系统会将此文件调入内存并显示在屏幕上。此时自动转为编辑(Edit)状态。如果原来不存在此文件名,则系统会建立一个以指定的名字命名的新文件。图图1.4第17页/共21页(2)编辑源文件。在编辑(Edit)状态下可以根据需要输入或修改源程序。(3)编译源程序。选择“Compile”菜单并在其下拉菜单中选择“Compile to OBJ”,则进行编译,得到一个后缀为.ob
14、j的目标程序(为方便起见,在一般书刊中,以上菜单的选择以“Compile/Compile to OBJ”表示)。然后再选菜单“Compile/Link EXE file”,进行连接操作,可得到一个后缀为.exe的可执行文件。也可以将编译和连接合为一个步骤进行。选菜单“Compile/Make EXE file”或按“F9”键,即可一次完成编译和连接。在屏幕上会显示编译或连接时有无错误和有几个错误,见图1.5所示。此时按任何一个键,图1.5所显示的“编译信息框”会第18页/共21页图1.5 消失,屏幕上会恢复显示源程序,光标停留在出错之处。在屏幕的下半部分显失,屏幕上会恢复显示源程序,光标停留在
15、出错之处。在屏幕的下半部分显示出有错误的行和错误的原因。根据此信息修改源程序。修改完毕认为无错示出有错误的行和错误的原因。根据此信息修改源程序。修改完毕认为无错后,再按后,再按“F9”,再次进行编译和连接,如此反复进行到不显示出错为止。,再次进行编译和连接,如此反复进行到不显示出错为止。第19页/共21页(4)执行程序。按“F10”键,在窗口上部的主菜单中某一项处出现“反相”显示(黑色亮块)。File Edit Run Compile Project Option Debug Break/watch用“”键将亮块移到“Run”,按回车键,在其下拉菜单中选择“Run”项,或直接按Ctrl+F9键
16、,系统就会执行已编译好的目标文件。此时,TC集成环境窗口消失,屏幕上显示出程序运行时输出的结果。如果程序需要输入数据(如例1.3),则应在此时,从键盘输入所需数据,然后程序会接着执行,输出结果。如果发现运行结果不对,要重新修改源程序,可以再按“F10”键,并用“”使亮块移到“Edit”处,第20页/共21页 按回车键,即进入编辑状态,可以根据需要修改源程序,并重复上述(2),(3),(4)步,直到得到正确结果为止。(5)可以用“Alt”和“X”键(同时按此两键),脱离Turbo C,回到DOS命令状态。此时,可以用DOS命令显示源程序和运行程序C TYPE tc1.c (列出源程序清单)C tc1 (执行目标程序 tc1.exe)如果想再修改源程序,可以重新执行步骤(1),并输入源程序文件名即可。第21页/共21页