




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 基本结构程序设计,要求: 理解程序和算法。 理解程序的三种基本结构。 掌握表达式语句、输入输出格式以及宏定义的规则和用法。 熟练掌握选择结构,if语句、switch语句的规则和用法。 熟练掌握循环结构,for、while、do while语句的规则和用法,主要内容:C语言的基本语句、程序的基本结构。 3.1 基本程序结构和结构化程序设计 科学家沃思(Nikiklaus Wirth)提出一个公式: 数据结构+算法=程序 数据结构:指对数据(操作对象)的描述。 算法:指对操作步骤的描述。 编写程序的本质: 对哪些数据进行什么样的一系列加工就可以达到目标。,程序,例3.1 求解一元二次方程ax2+bx+c=0(a0)的两个根。 s1:输入数据a,b,c s2:求根x1,x2 s3:输出结果 可以将求解算法(s2)进行细化设计如下: s2_1:求判别式d的值,d=b*b-4*a*c s2_2:判断:如果d=0,则按实根求法计算: x1=(-b+sqrt(d)/(2*a) x2=(-b-sqrt(d)/(2*a) 否则,按复根求法计算: 实部 r=-b/(2*a) 虚部 p=sqrt(-d)/(2*a),3.1.1 算法 1算法:是解决问题的一系列操作步骤的集合。,例3.2 依次读入30个学生成绩,输出平均成绩及最高成绩,算法:s1:i=0, sum=0, max=0; s2:读入一个学生成绩存入score; s3:i=i+1; s4;sum=sum+score;或者sum+=score; s5:如果score大于max,则 max=score; s6:如果i小于30,转移至s2 s7:average=sum/30; s8:打印average,max,s2,s3,s4,s5,s6这些步骤会被重复执行30次, 变量i用于统计已处理的学生人数 当i值小于30时,流程转至s2读下一个学生成绩 当i值等于30时,所有学生成绩处理完毕,按顺序到s7计算平均成绩,再到s8输出结果。,2算法举例,算法是解决问题逻辑思路的表述,同一问题有不同的解题方法和步骤,设计出不同的算法。 正确的算法应该具备以下特性。 有穷性:包含有限的操作步骤,不能无限制地执行下去。 确定性:算法中所描述的每个步骤都应该是明确的 有0 n个输入数据: 输入是指在算法执行过程中需要用户输入的信息。 有1 n个输出数据: 一般地,算法都有一个或多个输出数据,因为设计算法的目的就是进行数值运算或进行某种数据处理,给用户输出处理结果是必然的要求。 有效性: 在一个算法中,要求每个步骤都能被有效地执行,3. 算法的特性,3.1.2 算法的表示,算法可用自然语言将其表述,但自然语言不严格,容易出现“二义性”。当算法包含多个分支和循环时,自然语言表述就更为困难。可采用更规范化的方法表示,常用的有:流程图、N-S图、伪代码、PAD图等。流程图最常用的一种方法。它用图形符号配合文字表示流程和操作,形象直观,易于理解。,伪代码,伪代码(Pseudocode)是一种算法描述语言。使用为代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。它使用公约的一个结构性的编程语言 ,主要是供人阅读的,不是机器阅读的.,伪代码示例,主要() ( 诠释总额; printf(“请输入总价值:”); scanf的(“d个”,总数); 如果(“总计 70) ( printf(“请通行证”); ) 其他 ( printf(“请不及格”); ) getch(); ),PAD图(Problem Analysis Diagram),用二维数形结构的图表示程序的控制流,将这种图转换为程序代码比较容易。,PAD特点,1 使用表示结构优化控制结构的PAD符号所设计出来的程序必然是程序化程序; 2PAD图所描述的程序结构十分清晰。图中最左边的竖线是程序的主线,即第一层控制结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数 用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维数型结构的图形,程序从图中最左边上端的结点开始执行,自上而下,从左到右顺序执行; 4很容易将PDA图转换成高级程序语言源程序,这种转换可由软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率; 5既可用于表示程序逻辑,也可用于描述数据结构; 6PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象程序,随着设计工作的深入而使用“def”符号逐步增加细节,直至完成详细设计。,流程图,例:求三个整数的和,main( ) float x,y,z,sum; scanf(“%f%f%fn”, ,例2:求三个数中最小数,#include main() int a,b,c,min; scanf(“%d%d%d“, ,N-S图,完全去掉流程线,由一些基本框组成 一个大的框基本元素框,例:求三个整数的和,例:求三个数中最小数。,结构化程序设计,基本思想:,把一个复杂问题的求解过程分步进行,后一步在 前一步的基础上细化,这样每步所考虑的子问题 都相对易于理解和处理,每步都只用三种基本结构 进行复合和嵌套。 也可以概括为:自顶向下,逐步求精的方法。,基本程序结构,三种:顺序结构、选择结构、循环结构,1. 顺序结构,先执行A, 再执行B.,2. 选择结构,若P为真,则执行A, 否则执行B。,若P为真,则执行A, 否则跳过A。,另外:由选择结构可以派生出多分支结构。,3. 循环结构,(1) 当型循环 当P为真,反复执行A, P为假时出循环。,(2) 直到型循环 先执行A, 再判断,若P为真, 反复执行A, 直到P为假出循环。,顺序结构程序设计,C程序概述,语句分类:,由语句组成,每个语句以分号结束。, 控制语句, 表达式语句, 函数调用语句, 空语句, 复合语句,9种控制语句: 1条件判断语句 if ( ) else switch ( ) 2循环控制语句 for ( ) while ( ) do while ( ) 3转移语句 break continue goto return,例如: main( ) int a,b; a=b=100; float c=10.23; printf(“%fn“,c); printf(“%d %dn“,a,b); ,C中数据的输入输出,输入:将数据送入计算机。,输出:将计算机处理的结果数据送出到输出设备。,说明:,1、语言中,数据输入输出是通过调用库函数完成。,2、使用库函数时,用预编译命令将有关“头文件” 包括到源文件中。,3、标准输入输出库函数:“stdio.h”文件#include,4、源文件开头应有以下预编译命令: #include 或 #include “stdio.h“,头文件包含符号“”与,双引号表示先在程序源文件所在目录查找,如果未找到则去系统默认目录查找,通常用于包含程序作者编写的头文件; 尖括号表示只在系统默认目录,通常用于包含系统中自带的头文件; 尖括号: 在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找; 双引号: 首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。,1. putchar 函数(字符输出函数),字符数据的输入/输出,格式: putchar( c ) 参数: c为字符常量、变量或表达式 功能:把字符c输出到显示器上,例:,#include main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); ,A B,2、getchar函数(字符输入函数),格式: getchar( ) 功能:从键盘读入一字符, 遇回车结束并回显,例:,#include main( ) char c; c=getchar( ); putchar( c ); ,a a,getch函数,格式: getch ( ) 功能:从键盘读入一字符, 不用回车结束,不回显,例:,#include main( ) char c; c=getch ( ); putchar( c ); ,a,getche函数,格式: getche ( ) 功能:从键盘读入一字符, 不用回车结束,回显,例:,#include main( ) char c; c=getche ( ); putchar( c ); ,aa,例 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.140000, b=2.182800,输出表:要输出的数据(可以没有,多个时以,分隔) 格式控制串:包含两种信息 格式说明:%修饰符格式字符,用于指定输出格式 普通字符或转义序列:原样输出 格式字符: d格式符:按十进制格式输出 f格式符:按实数格式输出 c格式符:以字符形式输出一个字符,2. printf函数(格式输出函数),格式:printf(“格式控制串“,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF 说明:标准库函数,函数原型在头文件“stdio.h“中, 字母l,用于长整型数据的输出,可以加在 d、o、x、u四个格式字符的前面。 在格式字符的前面给出一个正整数m,指定数据最小的输出宽度。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格。若在格式符前面不指定输出宽度,则按数据的实际位数输出。 负号,指定输出的数字或字符串在指定宽度内向左靠齐。,对于实数,可以指定输出的小数位数,称为精度格式符,它以“.”开头,后跟十进制整数n,可以用于限制f、e、E、g和G格式字符;也用于字符串,表示截取的字符个数。实数若不指定输出的小数位数,则由系统自动指定,不同的系统略有不同。 “%f”格式,整数部分全部输出,小数部分输出六位数字。对于“%e”一般是输出占13列(11列),其中指数部分5列(4列),数值按规范化形式输出(即小数点前必须有且只有1位非零数字),输出六位(五位)小数。 例如: float x=234.541; printf(“%f,%12f,%8.2fn%e,%10.2en“,f,f,f,f,f); printf(“%s,%7.3s“,“technology”,”technology”);,234.541000, 234.541000, 234.54 2.345410e+002, 2.34e+002 technology, tec,main() printf(“%ld,%lo,%lu,%lxn“,32l,32l,32l,32l); printf(“%d,%f,%c,%s,%en“,2,3.1,a,“ok“,367.45); printf(“%d,%f,%c,%s,%en“,-2,-3.1,a,“ok“,-367.45); printf(“%2d,%2f,%2c,%2s,%2en“, 2,3.1,a,“ok“,367.45); printf(“%2d,%2f,%2c,%2s,%2en“, -2,-3.1,a,“ok“,-367.45); printf(“%5d,%10f,%10s,%15en“, 2,3.1,“ok“,367.45); printf(“%5d,%10f,%10s,%15en“,-2,-3.1,“ok“,-367.45); printf(“%10.4f,%10.4s,%10.4en“,3.1,“Hello,world“,367.45); printf(“%10.4f,%10.4s,%10.4en“,-3.1,“Hello,world“,-367.45); ,注意: 1。要输出的数据类型决定了所使用的格式字符串,否则,会有不正确的输出。 2。整型数据使用%d%o%x%u格式字符时,可能会有不同的输出结果。 3。对于0255之间的整数,若按%c输出,则输出与该整数对应的ASCII字符。反之,若用 %d输出字符量,则输出其对应的ASCII值。 4。使用printf时,若输出项是表达式,应注意求值顺序,对于TC来说,按照自右向左的顺序。 例如,int i=5; printf(“%d,%dn”,i+,i); printf(“%dn”,i);,地址表:变量的地址,用取地址运算符& 格式字符:d,c,f,例 int a scanf(“%d“, 输入:10 则 a=10,例 char a; scanf(“%c“, 输入:m 则 a=m,例 float a; scanf(“%f“, 输入:3.14 则 a=3.140000,4.scanf函数 (格式输入函数),格式: scanf(“格式控制串“,地址表) 功能:按指定格式从键盘读入数据,存入地址表指 定的存储单元中,按回车键结束 返值:正常,返回输入数据个数 说明:标准库函数, 在头文件“stdio.h“中定义,例 scanf(“%d:%d:%d“, 输入 12:30:45 则12 h, 30 m, 45 s,例 scanf(“%d,%d“,&a,&b) 输入 3,4 则3a, 4 b,例 scanf(“%d%d%d“, 输入 12 24 36 ,输入分隔符的指定 格式串中两个格式符有间隔字符 格式串两个格式符无间隔字符,以空格、TAB或回车键作为分隔,注意: 1. scanf函数顺用地址量接受数据。,2. 输入数据的间隔为,Tab. 空格.,3. 允许在格式符中插入附加字符(l,h,场宽, *)。,4. 指定数据长度时,系统自动截取。,则当输入123456时,scanf(“ %2d%2d “, ,a12, b34,6. 输入数据不能规定精度.,5. 在%后加“ *”表示跳过相应的数据,则当输入为12 345 67,则a12 b67,scanf(“%2d %*3d %2d“, ,scanf (“ %7.2f “, 是错误的,7. 在格式控制中除格式说明符外若还有其它字符,则应按顺序原样输入(不要在尾部加“n”)。,例: scanf(“ %d, %d“,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽贸园招商活动方案
- 每月开始活动方案
- 残联工会活动方案
- 河北装修活动方案
- 歌会校园活动方案
- 民族团结宣传活动方案
- 江西年会活动方案
- 江西支部联建活动方案
- 楼顶活动策划方案
- 残疾人美术展销活动方案
- STEMI患者接受P2Y12受体抑制剂预处理的探讨
- 大学物理课件-光电效应
- 比亚迪秦PLUS EV说明书
- 安全生产培训记录及效果评估表
- 潘祖仁版高分子化学(第五版)课后习题答案.24401
- 2023年广东广州市越秀区流花街招聘两名专职统计员笔试备考题库及答案解析
- 吉林省房屋修缮及抗震加固工程计价定额说明
- 预制箱梁施工监理重点检查内容标准版
- 干部人事档案目录(样表)
- 2023年北京理工附中小升初英语分班考试复习题
- 《沙盘游戏与大学生心理治疗》课程教学大纲
评论
0/150
提交评论