1C语言程序设计2教学内容第一章C语言概述第二章算法第三章数据类型、运算符与表达式第四章最简单的C程序设计第五章选择结构程序设计第六章循环控制第七章数组第八章函数第九章预处理命令第十章指针第十一章结构体第十三章文件3前言前言一、计算机语言1、机器语言2、汇编语言3、高级语言4、高级语言向机器语言的过渡高级语言源程序机器语言目标程序计算结果编译解释执行——机器指令的集合——符号化的机器语言——通用自然的算法语言4前言二、程序与程序设计——完成某一功能的计算机指令的有序集合1、程序2、程序设计——设计、编制、调试程序的过程53、程序设计的基本步骤(1)分析问题(2)确定解题思路和算法(3)编制流程图(4)编写源程序(5)静态检查(6)上机调试(7)正式运行前言6本章内容1.1C语言发展史1.2C语言特点1.3简单C程序分析第一章C语言概述返回7第一章C语言概述第一章C语言概述§1.1C语言发展史1960ALGOL60(AlgorithmicLanguage)198787ANSIC1990ISOC1972C(取BCPL第二个字母)1970B(取BCPL第一个字母)1978标准C1983ANSIC1967BCPL(BasicCombinedProgrammingLanguage)跳转8第一章C语言概述§1.2C语言特点1、简练、自由、结构化(32个关键字、9种控制语句)2、运算符丰富(附录Ⅲ)34种3、数据结构丰富4、可直接对硬件进行操作5、目标程序质量高6、可移植性好9第一章C语言概述§1.3简单C程序分析例1.1打印(显示)一串字符。运行结果:Thisisanexample./*example1.1*/main(){printf(“Thisisanexample.\n”);}10第一章C语言概述例1.2已知角度值45°,求正弦值的2倍。/*example1.2*/#include“math.h”main(){floatx,y;x=45;y=2*sin(x*3.14/180);printf(“Y=%f\n”,y);}运行结果:Y=1.41365011第一章C语言概述例1.3已知三角形三边a,b,c,求面积。/*example1.3*/#include“math.h”main(){floata,b,c,p,s;scanf(“%f,%f,%f”,&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(“P=%f\nS=%f”,p,s);}输入:4,5,6↙输出:P=7.500000S=9.92156712第一章C语言概述max(intx,inty)main()/*maxnumber*/{{intz;inta,b,c;if(xy)z=x;scanf(“%d,%d”,&a,&b);elsez=y;c=max(a,b);return(z);printf(“max=%d\n”,c);}}例1.4已知整数a,b,求其中的最大数。13第一章C语言概述C程序结构1、C程序由函数构成C程序={一个主函数(main函数)一个主函数+若干其他函数(子或库)说明部分2、函数{{函数体}数据定义执行部分(语句){TurboC有300多个跳转3、语句书写自由,后带分号“;”4、可用/*……*/对C程序作注释前一页14本章内容2.1算法的概念2.4算法的表示2.5结构化程序设计第二章算法返回15第二章算法第二章算法程序=数据结构+算法程序=数据结构+算法+程序设计方法+语言工具和环境数据结构:对数据的描述算法:对操作的描述#include“math.h”main(){floatx,y;x=45;y=2*sin(x*3.14/180);printf(“Y=%f\n”,y);}16例如:1+2+3+……+100=5050或100+1+99+2+98+……+49+51+50=100+49*100+50=5050第二章算法§2.1算法的概念算法:为解决一个问题而采取的方法和步骤。17第二章算法§2.4算法的表示(用流程图表示算法)起止框处理框判断框输入/出框流程线连接点注释框18第二章算法例2.1计算265的平方根顺序结构开始X=265Y=√X输出Y结束N—S图X=265Y=√XY开始结束19第二章算法例2.2打印X的绝对值分支结构N—S图X=0yn打印x打印-xX=0?x-x结束开始20第二章算法例2.3计算1到100的和循环结构i=100nN—S图i=1,s=0s=s+ii=i+1打印syi=1,s=0s=s+ii=i+1打印s当i=10021(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编码第二章算法§2.5结构化程序设计方法(了解内容)结构化程序便于编写、阅读、修改和维护。可以减少程序出错的机会,提高程序的可靠性,保证程序的质量。结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。22本章内容3.1C的数据类型3.2常量与变量3.3整型数据3.4实型数据3.5字符型数据3.6变量赋初值3.8算术运算符与算术表达式3.9赋值运算符和赋值表达式3.10逗号运算符和逗号表达式第三章数据类型、运算符与表达式返回23第三章数据类型、运算符与表达式空类型void(无return的函数)C数据类型基本类型构造类型指针类型整型实型字符型枚举型数组型结构体型共用体型单精度双精度第三章数据类型、运算符与表达式§3.1C的数据类型24第三章数据类型、运算符与表达式§3.2常量与变量一、常量1、整型常量——0和正负整数4、字符串常量——“”括起来的字符串5、符号常量——#define符号名常量2、实型常量小数形式(12.34、-0.65)指数形式(0.1234e2)3、字符型常量‘’括起来的一个字符或以\开头的字符序列跳转25第三章数据类型、运算符与表达式#definePI3.1415926例3.1判断下列是否是C语言的常量’1’-123’internet’2/4100.0-12e2.5t0.4e-4(字符型)(整型)()()(实型)()(字符串)(实型)例3.2定义一个符号常量PI,其值为26第三章数据类型、运算符与表达式二、变量1、变量名——以标识符命名由字母、数字或下划线组成首字符为字母或下划线用来标识变量、符号常量、数组、函数、文件等标识符例:sumgood123student_name27第三章数据类型、运算符与表达式2、变量的定义用变量定义语句定义变量及其类型(1)变量定义语句的格式类型关键字变量名或赋值表达式表;实型字符型(2)类型关键字整型基本型int短整型short长整型long无符号型unsigned单精度型float双精度型doublechar28第三章数据类型、运算符与表达式(3)说明①必须在程序执行部分之前对程序中的所有变量进行定义②C语言中整型和字符型数据通用③可在定义变量的同时给其赋初值例:inta=3,b=4,c=5;floatx,y,z=0.5;charw=‘a’;⑤变量名不能用关键字④变量区分大小写29第三章数据类型、运算符与表达式(4)举例3.3#definePI3.1415926#include“math.h”main(){floatx,y;x=67;y=2*sin(x*PI/180);printf(“y=%f”,y);}{floatx=67,y;注意区分:返回30第三章数据类型、运算符与表达式1、常量:十进制567,-789,0八进制0567,-0753十六进制0x567,-0xa12、变量:inti,j;i=10;j=-10;i100000000000001010j-101111111111110110§3.3整型数据31第三章数据类型、运算符与表达式3、整型变量数的表示范围:(-32768~32767)4、整型变量的分类:有符号基本整型[signed]int无符号基本整型unsignedint有符号短整型[signed]short[int]无符号短整型unsignedshort[int]有符号长整型[signed]long[int]无符号长整型unsignedlong[int]32第三章数据类型、运算符与表达式a0111111111111111b5、无符号和有符号数的比较:inta;(-32768~32767)unsignedintb;(0~65535)符号位数据位327676553511111111111111112152142132122112102928272625242322212032768、16384、8192、4096、2048、1024…33第三章数据类型、运算符与表达式举例3.4main(){inta,b,c,d;unsignedintu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);}运行结果:a+u=22,b+u=-1434第三章数据类型、运算符与表达式a01111111111111116、整型数据的溢出:符号位32767a+11000000000000000符号位-327681111111111111111-135第三章数据类型、运算符与表达式举例3.5main(){inta,b;a=32767;b=a+1;printf(“a=%d,b=%d\n”,a,b);}运行结果:a=32767,b=-3276836第三章数据类型、运算符与表达式7、整型常量的类型使用整型常量时应注意以下几点:在(-32768~32767)范围内的整数赋给int型或long型变量如:inta;longb;a=0xb4;b=12;在(-2147483648~2147483647)范围内的整数赋给long型变量如:longb;b=50000;如果机器中短整型和基本整型所占字节数相同,则同等对待如:inta;shortb;a=0576;b=a;常量无unsigned型,赋值时注意溢出问题一个整型常量后面加一个l或L则认为是long型常量(虚实对应)如:inta;longb;a=1234;b=12L;37第三章数据类型、运算符与表达式1、常量:小数形式.567,-789.,0.0,5.0指数形式123e4,-753E-5(输出时规范化1.23000e+06)2、变量:floatx;doubley;longdoublez;x=3.14159;y=7.86e12x.314159+1数符小数部分指数+.314159×103.141591+§3.4实型数据(浮点数)38第三章数据类型、运算符与表达式main(){floata,b;a=123456.789e5;b=a+20;printf(“a=%f,b=%f\n”,a,b);}运行结果:a=12345678848.000000,b=12345678848.0000003、实型数据的舍入误差举例3.639第三章数据类型、运算符与表达式4、实型常量的类型许多编译系统均将实型常量按照双精度数处理,结果存入单精度变量,降低了运算速度,可以在实型常量的后边加一个f或F以表示单精度数。如:floatf;f=2.45678f*4523.65f;5、单精度变量有6~7位有效数字(10-37~1038)双精度变量有15~16位有效数字(10-307~10308)40第三章数据类型、运算符与表达式1、常量:(a)‘a’、‘x’、‘?’、‘$’(b)‘\n’、‘\t’、‘\’’(c)‘\101’、‘\x41’(d)‘\0’或‘\000’ASCII值为0的空操作字符2、变量:charc1,c2;c1=‘a’;c2=‘b’;3、内存中的存储形式c19701100001c29801100010八进制十六进制§3.5字符型数据‘A’41第三章数据类型、运算符与表达式4、字符型数据的使用举例3.7main(){charc1,c2;c1=97;c2=98;printf(“c1=%