121.1C语言出现的历史背景C语言是国际上流行的、很有发展前途的计算机高级语言。它既可以用来编写系统软件,也可以用来编写应用程序。编写系统软件操作系统编译系统系统实用程序编写应用软件数据处理、科学工程、数值计算等领域高校开设程序设计课程的必修首选语言3以前操作系统等系统软件主要采用汇编语言编写。一般的高级语言难以实现汇编语言的某些操作,特别是针对硬件的一些操作(如:内存地址的读写、二进制位的操作)。人们设法寻找一种既具有一般高级语言特性,又具有低级语言特性的语言,C语言就在这种情况下应运而生。1.1C语言出现的历史背景4C语言:1.20世纪70年代初由美国贝尔实验室的DennisM.Ritchie设计的2.为描述和实现UNIX系统3.ANSI于1983年成立了专门定义C语言标准的委员会,花了6年时间使C语言迈向了标准化1.1C语言出现的历史背景5从C语言的发展历史可以看出,C语言是一种既具有一般高级语言特性,又具有低级语言特性的程序设计语言。C语言从一开始就是用于编写大型、复杂系统软件的,当然C语言也可以用来编写一般的应用程序。也就是说:C语言是程序员的语言!1.1C语言出现的历史背景常见的C语言版本有:TurboC,TurboC++,BorlandC++C++Builder(Windows版本)MicrosoftCVisualC++(Windows版本)61.2C语言的特点1.C语言的语言成分简洁,紧凑2.C语言的运算符丰富、功能更强大例如:aC语言具有复合的赋值运算符“+[-*/%]=”(加等、减等、乘等、除等),“=”“=”(右移等、左移等),“&[^|]=”(与等、或等、非等)。bC语言有条件运算符“?:”可代替简单的if/else语句。cC语言中连赋值这种操作都定义为运算符,也就是说赋值操作本身可以作为表达式的一部分,参与运算。3.C语言拥有丰富的数据类型74.C语言是结构化的程序设计语言C语言具有结构化的控制语句if/else,switch/case,for,while,do…while函数是C语言程序的模块单位。5.C语言对语法限制不严格,程序设计灵活6.C语言可以实现汇编语言的大部分功能(支持对硬件的操作)7.C语言编译后生成的目标代码小,质量高,程序的执行效率高8.C语言编写的程序具有良好的可移植性(相比汇编语言)1.2C语言的特点81.3C语言基本语法成分1.C语言字符集:字符是C语言的最基本的元素,C语言字符集由字母、数字、空白符、标点和特殊字符组成。a字母:A-Z,a-zb数字:0-9c空白符:空格,制表符(跳格),换行符(空行)的总称。d标点符号、特殊字符:!#%^&+-*/=~\|.,;:?‘“()[]{}92.标识符(名字):用来标识变量名、符号常量名、函数名、数组名、类型名等程序对象的有效字符序列。1.3C语言基本语法成分建议:标识符命名应当有一定的意义,做到见名知义。C语言标识符定义规则:a标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。b区分大小写:一般变量名小写,常量名大写,但不绝对。c标识符不能与“关键词”同名,也不与系统预先定义的“标准标识符”同名。103.关键词:C语言规定的具有特定意义的字符串。4.运算符:运算符将常量、变量、函数连接起来组成表达式,表示各种运算。5.分隔符:逗号,空格。起分隔、间隔作用。6.注释符:“/*”和“*/”构成一组注释符。1.3C语言基本语法成分111.4简单的c程序介绍例1.1:输出一行信息:ThisisaCprogram.main(){printf(“ThisisaCprogram.\n”);}例1.2:计算两数之和,并输出结果。main()/*计算两数之和*/{inta,b,sum;/*这是定义变量*/a=123;b=456;/*以下3行为C语句*/sum=a+b;printf(“sum=%d\n”,sum);}输出:sum=57912例3:输入a、b两个数,输出其最大值main(){inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);}intmax(intx,inty){intz;if(xy)z=x;elsez=y;return(z);}1.4简单的c程序介绍131.C程序由函数构成a一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其它函数。函数是C程序的基本单位1.4简单的c程序介绍b被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编写设计的函数。cC函数库非常丰富,ANSIC提供100多个库函数TurboC提供300多个库函数。142.main函数(主函数)是每个程序执行的起始点1.4简单的c程序介绍3.一个函数由函数首部和函数体两部分组成(1)函数首部:一个函数的第一行。函数类型函数名([函数参数类型1函数参数名1]…)注意:函数可以没有参数,但是后面的一对()不能省略。(2)函数体:函数首部下用一对{}括起来的部分。[声明部分]:在这部分定义本函数所使用的变量。[执行部分]:由若干条语句组成命令序列(可以在其中调用其它函数)。154.C程序书写格式自由1.4简单的c程序介绍5.可以使用/*……*/对C程序中的任何部分作注释6.C语言本身不提供输入/输出语句,输入/输出的操作是通过调用库函数(scanf,printf)完成。16库函数printf()与scanf()的使用一、函数printf()a功能:通过标准输出设备输出一组数据b格式:printf(格式控制,输出表列)1.格式控制由要输出的文字和数据格式说明组成2.要输出的文字除可以使用字母、数字、空格和一些数学符号以,还可以使用转义字符表示特殊的含义。3.数据格式说明由“%”开头,形式为:%数据输出宽度说明格式符例:printf(“Hello!”);printf(“%f,%f,themaxis%f\n”,a,b,c);17库函数printf()与scanf()的使用注意:a.数据输出宽度说明可以没有,这时表示按数据的实际值输出;b.数据格式说明要和后面的输出表列一一对应。例:printf(“Hello!”);printf(“%f,%f,themaxis%f\n”,a,b,c);18库函数printf()与scanf()的使用转义字符功能\n回车换行符,光标移到下一行行首\r回车不换行,光标移动到本行行首\t横向跳格(8位为一格,光标跳到下一格起始位置,如第9或17位等)\b退一格,光标往左移动一格\f走纸换页\\用于输出反斜杠字符“\”\’用于输出单引号字符“’”\”用于输出双引号字符“””\ddd三位八进制数ddd对应的ASCII码字符\xhh两位十六进制数hh对应的ASCII码字符19例:转义字符的使用main(){printf(“123456789012345678901234567890\n”);Printf(“123\t456\n”);Printf(“12345\b123\r9\n”);}运行结果:1234567890123456789012345678901234569234123举一反三:写出下列输出结果printf(“\tfirst\b\b\bsh\\\r\’No.1\’”);20库函数printf()与scanf()的使用格式符功能d以带符号的十进制形式输出整数(整数不输出正号)o以不带符号的八进制形式输出整数x以不带符号的十六进制形式输出整数u以不带符号的十进制的形式输出整数c以字符形式输出一个字符s输出一个或多个字符f以小数形式输出单、双精度数,默认输出6位小数e以标准指数形式输出单、双精度数,数字部分小数位数为6位21例:数据格式说明的使用main(){printf(“a=%4d,b=%-6.2f,c=%c,d=%s”,12,3.456,’A’,”hello”);}运行结果:a=12,b=3.46,c=A,d=hello举一反三:写出下列输出结果printf(“x=%d,y=%-6.2f,z=%2d”,2,8.999,300);22库函数printf()与scanf()的使用一、函数printf()a功能:通过标准输出设备输出一组数据b格式:printf(格式控制,输出表列)1.格式控制由输出的文字和数据格式说明组成2.输出表列可以是变量、表达式或者是数值。输出表列的类型决定了“格式控制”中使用的“数据格式符”,其个数决定了“数据格式说明”的个数。例如:已知a=3,则语句printf(“%d+%d=%d”,a,12,a+12);3+12=1523库函数printf()与scanf()的使用二、函数scanf()a功能:通过标准输入设备输入一组数据b格式:scanf(格式控制,地址表列)1.格式控制含义同printf2.地址表列是由若干个地址组成的表列。注意:a.如果格式控制中加入了格式说明以外的其它字符,则在输入数据时这些字符也要同样输入;b.输入的数据如果存放在变量中,变量的地址表示法是在变量前加上&符(数组不用)。24库函数printf()与scanf()的使用例:scanf(“%d,%d,%d”,&a,&b,&c);scanf(“%d%d%d”,&a,&b,&c);scanf(“x=%d,y=%d”,&x,&y);从键盘中输入对分别是:12,34,35123435x=5,y=825库函数printf()与scanf()的使用main(){intx,y,a1,b1,c1,a2,b2,c2;scanf(“x=%d,y=%d”,&x,&y);scanf(“%d,%d,%d”,&a1,&b1,&c1);scanf(“%d%d%d”,&a2,&b2,&c2);printf(“x=%d,y=%d\n”,x,y);printf(“a1=%d,b1=%d,c1=%d\n”,a1,b1,c1);printf(“a2=%d,b2=%d,c2=%d\n”,a2,b2,c2);}26库函数printf()与scanf()的使用运行结果:从键盘中输入时分别是:x=1,y=23,4,5678屏幕显示:x=1,y=2a1=3,b1=4,c1=5a2=6,b2=7,c2=8举一反三:1.写出语句scanf(“yy-mm-dd=%d-%d-%d”,&year,&month,&date);从键盘上的输入形式。2.思考:上式输入复杂,有没有更好的方法既可以表达输入的提示又可以简化输入量?271.5C程序的上机步骤程序程序是一组计算机可以识别和执行的指令,每一条指令使计算机执行特定的操作。.c.obj.exe源程序程序可以用高级语言或汇编语言编写,用高级语言或汇编语言编写的程序称为源程序。目标程序源程序经过“编译程序”翻译所得到的二进制代码称为目标程序。可执行程序目标程序与库函数连接,形成的完整的可在操作系统下独立执行的程序称为可执行程序。28编辑源程序1.5C程序的上机步骤TurboC的使用-编译源程序,产生目标代码-连接各个目标代码、库函数,产生可执行程序-运行程序