资源描述
第一章程序设计基本概念第1页目标了解C程序一些基本概念了解程序、算法和流程图概念了解C程序三大基本结构掌握C程序编译和运行过程使用VisualC+6.0创建C程序第2页 1.1程序和程序设计一、基本概念一、基本概念1.程序(program):为处理某一问题而设计一系列指令,能被计算机识别和执行。2.程序设计语言:人与计算机打交道时交流信息一类媒介和工具,由语句(statement)组成。第3页银行1.带上存折去银行3.将存折和取款单递给银行职员2.填写取款单并到对应窗口排队4.银行职员办理取款事宜日常生活中程序5.拿到钱并离开银行程序:为处理某一问题而设计一系列指令,能被计算机识别和执行。第4页1.做口述笔记2.键入信函内容3.发送传真1.口述2.信函1._2._3._4._3.3.传真语句被逐条执行程序员老板秘书3、语句:组成程序基本单位第5页4.机器语言:(machinelanguage)计算机直接使用二进制形式程序语言或机器代码。5.汇编语言:(assemblerlanguage)一个面向机器用符号表示低级程序设计语言。相当于机器指令助记符号,与机器语言很靠近。6.高级语言:(highlevellanguage)是易为人们所了解完全符号化程序设计语言。7.源程序:用户用高级语言编写程序称为,C源程序文件名字后缀普通必须为“.c“。8.目标程序:由二进制代码组成程序9.编译程序:含有翻译功效软件10.连接(linker):将目标模块和其它一些必要功效模块装配在一起,生成可执行文件,执行程序文件后缀为.exe。第6页算法计算长方形面积问题:1.接收用户输入长方形长度和宽度两个值;2.判断长度和宽度值是否大于零;3.假如大于零,将长度和宽度两个值相乘得到面积,不然显示输入错误;4.显示面积。算法算法:处理问题详细方法和步骤第7页流程图流程图是算法一个图形化表示方式。流程图直观、清楚,更有利于人们设计与了解算法。它使用一组预定义符号来说明怎样执行特定任务。开始/结束处理输入/输出判断/分支连接符流程线第8页C语言介绍编程语言低级高级C 语言是贝尔试验室 Dennis Ritchie 在1973 年设计。C最初用于开发系统级程序。在微机上,有许多性能良好商品C 语言系统可用。包含Turbo C、Borland C/C+;Microsoft Visual C/C+等。结构化程序设计语言:层次清楚,便于按模块化方式组织程序,易于调试和维护 语句简练:学习时入门相对轻易,C 语言很好地总结了其它语言提出程序库概念功效强大:既可用于系统软件开发,也适合于应用软件开发。移植性好:只要对这种语言稍加修改,便能够适应不一样型号机器或各类操作系统。第9页二、三大基本结构二、三大基本结构1.次序结构:(第三章)语句1语句2语句3第10页2.选择结构判断表示式满足语句1语句2不满足3.循环结构判断表示式循环条件循环条件满足不满足第四章内容第五章内容第11页高级语言编译和执行高级编程语言中指令哎呀 我了解不了编译程序/解释程序能够 我现在能够了解了高级语言由编译/解释程序转换为机器代码这种机器代码计算机能够了解计算机硬件高级语言程序 编译程序/解释程序(编译器/解释器)机器代码第12页编译和执行C程序C源程序目标文件可执行程序C语言函数库编译连接源程序:是用户创建文件,以“.c.c”为文件扩展名保留 目标文件:是编译器输出结果。这类文件常见扩展名为.obj.obj”0 1 形式头文件:含有函数申明和预处理语句,用于帮助访问外部定义函数。头文件扩展名为“.h.h”。可执行文件:是连接器输出结果。可执行文件扩展名为“.exe.exe”。第13页演示下面例题演示:使用VisualC+6.0编辑和运行程序过程main()inta,b,c;a=4;b=10;c=a+b;printf(“%dn”,c);第14页总结2-1算法就是处理问题详细方法与步骤流程图是算法一个图形化表示方式程序是为让计算机完成某项任务而编写逐条执行指令序列C语言特点包含:结构化程序设计语言、语句简练、功效强大、移植性好第15页总结2-2C程序编写完成后,首先需要经过编译转换成目标文件,然后经过连接创建可执行程序,最终才能够执行该程序能够使用VisualC+6.0IDE编辑和运行C程序程序三大结构是1、次序结构2、选择结构3、循环结构第16页第二章第二章C程序设计初步知识程序设计初步知识第17页回顾1、程序是为执行一项任务而编写有序指令集2、编译器将源程序转换成机器能了解程序3、连接器用于连接相关目标文件以生成可执行程序问:1、C源程序是后缀是什么?2、目标文件后缀是什么?3、程序三大结构是什么?第18页目标了解C程序基本结构了解变量和常量含义熟悉基本数据类型-int、char、float和double第19页C语言基本结构语言基本结构#include void main()printf(Hello Worldn);以#开始语句称为预处理器指令#include#include语句不是必需,不过,假如程序有该语句,就必须将它放在程序开始处以.h为后缀文件被称为头文件,能够是C程序中现成标准库文件,也能够是自定义库文件。stdio.h文件中包含了相关输入输出语句函数 main()函数是 C 程序处理起点。main()函数能够返回一个值,也能够不返回值。假如某个函数没有返回值,那么在它前面有一个关键字void在函数定义后面有一个左大括号,即它表示函数开始,后面是函数主体大括号也能够用于将语句块括起来在函数定义结尾处有一个右大括号,即在屏幕上产生一行输出“Hello world”,并换行(n)函数主体中每个语句都以分号结束。C程序中一个语句能够跨越多行,而且用分号通知编译器该语句已结束。第20页C程序中注释#include void main()printf(Hello Worldn);/此程序用来打印此程序用来打印Hello World 单行注释单行注释C程序能够包含注释,方便向读者作普通说明程序能够包含注释,方便向读者作普通说明编译器并不处理这些注释编译器并不处理这些注释/*此程序由此程序由 编写编写*用来打印输出用来打印输出“Hello World”*/多行注释多行注释/*作者:作者:创建日期:创建日期:描述:描述:*/#include void main()在程序中添加注释是一个好编程习惯,能够增强程序可读性。第21页上机写一个错误例子,给大家演示一下。上机写一个错误例子,给大家演示一下。说明说明:1.必须使用必须使用main作为主函数名作为主函数名,程序是从主函数开始执行,含有唯一,程序是从主函数开始执行,含有唯一性性注意后面不能带注意后面不能带“;”2.函数体用左花括号函数体用左花括号“”开始,用右花括号结束开始,用右花括号结束“”3.用分号用分号“;”作为语句结束标志作为语句结束标志注意是语句结束标志注意是语句结束标志4.注释部分注释部分:必须用必须用/*和和*/括起来括起来必须成对出现,必须成对出现,”/“和和”*“之间不能有空格之间不能有空格注释能够出现在程序任何地方注释能够出现在程序任何地方注释部分对程序运行不起作用注释部分对程序运行不起作用在注释之间不能够再嵌套在注释之间不能够再嵌套/*/(演示一下演示一下)5,预处理器指理必须以,预处理器指理必须以”#“开头,但不能加分号开头,但不能加分号第22页改错:include;/*依据长方形长和宽计算面积*/Maininta,b,c;a=1;b=3;c=a*bprintf(“c值是:%d”,c);第23页什么是标识符标识符:在C语言中,有许多符号命名,如变量名、函数名、数组名等,都必须恪守一定规则,按此规则命名符号称为标识符。第24页在C语言中,标识符标识符命名需要遵照一定规则有效名称有效名称principalcost_pricemarks_3lastnamecity无效名称无效名称123ratecurrency$discount%zipcode第25页标识符命名规则:标识符名能够由字母、数字和_(下划线)组合而成标识符不能包含除_以外任何特殊字符,如:%、#、逗号、空格等标识符必须以字母或_(下划线)开头标识符不能包含空白字符(换行符、空格和制表符称为空白字符)C语言中一些词(比如int和float等)称为保留字,含有特殊意义,不能用作标识符名C语言区分大小写,所以标识符price与标识符PRICE是两个不一样标识符第26页一、标识符一、标识符1.分类:分类:关键字关键字:c语言要求了一批标识符,他们在c语言中代表着固定含义,不能另做它用autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatorgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile预定义标识符:预定义标识符:c语言语法允许用户把这类标识符另做它用,不过这些标识符将失去系统要求原意。比如:printfdefine用户标识符:用户标识符:由用户依据需要定义标识符称为用户标识符第27页习题:1.以下选项中不正当用户标识符是()A._123B.printfC.A$D.Dim2.可在c程序中用作用户标识符一组标识符是()A.voidB.as_b3C.ForD.2cdefine_123_abcDOWORDIf(大写)caseSIG第28页程序程序指令指令常量标识符标识符关键字关键字常量常量运算符运算符分隔符分隔符等等常量是在程序中保持不变量常量用于定义含有以下特点数据:在程序中保持不变在程序内部频繁使用需要用比较简单方式替换一些值第29页二、常量二、常量1.分类:整型常量(分类:整型常量(+5,-6)、实型常量()、实型常量(23.5,-0.32,5e3)、)、字符常量(字符常量(a,A)、字符串常量)、字符串常量(“abc”,”二级考试二级考试”)2.用定义一个符号名方法来代表一个常量用定义一个符号名方法来代表一个常量例2.2计算圆面积#include“stdio.h”#definePI3.14159/*不加分号,常量名大写,定义PI为3.14159*/main()floatr;doubles;r=5.0;s=PI*r*r;Printf(“s=%fn”,s);(演示一下)第30页说明:说明:1、在整型常量后面加一个字母、在整型常量后面加一个字母L(大小写均大小写均可可)这个常量就成为长整型常量在内存中占这个常量就成为长整型常量在内存中占四个字节。四个字节。2、无符号整数在数未尾应该加上字母后缀无符号整数在数未尾应该加上字母后缀u(大小写均可大小写均可),若是长整型无符号整型常,若是长整型无符号整型常量,则能够加后缀量,则能够加后缀lu或或LU。第31页二、变量二、变量1.定义:定义:在程序运行过程中,值能够改变量2.说明说明(1)每个变量有一个名字作为标识,它是属于用户标识符(2)变量必须先定义后使用(定义后还得赋值才能用)3.变量定义与使用变量定义与使用定义变量后,初始化变量。inta;intb,c;a=1;b=2;c=3;定义时初始化变量:inta=1;intb=2,c=3;以下定义方式是否正确:以下定义方式是否正确:1.intb=c=5;2.intb,c;b=c=5;第32页2.3整型数据一、整型常量一、整型常量整数表示(1)十进制表示:用一串连续数字表示十进制数。例:345316840-23456(2)八进制表示:以数字0开头一个连续数字序列,序列中只能有0-7这八个数字。例:045-07806745l而019、423是非法八进制数。(3)十六进制表示:以0X或0 x开头连续数字和字母序列,序列中只能有0-9、A-F和a-f这些数字和字母,字母a、b、c、d、e、f分别对应数字10、11、12、13、14、15,大小写均可。说明:说明:1、在整型常量后面加一个字母、在整型常量后面加一个字母L(大小写均可大小写均可)这个常量就成为长整型这个常量就成为长整型常量在内存中占四个字节。常量在内存中占四个字节。2、无符号整数在数未尾应该加上字母后缀无符号整数在数未尾应该加上字母后缀u(大小写均可大小写均可),若是长整,若是长整型无符号整型常量,则能够加后缀型无符号整型常量,则能够加后缀lu或或LU。第33页二、整型变量二、整型变量能够分为基本型、短整型、长整型和无符号型四种名称全称类型说明符缩写类型说明符字节范围整型intint4-2,147,483,648至2,147,483,647无符号整型unsignedintunsigned40至4,294,967,295短整型shortintshort2-32768至+32767无符号短整型unsignedshortintunsignedshort20至65,535长整型longintlong4-2,147,483,648至2,147,483,647无符号长整型unsignedlongintunsignedlong40至4,294,967,295第34页三、整数在内存中存放形式(包含一下各种进制转换)三、整数在内存中存放形式(包含一下各种进制转换)位(bite):计算机里最小存放单元字节(byte):8个二进制组成一个字节字(word):若干个字节组成一个字16个二进制位2个字节最高位最低位0表示正数1表示负数以短整形short为例第35页(一一)、正整数、正整数以原码形式存放以原码形式存放例 正整数5二进制代码:0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1(二二)、负整数、负整数1.以补码形式存放以补码形式存放反码:1和0交换补码:对原码取反加1(符号位不参加取反)例负整数-5二进制代码:1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1第36页2.补码形式存放二进制转换成负整数补码形式存放二进制转换成负整数(1)对补码取反(2)转换成十进制(3)对十进制数加负号,减11 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1-5补码0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0取反转换成十进制4-4加负号后,减1-5(三三)、无符号整数、无符号整数不在是符号位参加数值大小中第37页2.4实型数据实型数据一、实型常量一、实型常量1.小数形式:由数字和小数点组成,必须有小数点。例:4.23、0.15、.56、78.、0.02.指数形式:以幂形式表示,以字母e或E后跟一个以10为底幂数。字母e或E之前必须要有数字,且字母e或E后面指数必须为整数,字母e或E前后及数字之间不得有空格(实型变量也恪守这个规则)。例:2.3e5、500e-2、.5E3、4.5e0,而e4、.5e3.6、.e5、e都不正当二、实型变量二、实型变量1.单精度:关键字为float2.双精度:关键字为double定义普通形式floata,b,c;定义普通形式doublea,b,c;floata=4.5,b=5.6;doublea=5.9,b=45.36注注:(1)占四个字节占四个字节32位位注注:(1)占八个字节占八个字节64位位(2)7位有效数字位有效数字-10381038(2)1516位有效数字位有效数字-1030810308第38页说明:说明:1.在内存中,实数一律以指数形式存放2.在内存中,整数能够准确存放,实型数据存在误差3.实型常量默认为double类型,加上后缀f,为float类型。4.定义变量同时能够赋初值三、习题三、习题1.下面四个选项中,那一组全是不正当浮点数选项是A.160.B.123 C.-.18 D.-e3 0.12 2e4.2 123e4 .234 e3 .e5 0.0 1e3 2.下面四个选项中,均是正当浮点数选项是A.+1e+1 B.-.60 C.123e D.-e3 5e-9.4 12e-4 1.2e-.4 .8e-4 3e2 -8e5 +2e-1 5.e-0第39页2.5字符型数据一、字符型常量1字符常量单引号括起来。比如:a,b,c,?,A,B,C,A。说明(1)区分大小写。(2)空格符也是字符常量。(3)只能包含一个字符。abc非法(4)必须用单引号,双引号是字符串常量。“a”字符串。在内存中表示:占一个字节,存放字符ASCII,附录7。运算时按照整形处理。比如A在内存中存放为01000001转化为十进制数便是65,运算时当成65。A+32,0-0第40页2转义字符常量转义字符常量由反斜杠跟特定字符组成。(1).n回车到下一行反斜杠r回行首单引号t跳到下一个制表位0空值(字符串结束)b退格(2).101101为8进制,转化为十进制为65,代表A。(3).x41x41为16进制,转化为十进制为65,代表A。3字符串常量字符串常量用“”括起来一串字符。“A”,”x11”,”String”,”(空串)。第41页二、字符变量charch1=*,ch2=A,ch3;变量在内存中占一个字节,能够参加算术运算,运算时使用ASCII码。charc1,c2;intk=5;c1=A;c2=Z;c2-c1;c1+;c3=(c2+32-k);第42页总结:1、c语言是区分大小写2、常量分类:整型常量、实型常量、字符常量、字整型常量、实型常量、字符常量、字符串常量符串常量3、变量分类:(1)、整型变量:基本型、短整型、长整型和无符号型四种(2)、实型变量分类:单精度、双精度(3)、字符变量:char4、指数形式:字母e或E之前必须要有数字,且字母e或E后面指数必须为整数,字母e或E前后及数字之间不得有空格(实型变量也恪守这个规则)第43页2.6算术表示式算术 一元一元 二元二元操作数操作数运算符第44页一一.算术运算符优先级算术运算符优先级()、)、+、-、*、/、%、+、-高高底底同同级级同同级级同同级级单目单目双双目目二二.算术运算符和圆括号结合性算术运算符和圆括号结合性正负运算符:正负运算符:右右左左其它算术运算符:左其它算术运算符:左右右第45页第46页Z=(X*2)+(5 Y)操作数操作数操作数操作数表示式表示式表示式表示式表示式表示式运算符运算符第47页#includevoidmain()inta=5,b=3,c=25,d=12;floatqu;intre,in,de;/*使用算术运算符*/qu=a/b;/除法re=a%b;/求模in=+c;de=-d;printf(商为%fn,qu);printf(余数为%dn,re);printf(“加 1 后为%dn,in);printf(减 1 后为%dn,de);算术运算符示例输出:商为1.000000余数为2加1后为26减1后为11说明:说明:%取模或求余运算符取模或求余运算符1.运算对象必须为整型运算对象必须为整型2.符号与被除数相同符号与被除数相同比如:比如:-5%3值为值为-2第48页三算术运算中类型转换1.自动类型转换(双目运算符两边运算数类型必须一致,当不一致时自双目运算符两边运算数类型必须一致,当不一致时自动转换动转换)标准:把表示范围小类型值转换到表示范围大类型值inta=5;a+3.5;-转换级别:shortintlongfloatdouble 2.2.强制类型转换普通形式:普通形式:(类型名)(表示式)(类型名)(表示式)(int)3.56,(double)x作用:作用:将一个表示式转换所需类型将一个表示式转换所需类型说明:说明:1.(类型名)(表示式)(类型名)(表示式)括号不能省略括号不能省略(int)(x+y)(int)x+y对对x、y整体整体只对只对x2.强制类型转换运算得到一个中间变量,不改变原来变量类型。强制类型转换运算得到一个中间变量,不改变原来变量类型。第49页习题:习题:已知已知 a=7,b=3,x=3.5,y=2.5 (1).x+a%3*(int)(x+y)%2/4 (2).(float)(a+b)/2+(int)x%(int)y第50页2.7赋赋值值表表达达式式一、赋值运算符和赋值表示式一、赋值运算符和赋值表示式 1.赋值运算符和赋值表示式赋值运算符和赋值表示式 赋值运算符:赋值运算符:=赋值表示式:由赋值运算符组成表示式赋值表示式:由赋值运算符组成表示式形式:形式:变量名变量名=表示式表示式说明:说明:1.优先级倒数第二,结合方向优先级倒数第二,结合方向右右 左左2.是一个赋予关系而不是等价关系是一个赋予关系而不是等价关系x=5y=8怎么样交换怎么样交换x、y中数值?中数值?3.赋值运算符左侧只能是变量不能是表示式赋值运算符左侧只能是变量不能是表示式a+b=c非法非法4.赋值号右边表示式也能够是一个赋值表示式赋值号右边表示式也能够是一个赋值表示式a=b=c=7+5a=b=c=5都为都为5a=5+(c=6)a=11a=(b=4)+(c=6)10a=(b=10)/(c=2)5练习练习:第51页二、复合赋值表示式1.复合赋值运算符:复合赋值运算符:+=、-=、*=、/=、%=、=、&=、=、|=(两个运算符之间不能有空格两个运算符之间不能有空格)将形如:将形如:变量名变量名=变量名变量名+表示式表示式表示式表示式简化成:简化成:变量名变量名+=表示式表示式形式形式a=a+3例:例:a+=3x*=y+8x=x*(y+8)x%=3x=x%3了解:了解:a+=b移到移到=右侧右侧=a+b=左侧补变量名左侧补变量名a=a+b例:已知变量例:已知变量a=6,计算表示式,计算表示式a+=a-=a*a结果为:结果为:-60练习:练习:已知已知a=12求运算后求运算后a值值(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2)n=5(6)a+=a-=a*=a说明:凡是有赋值运算符参加运算都是从右往左算第52页2.8 2.8 自加(自加(+)和自减()和自减(-)运算符)运算符1.作用:使运算对象值增加作用:使运算对象值增加1或者降低或者降低1例例i+i=i+1i-i=i-12.使用使用i+先使用先使用i值,在让值,在让i增加增加1+i先让先让i增加增加1,再使用再使用i值值习题:习题:inta,b;b=3;a=b+;a值是多少值是多少,b值是多少值是多少a=+b;a值是多少值是多少,b值是多少值是多少习题:习题:inti=10,j=5,b;b=+i-j;printf(b=%dn,b);inti=10,j=5,b;b=i+-j;printf(b=%dn,b);第53页表示式怎样计算结结果果(num1=5)num2=+num1;num1=num1+1;num2=num1;num2=6;num1=6;num2=num1+;num2=num1;num1=num1+1;num2=5;num1=6;num2=-num1;num1=num1-1;num2=num1;num2=4;num1=4;num2=num1-;num2=num1;num1=num1-1;num2=5;num1=4;第54页2.9、逗号运算符和逗号表示式1.定义:用逗号将表示式连接起来式子普通形式:表示式1,表示式2,表示式3,,表示式n2.求解过程:从左到右一个一个求解,最终一个表示式值就是整个逗号表示式值3.说明:(1)结合方向 左 右(2)优先级最低比如:已知a=3a=3,a+3结果:表示式值为6b=a+3,a-3结果:表示式值为0第55页2.9位运算一、一、位运算符(操作数必须是整形和字符型,转化为二进制再运算)(操作数必须是整形和字符型,转化为二进制再运算)(按位取反按位取反)(右移右移)&(与与)(异或异或)|(或或)二、二、各运算符功效1.0变1,1变0例:01152.整体向右移动,低位移出,无符号和正整数高位补0,负整数补1.参见书P2104.&同时为1才为1,其余都为05.相同为0,不一样为1。或者遇0不变,遇1则反。6.|有一个为1就为1。第56页总结:1、正整数以原码形式存放2、负整数以补码形式存放3、%取模或求余运算符:1.运算对象必须为整型2.符号与被除数相同4、双目运算符自动转换标准:把表示范围小类型值转换到表示范围大类型值5、反是有赋值运算符参加运算都是从右往左算6、i+表示式值:先用后加7、+i表示式值:先加后用第57页习题:1、表示式13%5值是多少()a.2b.3c.5d.12、要存放一个双精度浮点型值,需要()字节内存空间a.6b.2c.4d.83、表示式a+=a-=a+a值是多少?已知a=9a.12b.18c.-18d.04、计算机里最小存放单元是()a.位b.字节c.单元d.kb第58页1、写出程序运行结果main()intI,j,m,n;i=8;j=10;m=+i;n=j+;printf(“%d,%d,%d,%d”,I,j,m,n);2、写出以下表示式结果已知:A=3;1、A=A-3,A+32、B=A+3,A-33、C=A+3,A+B(B值接上一题)1、写出程序运行结果main()inti,j,m,n;i=8;j=10;floatk=2.0;m=j/i;n=j/k;printf(“%d,%d”,m,n);2、写出以下表示式结果已知:A=3;1、A-=3*6/5;2、A*=6-3;3、A%=7+2;第59页前两章内容包括真题年份选择填空年4月19,21,30,31,327,13,15年9月11,12,13,14,24,486,7年4月11,12,13,14,15,18,19,25,27,48年9月11,12,14,14,16,17,26,28,48年4月11,12,13,14,487年9月11,12,13,14,15,16,396第60页
展开阅读全文