三基本结构(正式)

上传人:乐*** 文档编号:117195125 上传时间:2019-11-18 格式:PPT 页数:65 大小:654.50KB
返回 下载 相关 举报
三基本结构(正式)_第1页
第1页 / 共65页
三基本结构(正式)_第2页
第2页 / 共65页
三基本结构(正式)_第3页
第3页 / 共65页
三基本结构(正式)_第4页
第4页 / 共65页
三基本结构(正式)_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《三基本结构(正式)》由会员分享,可在线阅读,更多相关《三基本结构(正式)(65页珍藏版)》请在金锄头文库上搜索。

1、 第3章 基本结构程序设计 主要内容:C语言的基本语句、程序的基本结构。 3.1 基本程序结构和结构化程序设计 科学家沃思(Nikiklaus Wirth)提出一个公式: 数据结构+算法=程序 数据结构:指对数据(操作对象)的描述。 算法:指对操作步骤的描述。 编写程序的本质: 对哪些数据进行什么样的一系列加工就可以达到目标。 1 3.1.1 算法 1算法:是解决问题的一系列操作步骤的集合。 例3.1 求解一元二次方程ax2+bx+c=0(a0)的两个根。 s1:输入数据 a,b,c s2:求根x1,x2 s3:输出结果 可以将求解算法(s2)进行细化设计如下: s2_1:输入数据 a,b,c

2、 s2_2:求判别式d的值,d=b*b-4*a*c s2_3:判断:如果d=0,则按实根求法计算: x1=(-b+sqrt(d)/(2*a) x2=(-b-sqrt(d)/(2*a) 否则,按复根求法计算: 实部 r=-b/(2*a) 虚部 p=sqrt(-d)/(2*a) 2 例3.2 依次读入30个学生成绩,输出平均成绩及最高成绩 具体算法描述: s1:0=i s2:0=sum,0=max s3:读入一个学生成绩存入score s4:i+1=i s5;sum+score=sum s6:如果score大于max,则score= max s7:如果i小于30,转移至s3 s8: sum/30=

3、average s9:打印average,max s3,s4,s5,s6,s7这些步骤会被重复执行30次, 变量i用于统计已处理的学生人数 当i值小于30时,流程转至s3读下一个学生成绩 当i值等于30时,所有学生成绩处理完毕,到s8,s9输出结果 。 3 3. 算法的特性 算法是解决问题逻辑思路的表述。 同一个问题有不同的解题方法和步骤,设计出不同的算法。 正确的算法应该具备以下特性。 有穷性:包含有限的操作步骤,不能无限制地执行下去; 确定性:算法中所描述的每个步骤都应该是明确的; 有若干个输入数据(0 n) 输入是指在算法执行过程中需要用户输入的信息; 有若干个输出数据(1 n) 一般地

4、,算法都有一个或多个输出数据,因为设计算法的目 的就是进行数值运算或进行某种数据处理,给用户输出处理 结果是必然的要求。 有效性 在一个算法中,要求每个步骤都能被有效地执行 4 3.1.2 算法的表示 流程图 起止框 处理框 判断框 输入输出框 流程线 5 l3.1.3 程序的三种基本结构 结构化程序设计 l基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句(goto) l结构化程序:由三种基本结构反复嵌套构成的程序叫 l优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构 l顺序结构 A B A B 流程图N-S图 6 v选择结构 P AB 真假 P BA 真假 l二

5、分支选择结构 l多分支选择结构 k A1A2AiAn k=k2 k=k1 k=kn k=ki 7 v循环结构 l当型循环结构 P A 假 真 当P为真 A l直到型循环结构 A P 真 假 A 直到P为真 注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构8 3.2 顺序结构程序设计 3.2.1 顺序执行语句概述 C程序是由语句组成,每个语句以分号结束。顺序结构 的程序会按照语句书写的顺序执行; 语句分类: 控制语句: 控制程序执行流程 表达式语句 a=b+c+d; 函数调用语句:调用函数 空语句: 执行空操作 (只有一个分号) 复合语句: 执行一组语句 用把一些语句括起来,相当于

6、一个语句 如: x1=-(-b+sqrt(d)/(2*a); x2=-(-b-sqrt(d)/(2*a); 9 3.2.2 数据的输入输出 输入:指将数据送入计算机 输出:指将计算机处理的结果数据送出保存或显示出来 。 语言中,数据输入输出是由库函数完成。 使用库函数时,用预编译命令将有关“头文件” 包括到源文件中。 标准输入输出库函数: “stdio.h”文件 源文件开头应有以下预编译命令: #include #include “stdio.h“ (p219) 10 1. putchar 函数(字符输出函数) 格式: putchar( c ) 参数: c为字符常量、变量或表达式 功能:把单个

7、字符c输出到显示器上 #include main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); 运行结果:A B 例 11 输出表:要输出的数据(可以没有,多个时以“,”分隔) 格式控制串:包含两种信息 格式说明:%修饰符格式字符,用于指定输出格式 普通字符或转义序列:原样输出 格式字符 d格式符:按十进制格式输出 f格式符:按实数格式输出 c格式符:以字符形式输出一个字符 格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1) 说明:

8、标准库函数,函数原型在头文件“stdio.h”中 例 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 2.182800 a=3.14

9、0000, b=2.182800 2. printf函数(格式输出函数) 12 1.d格式符 %d: 按整形数据的实际长度输出; %md:m为指定的输出字段的宽度,如数据的位数小于m,则左 端补以空格,如大于 m,则按实际位数输出; %ld:对长整形数据进行输出; 2.s格式符 %ms:输出的字符串占m列,如字符串本身长度大于m,则突 破m的限制,将字符串全部输出,如串长小于m,则左补空格 ; %m.ns:输出占m列,但仅取字符串中左端n个字符,这n个 字符输出在m列的右侧,左补空格; %-ms %-m.ns 3 f格式符 %f:整数部分全部输出,并输出6位小数;%m.nf: 指定占m列 ,其

10、中有n位小数,如数值长度小于m,则左补空格。 13 格式:getchar( ) 功能:从键盘读一字符 返值:正常,返回读取的代码值;出错,返回EOF(-1) 3. getchar函数(字符输入函数) 例 /*ch3_4.c*/ #include main() int c; printf(“Enter a character:“); c=getchar(); printf(“%c-hex%xn“,c,c); 运行结果: Enter a character:A A-hex41 14 格式: scanf(“格式控制串”,地址表) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车

11、键结束 返值:正常,返回输入数据个数 说明:标准库函数,函数原型在头文件“stdio.h”中 地址表:变量的地址,用取地址运算符 输入:10 则 a=10 例 char a; scanf(“%c”, 输入:m 则 a=m 例 float a scanf(“%f”, 输入:3.14 则 a=3.140000 4.scanf函数 (格式输入函数) 15 输入分隔符的指定 格式串中两个格式符间有分隔符; 格式串两个格式符无间隔字符,以空格、TAB或回车键 作为分隔 例 scanf(“%d:%d:%d”, 输入 12:30:45 则12 h, 30 m, 45 s 例 scanf(“%d,%d”, 输

12、入 12 24 36 16 #include #include void main( ) float a, b, c, s, area; printf(“input a, b, c: “); scanf(“%f, %f, %f“, s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“area=%7.2fn“,area); 例3.9输入三角形边长,求面积 input a, b, c: 3,4,6 area= 5.33 17 例3.10 从键盘上输入一个字符,求出它的前导与后继字符, 然后按由小到大的顺序输出这些字符及ASCII字符。 注意: 字

13、符的输入/输出函数,在程序包含头文件stdio.h. C语言中字符型和整型数据可以互通 #include void main() char c; int c1,c2; c=getchar(); c1=c-1;c2=c+1; printf(“%c,%c,%cn“,c1,c,c2); printf(“%d,%d,%dn“,c1,c,c2); 18 3.3 选择结构 选择结构:根据条件决定执行两组或多组操作中的一组。 二路分支 if else 语句 多路分支 switch语句 3.3.1 关系运算和逻辑运算 条件:是一个关系表达式或者逻辑表达式 结果是逻辑值:真或假, 用整数1表示“真”,用整数0表

14、示“假”。 1. 关系运算 关系运算是一种比较运算,有六个用于进行比较的运算符, 大于 = 大于等于 b 值为假 20 与数学表达式的区别 = = != 优先级高 优先级低 算术运算 赋值运算 关系运算 (3) 运算符的优先级问题 z=i*i+j*j100 结果为0 z变量的值为0 如: 3100 结果为 1 0 A 65 a 97 附录一 24 3.3.2 if/else 语句形式: if (表达式) 语句1 else 语句2 执行流程: 表达式值真(非0)时,执行语句1 ; 否则,执行语句2, 无论执行了哪一路分支之后,都执 行if的下一条语句; 例 if(xy) max=x; else

15、max=y; 25 1不带else的if语句 形式: if (表达式) 语句 执行过程: 表达式为真(非0)时,执行其后的 语句,然后执行if的下一个语句, 否则直接执行if的下一个语句。 例: if(xy) printf(“%d”,x); 26 vif语句嵌套: l一般形式: if (expr1) if (expr2) statement1 else statement2 else if(expr3) statement3 else statement4 内嵌if 内嵌if if (expr1) if (expr2) statement1 else statement2 内嵌if if (expr1) if (expr2) statement1 else statement3 内嵌if if (expr1) statement1 else if(expr3) statement3 else statement4 内嵌if 27 例 输入两数并判断其大小关系 /*ch4_4.c*/ #include void main() int x,y; printf(“Enter integer x,y:“); scanf(“%d,%d“, if(x!=y) if(xy) printf(“XYn“); else printf(“Xb)?a:b

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号