1、 1 1语言的诞生与发展语言的诞生与发展(1 1)在)在C C语言诞生以前,系统软件主要是用汇编语言语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语是人们盼望有一种兼有汇编语言和高级语言特性的新语言。言。(2 2)语言是贝尔实验室于)语言是贝尔实验室于7070年代初研制出来
2、的,年代初研制出来的,后来又被多次改进,并出现了多种版本。后来又被多次改进,并出现了多种版本。8080年代初,美年代初,美国国家标准化协会(国国家标准化协会(ANSIANSI),),根据语言问世以来各种根据语言问世以来各种版本对语言的发展和扩充,制定了版本对语言的发展和扩充,制定了ANSI CANSI C标准(标准(19891989年再次做了修订)。年再次做了修订)。(本书选定的上机环境是(本书选定的上机环境是TC V2.0TC V2.0(DOSDOS操作系操作系统)统)。C C语言同时具有汇编语言和高级语言的优势。语言同时具有汇编语言和高级语言的优势。(1 1)语言简洁、紧凑,使用方便、灵活
3、。)语言简洁、紧凑,使用方便、灵活。(2 2)运算符极其丰富。)运算符极其丰富。(3 3)生成的目标代码质量高,程序执行效率高。)生成的目标代码质量高,程序执行效率高。(4 4)可移植性好(较之汇编语言)。)可移植性好(较之汇编语言)。(5 5)可以直接操纵硬件。)可以直接操纵硬件。(6)(6)在在C C语言中,除实现语言中,除实现顺序、选择顺序、选择和和循环循环三种基本结构等的三种基本结构等的9 9条控制语句外,输入输出操条控制语句外,输入输出操作均由标准库函数来实现。作均由标准库函数来实现。所以所以学习学习C C语言,不仅要学习这语言,不仅要学习这9 9条控制语条控制语句和各种运算符,而且
4、要学习并掌握常用标准句和各种运算符,而且要学习并掌握常用标准库函数的使用库函数的使用。例例1:1:main()main();1.1.mainmain代表主函数代表主函数.每个每个c c程程序有且只有一个主函数序有且只有一个主函数.2.2.函数体是由函数体是由 括起来的括起来的.3.3.C C语言规定分号为语句的语言规定分号为语句的结束符结束符,每条语句都用分号每条语句都用分号结束结束.4.4.对于单独一个分号来说也对于单独一个分号来说也是一条语句是一条语句,只不过语句部只不过语句部分为空分为空,即空语句即空语句,所以例所以例1 1是包括空语句的是包括空语句的C C程序程序.1.printf是是
5、C语言中的输出函数语言中的输出函数,功能功能:将双引号内的字符串原样将双引号内的字符串原样输出输出.我们注意这条语句结束后有一个分号我们注意这条语句结束后有一个分号.2.n在在C语言中表示换行符语言中表示换行符,是一个控制字符是一个控制字符,表示在输出这条语表示在输出这条语句后回车换行句后回车换行.3./*/间的内容作为注释部分间的内容作为注释部分,只起到说明的作用只起到说明的作用,不影响程序不影响程序的运行的运行.它只是给人看的它只是给人看的,可以提高程序的可读性,对编译和可以提高程序的可读性,对编译和运行不起作用运行不起作用,因此注释可以加在程序中的任何位置因此注释可以加在程序中的任何位置
6、.4.运行结果运行结果:Its a book!(在用户屏上输出该语句在用户屏上输出该语句,并且因为有并且因为有n这个换行符这个换行符,光标会移光标会移到下一行开头处到下一行开头处.)例例2:main()printf(“Its a book!n”);/*输出语句输出语句*/1.int表示整型表示整型,这一行是声明部分这一行是声明部分,定义变量定义变量a,b,sum为整型变量为整型变量,这条语句相当于这条语句相当于int a;int b;int sum;2.两个赋值语句两个赋值语句(把把123赋值给赋值给a,把把456赋值给赋值给b)这样这样a就等于就等于123,b就等于就等于456.例例3:ma
7、in()int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is%d n”,sum);3.赋值计算赋值计算(把把a和和b的和赋值给的和赋值给sum)这样这样sum就等于就等于a,b之和了之和了.(sum=123+456=579).4.%d是输入输出是输入输出“格式字符串格式字符串”,用来指定数据的类型用来指定数据的类型.%d表示表示以十进制整数类型输出以十进制整数类型输出,在执行输出时在执行输出时,此位置上代以一个十进制此位置上代以一个十进制整数数值整数数值.(其他的格式字符串其他的格式字符串:%c,%s,%f).5.5.第一个第一个sumsum原样输出原样
8、输出.第二个第二个sumsum表示要输出的变量表示要输出的变量,它的值就它的值就是是a+ba+b的值的值(579),(579),而且这个值就会替代而且这个值就会替代%d d的位置的位置.6.6.执行结果执行结果:sum is 579sum is 579l已知三角形三边长a、b、c的大小,求三解形的面积?请编程实现。#include”math.h”main()int a,b,c;float s,ss;a=3;b=4;c=5;s=(a+b+c)/2.0;ss=sqrt(s*(s-a)*(s-b)*(s-c);printf(”ss=%f”,ss);若要通过键盘输入三边怎么办?若要通过键盘输入三边怎么
9、办?scanf(”%d%d%d”,&a,&b,&c);scanf(”%d%d%d”,&a,&b,&c);l自定义功能函数来解决三角形面积问题。自定义功能函数来解决三角形面积问题。#include“math.h”main()int a,b,c;float s;scanf(%d%d%d,&a,&b,&c);s=area(a,b,c);/*调用函数调用函数*/printf(s=%fn,s);float area(float x,float y,float z)float s,ss;s=(a+b+c)/2.0;ss=sqrt(s*(s-x)*(s-b)*(s-c);return(ss);returnr
10、eturn是将是将z z的值返回给主的值返回给主函数函数main.main.返返回值通过函数回值通过函数名名areaarea带回到带回到函数的调用处函数的调用处.经过执行经过执行areaarea函数得到一个函数得到一个返回值返回值(即即areaarea函数中变函数中变量量ssss的值的值)把把这个值赋给这个值赋给s,s,然后输出然后输出s s的的值值.l说明:程说明:程序如右边序如右边的编制方的编制方法,实际法,实际上是不能上是不能正确运行正确运行行的。行的。#include“math.h”main()int a,b,c;float s;scanf(%d%d%d,&a,&b,&c);s=are
11、a(a,b,c);/*调用函数调用函数*/printf(s=%fn,s);float area(float x,float y,float z)float s,ss;s=(a+b+c)/2.0;ss=sqrt(s*(s-x)*(s-b)*(s-c);return(ss);程序如何才能运行正常呢?程序如何才能运行正常呢?l说明说明:被调函数在主函数被调函数在主函数后面后面,且函数类型为非整且函数类型为非整数类型时数类型时,一定要使用函一定要使用函数声明数声明;函数声明位置与函数声明位置与主函数变量定义位置一主函数变量定义位置一样样.声明格式声明格式:函数类型函数类型 函数名函数名(形参类形参类型
12、型,开参类型开参类型)或或函数类型函数类型 函数名函数名(形参类形参类型型 形参形参,形参类型形参类型 形形参参)#include“math.h”main()int a,b,c;float s;scanf(%d%d%d,&a,&b,&c);s=area(a,b,c);/*调用函数调用函数*/printf(s=%fn,s);float area(float x,float y,float z)float s,ss;s=(a+b+c)/2.0;ss=sqrt(s*(s-x)*(s-b)*(s-c);return(ss);float area(float,float,float);#include“
13、math.h”float area(float x,float y,float z)float s,ss;s=(a+b+c)/2.0;ss=sqrt(s*(s-x)*(s-b)*(s-c);return(ss);main()int a,b,c;float s;scanf(%d%d%d,&a,&b,&c);s=area(a,b,c);/*调用函数调用函数*/printf(s=%fn,s);l总结总结:一一.一个一个c程序的组成程序的组成:编译预处理部分编译预处理部分(可选可选)main()说明部分说明部分 /*变量定义等变量定义等*/执行部分执行部分 /*输入输出计算等输入输出计算等*/其他函数
14、其他函数(可选可选,位置任意位置任意)C C语言是一种函数式语言,其程序基本组成语言是一种函数式语言,其程序基本组成(单位单位)是函数是函数每个每个C C程序必须有一个、也只能有一个主函数程序必须有一个、也只能有一个主函数mainmain不管主函数在程序中的位置如何,程序执行总是从主函数开不管主函数在程序中的位置如何,程序执行总是从主函数开始始所有变量必须先定义(规定数据类型)后使用所有变量必须先定义(规定数据类型)后使用每个语句必须用分号每个语句必须用分号“;”结束(注意是结束(注意是“每个语句每个语句”而不而不“每行语句每行语句”)编译预处理命令不是语句(行末不能用分号结束)编译预处理命令
15、不是语句(行末不能用分号结束)C C语言本身没有输入语言本身没有输入/输出语句,其输入输出语句,其输入/输出功能须通过调输出功能须通过调用标准函数来实现用标准函数来实现使用系统提供的标准库函数或其他文件提供的现成函数时,使用系统提供的标准库函数或其他文件提供的现成函数时,必须使用必须使用“文件包含文件包含”(除了(除了printfprintf和和scanfscanf语句)语句)主函数可以调用其他各种函数主函数可以调用其他各种函数,但其他函数不能调用主函数但其他函数不能调用主函数.C C语言是一种通过编译程序处理的高级程序设计语言。语言是一种通过编译程序处理的高级程序设计语言。所以其上机的处理流
16、程可用以下示意图表示:所以其上机的处理流程可用以下示意图表示:在微机上,通常用来编写、编译、连接、调试和执行在微机上,通常用来编写、编译、连接、调试和执行C C语言程序的是语言程序的是BorlandBorland公司开发的集成化软件公司开发的集成化软件Turbo CTurbo C。源程序源程序(.c)目标程序(目标程序(.obj)可执行程序可执行程序(.exe)编译编译 连接连接二二.TC的菜单的菜单(通过通过F10键和键和Esc键切换键切换):File Edit Run Compile Project Options Debug Break/Watch文件操作文件操作编辑编辑编译编译运行运行
17、项目文件项目文件选项选项调试调试中断中断观察观察1.File:Load(打开已有的打开已有的C程序文件程序文件)New(新建新建C程序文程序文件件)Save(保存保存,文件名以文件名以.c为扩展名为扩展名,如如abc.c)Quit(退出退出TC)2.编辑源文件编辑源文件:在在Edit(编辑编辑)状态下输入状态下输入.3.编译源文件编译源文件:选择并执行选择并执行Compile/Make EXE File项项(快捷键:(快捷键:F9),),则则TC将自动完成对当前正在编辑的源程将自动完成对当前正在编辑的源程序文件的编译、连接,并生成可执行文件。序文件的编译、连接,并生成可执行文件。4.运行与查看
18、结果运行与查看结果(1)运行当前正在编辑的源程序文件)运行当前正在编辑的源程序文件 选择并执行选择并执行Run/Run项(快捷键:项(快捷键:Ctrl+F9),),程程序运行结束后,序运行结束后,仍返回到编辑窗口。仍返回到编辑窗口。(2)查看运行结果)查看运行结果 选择并执行选择并执行Run/User Screen项(快捷键:项(快捷键:Alt+F5)。)。查看完毕后,按任一键返回编辑窗口。查看完毕后,按任一键返回编辑窗口。5.编辑下一个新的源程序编辑下一个新的源程序 选择并执行选择并执行File/New项即可。项即可。如果屏幕提示如下确认信息:如果屏幕提示如下确认信息:NONAME.C no
19、t saved.Save?(Y/N)如果不需要保存当前正在编辑的源程序,则键入如果不需要保存当前正在编辑的源程序,则键入“N”如果需要保存当前正在编辑的源程序,则键入如果需要保存当前正在编辑的源程序,则键入“Y”进入下一步操作。进入下一步操作。系统提示换名:系统提示换名:NONAME.C直接输入你给源程序文件起的名字再按回车即可。直接输入你给源程序文件起的名字再按回车即可。6.退出退出TC返回返回DOS:File/Quit(快捷键快捷键:Alt+X键键)lTurbo CTurbo C基本操作基本操作 Alt+F Alt+F 建立新文件建立新文件 Load/PickLoad/Pick 调入现有文
20、件调入现有文件 SaveSave 存盘(存盘(F2F2)Write toWrite to 换名存盘换名存盘 Ctrl+F9 Ctrl+F9 运行程序(自动完成编译运行程序(自动完成编译/连接)连接)Alt+F5 Alt+F5 观看运行结果观看运行结果l程序调试常用操作程序调试常用操作 F5 F5 显示显示/关闭观察、出错提示等窗口关闭观察、出错提示等窗口 F6 F6 编辑窗口(编辑窗口(Edit)和信息窗口(和信息窗口(Message)窗口切换窗口切换 Alt+BAlt+B 设置断点设置断点/变量观察变量观察(Break/Watch)常用:常用:增加观察的变量名增加观察的变量名(Add watch)F8 F8 单步执行单步执行 Ctrl+F2Ctrl+F2 程序重置(重新开始)程序重置(重新开始)l程序编辑常用操作程序编辑常用操作 Ctrl+KB Ctrl+KB 设置块头设置块头 Ctrl+KK Ctrl+KK 设置块尾设置块尾 Ctrl+KC Ctrl+KC 块复制块复制 Ctrl+KV Ctrl+KV 块移动块移动 Ctrl+Y Ctrl+Y 删除一行删除一行BACKBACK