《基本结构正式》PPT课件.ppt
《《基本结构正式》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本结构正式》PPT课件.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第第3 3章章 基本结构程序设计基本结构程序设计主要内容:C C语言的基本语句、程序的基本结构。3.1 3.1 基本程序结构和结构化程序设计基本程序结构和结构化程序设计科学家沃思(Nikiklaus WirthNikiklaus Wirth)提出一个公式:数据结构数据结构+算法算法=程序程序数据结构:指对数据(操作对象)的描述。算法:指对操作步骤的描述。编写程序的本质:对哪些数据进行什么样的一系列加工就可以达到目标。13.1.1 3.1.1 算法算法1算法:是解决问题的一系列操作步骤的集合。例例3.1 3.1 求解一元二次方程axax2 2+bx+c=0(a0)+bx+c=0(a0)的两个根
2、。s1s1:输入数据 a,b,ca,b,c s2 s2:求根x1,x2x1,x2 s3 s3:输出结果 可以将求解算法(s2s2)进行细化设计如下:s2_1s2_1:输入数据 a,b,ca,b,c s2_2 s2_2:求判别式d的值,d=b*b-4*a*cd=b*b-4*a*c s2_3 s2_3:判断:如果d=0d=0,则按实根求法计算:x1=(-b+sqrt(d)/(2*a)x1=(-b+sqrt(d)/(2*a)x2=(-b-sqrt(d)/(2*a)x2=(-b-sqrt(d)/(2*a)否则,按复根求法计算:实部 r=-b/(2*a)r=-b/(2*a)虚部 p=sqrt(-d)/(
3、2*a)p=sqrt(-d)/(2*a)2 依次读入30个学生成绩,输出平均成绩及最高成绩具体算法描述:具体算法描述:s1s1:0=i0=i s2 s2:0=sum0=sum,0=max0=max s3 s3:读入一个学生成绩存入读入一个学生成绩存入scorescore s4 s4:i+1=ii+1=i s5 s5;sum+score=sumsum+score=sum s6 s6:如果如果scorescore大于大于maxmax,则则score=maxscore=max s7 s7:如果如果i i小于小于3030,转移至,转移至s3s3 s8 s8:sum/30=average sum/30=
4、average s9 s9:打印打印averageaverage,maxmaxs3,s4,s5,s6,s7s3,s4,s5,s6,s7这些步骤会被重复执行3030次,变量i i用于统计已处理的学生人数 当i i值小于3030时,流程转至s3s3读下一个学生成绩 当i i值等于3030时,所有学生成绩处理完毕,到s8,s9s8,s9输出结果。33.3.算法的特性算法的特性算法是解决问题逻辑思路的表述。同一个问题有不同的解题方法和步骤,设计出不同的算法。正确的算法应该具备以下特性。有穷性:有穷性:包含有限的操作步骤,不能无限制地执行下去;确定性:确定性:算法中所描述的每个步骤都应该是明确的;有若干
5、个输入数据(有若干个输入数据(0 0 n n)输入是指在算法执行过程中需要用户输入的信息;有若干个输出数据(有若干个输出数据(1 1 n n)一般地,算法都有一个或多个输出数据,因为设计算法的目的就是进行数值运算或进行某种数据处理,给用户输出处理结果是必然的要求。有效性有效性在一个算法中,要求每个步骤都能被有效地执行43.1.2 算法的表示 流程图起止框 处理框判断框 输入输出框流程线5l 程序的三种基本结构结构化程序设计l基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)l结构化程序:由三种基本结构反复嵌套构成的程序叫l优点:结构清晰,易读,提高程序设计质量和效率
6、三种基本结构l顺序结构ABAB流程图N-S图6v选择结构PAB真假PBA真假l二分支选择结构l多分支选择结构A1A2AiAnk=k2k=k1k=knk=ki.7v循环结构l当型循环结构PA假真当P为真Al直到型循环结构AP真假A直到P为真注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构83.2 3.2 顺序结构程序设计顺序结构程序设计3.2.1 3.2.1 顺序执行语句概述顺序执行语句概述C程序是由语句组成,每个语句以分号结束。顺序结构的程序会按照语句书写的顺序执行;语句分类:控制语句:控制程序执行流程控制程序执行流程 表达式语句 a=b+c+d;函数调用语句:调用函数调用函数
7、空语句:执行空操作执行空操作 (只有一个分号)(只有一个分号)复合语句:执行一组语句执行一组语句 用用把一些语句括起来,相当于一个语句把一些语句括起来,相当于一个语句 如:x1=-(-b+sqrt(d)/(2*a);x2=-(-b-sqrt(d)/(2*a);93.2.2 3.2.2 数据的输入输出数据的输入输出输入:指将数据送入计算机输出:指将计算机处理的结果数据送出保存或显示出来。语言中,数据输入输出是由库函数完成。使用库函数时,用预编译命令将有关“头文件”包括到源文件中。标准输入输出库函数:“”文件 源文件开头应有以下预编译命令:#include include#include incl
8、ude (p219)101.putchar 函数(字符输出函数)格式:putchar(c)参数:c为字符常量、变量或表达式功能:把单个字符c输出到显示器上#include main()int c;char a;c=65;a=B;putchar(c);putchar(n);putchar(a);运行结果:A B例11输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息 格式说明:%修饰符格式字符,用于指定输出格式 普通字符或转义序列:原样输出格式字符 d格式符:按十进制格式输出 f格式符:按实数格式输出 c格式符:以字符形式输出一个字符格式:printf(“格式控制串”,
9、输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)说明:标准库函数,函数原型在头文件“”中例 char a=3,b=4;printf(“%c%cn”,a,b);printf(“a=%c,b=%cn”,a,b);输出结果:3 4 a=3,b=4输出结果:3 4 a=3,b=4例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);例 float a=3.14,b=2.1828;printf(“%f%fn”,a,b);printf(“a=%f,b=%cf”,a,b);输出结果:3.140000
10、2.182800 a=3.140000,b=2.182800 2.printf函数(格式输出函数)121.d格式符格式符%d:按整形数据的实际长度输出;按整形数据的实际长度输出;%md:m为指定的输出字段的宽度,如数据的位数小于为指定的输出字段的宽度,如数据的位数小于m,则左端则左端补以空格,如大于补以空格,如大于 m,则按实际位数输出;则按实际位数输出;%ld:对长整形数据进行输出;对长整形数据进行输出;2.s格式符格式符%ms:输出的字符串占输出的字符串占m列,如字符串本身长度大于列,如字符串本身长度大于m,则突则突破破m的限制,将字符串全部输出,如串长小于的限制,将字符串全部输出,如串长
11、小于m,则左补空格;则左补空格;%m.ns:输出占输出占m列,但仅取字符串中左端列,但仅取字符串中左端n个字符,这个字符,这n个字个字符输出在符输出在m列的右侧,左补空格;列的右侧,左补空格;%-3 f格式符格式符%f:整数部分全部输出,并输出整数部分全部输出,并输出6位小数;位小数;%:指定占指定占m列,其列,其中有中有n位小数,如数值长度小于位小数,如数值长度小于m,则左补空格。则左补空格。13格式:getchar()功能:从键盘读一字符返值:正常,返回读取的代码值;出错,返回EOF(-1)3.getchar函数(字符输入函数)例/*ch3_4.c*/#include main()int
12、c;printf(Enter a character:);c=getchar();printf(%c-hex%xn,c,c);运行结果:Enter a character:AA-hex4114格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束返值:正常,返回输入数据个数说明:标准库函数,函数原型在头文件“”中地址表:变量的地址,用取地址运算符&格式字符:d,c,f例 int a scanf(“%d”,&a);输入:10 则 a=10例 char a;scanf(“%c”,&a);输入:m 则 a=m例 float a scanf
13、(“%f”,&a);输入:则 函数(格式输入函数)15输入分隔符的指定格式串中两个格式符间有分隔符;格式串两个格式符无间隔字符,以空格、TAB或回车键作为分隔例 scanf(“%d:%d:%d”,&h,&m,&s);输入 12:30:45 则12 h,30 m,45 s例 scanf(“%d,%d”,&a,&b)输入 3,4 则3a,4 b例 scanf(“%d%d%d”,&a,&b,&c);输入 12 24 36 16#include#includevoidmain()floata,b,c,s,area;printf(inputa,b,c:);scanf(%f,%f,%f,&a,&b,&c)
14、;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%7.2fn,area);输入三角形边长,求面积输入三角形边长,求面积inputa,b,c:3,4,6 17 从键盘上输入一个字符,求出它的前导与后继字符,然后按由小到大的顺序输出这些字符及ASCIIASCII字符。注意:字符的输入/输出函数,在程序包含头文件.C C语言中字符型和整型数据可以互通#include include void main()void main()char c;char c;int c1,c2;int c1,c2;c=getchar();c=getchar()
15、;c1=c-1;c2=c+1;c1=c-1;c2=c+1;printf(%c,%c,%cn,c1,c,c2);printf(%c,%c,%cn,c1,c,c2);printf(%d,%d,%dn,c1,c,c2);printf(%d,%d,%dn,c1,c,c2);183.3 3.3 选择结构选择结构选择结构:根据条件决定执行两组或多组操作中的一组。二路分支 if if else else 语句语句多路分支 switchswitch语句语句3.3.1 3.3.1 关系运算和逻辑运算关系运算和逻辑运算条件:是一个关系表达式或者逻辑表达式 结果是逻辑值:真或假,用整数1 1表示“真真”,用整数0
16、0表示“假假”。1.关系运算关系运算是一种比较运算,有六个用于进行比较的运算符,大于 =大于等于 小于 =小于等于 =等于 !=!=不等于19说明:说明:(1)六个关系运算符都是双目运算符,(2)如:intint a=2,b=3;a=2,b=3;ab a100i*i+j*j100 结果为假。关系运算运算对象为字符数据,比较按其ASCIIASCII码进行 如:表达式:abab 值为假20与数学表达式的区别=!=优先级高优先级低算术运算赋值运算 关系运算(3)(3)运算符的优先级问题运算符的优先级问题z=i*i+j*j100z=i*i+j*j100 结果为0z变量的值为0 如:33x100 x10
17、0 数学解释 判断x是否在区间(3,100)之内 C语言解释 按从左向右的次序进行计算 如 x=0 关系运算(33x x)的结果取得值0 0 0100的运算结果为1 整个表达式结果为1212.2.逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式由逻辑运算符连接两个(可为一个)运算对象而形成的式子称为逻辑表达式。在C C语言中有三个逻辑运算符&逻辑与|逻辑或 !逻辑非意义:a&ba&b 当a和b同时为真时,该逻辑表达式的值为真。a|b a|b 当a 和 b之一为真时,该逻辑表达式的值为真。!a a 当a的值为真,则表达式的值为假。ab!a!ba&ba|b真真假假真真假假假假假假真真真真真真假假假假假
18、假假假假假真真真真假假假假真真真真真真假假真真真真22说明:说明:(1 1)&和|是双目运算符 !是单目运算符 逻辑表达式与关系表达式的运算结果都是逻辑值真或假 注意:在进行判别时,“非0”作为“真”,“0”作为“假”(2 2)&和|的运算级别低于关系运算符,!的运算级别高于关系运算符,也高于算术运算符,注意:&和|的结合方向是从左向右,!的结合方向是从右向左。(3 3)不能确定的情况下,添加括号保证运算次序。尽量避免复杂烦琐的逻辑表达式。23关系运算注意:例 若a=0;b=0.5;x=0.3;则 a=x0 结果为 A100 结果为10A 65a 97附录一243.3.2 3.3.2 if/e
19、lseif/else语句形式:if (if (表达式表达式)语句语句1 1else else 语句语句2 2执行流程:表达式值真(非0)时,执行语句1;否则,执行语句2,无论执行了哪一路分支之后,都执行if的下一条语句;例 if(xy)max=x;else max=y;251不带elseelse的ifif语句形式:if (if (表达式表达式)语句语句执行过程:表达式为真(非0)时,执行其后的语句,然后执行ifif的下一个语句,否则直接执行ifif的下一个语句。例:if(xy)printf(“%d”,x);26vif语句嵌套:l一般形式:if(expr1)if(expr2)statement1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本结构正式 基本 结构 正式 PPT 课件
限制150内