C语言课件第3章算法和基本程序设计_第1页
C语言课件第3章算法和基本程序设计_第2页
C语言课件第3章算法和基本程序设计_第3页
C语言课件第3章算法和基本程序设计_第4页
C语言课件第3章算法和基本程序设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主要内容:算法的表示方法、c c程序的基本结构和输入输出。3.1 3.1 算法算法算法:是解决问题的一系列操作步骤的集合。算法:是解决问题的一系列操作步骤的集合。科学家沃思(nikiklaus wirthnikiklaus wirth)提出一个公式: 数据结构数据结构 + + 算法算法 = = 程序程序数据结构:对数据(操作对象)的描述。算法:对操作步骤的描述。编写程序的本质: 对哪些进行什么样的一系列就可以达到目标。 第第3 3章章 算法和基本程序设计算法和基本程序设计例:例:依次读入30个学生成绩,输出平均成绩及最高成绩算法:算法:s1s1:0=i0=i, 0=sum0=sum, 0=ma

2、x0=max s2 s2:读入一个学生成绩存入:读入一个学生成绩存入scorescore s3 s3:i+1=ii+1=i s4 s4;sum+score=sumsum+score=sum s5 s5:如果:如果scorescore大于大于maxmax,则,则score= maxscore= max s6 s6:如果:如果i i小于小于3030,转移至,转移至s2s2 s7 s7:sum/30=averagesum/30=average s8 s8:打印:打印averageaverage,maxmaxs2,s3,s4,s5,s6s2,s3,s4,s5,s6这些步骤会被重复执行3030次,变量i

3、 i用于统计已处理的学生人数 当i i值小于3030时,流程转至s2s2读下一个学生成绩 当i i值等于3030时,所有学生成绩处理完毕,按顺序到s7s7计算平均成绩,再到s8s8输出结果。算法举例算法举例 算法是解决问题逻辑思路的表述,同一问题有不同的解题方法和步骤,设计出不同的算法。 正确的算法应该具备以下特性。有穷性:有穷性:包含有限的操作步骤,不能无限制地执行下去。确定性:确定性:算法中所描述的每个步骤都应该是明确的 有有0 0 n n个输入数据:个输入数据: 输入是指在算法执行过程中需要用户输入的信息。有有1 1 n n个输出数据:个输出数据: 一般地,算法都有一个或多个输出数据,因

4、为设计算法的目的就是进行数值运算或进行某种数据处理,给用户输出处理结果是必然的要求。有效性:有效性: 在一个算法中,要求每个步骤都能被有效地执行算法的特性算法的特性算法的表示算法的表示 算法可用自然语言将其表述算法可用自然语言将其表述, ,但自然语言不严格但自然语言不严格, ,容易出现容易出现“二义性二义性”。当算法包含多个分支和循环。当算法包含多个分支和循环时时, ,自然语言表述就更为困难。可采用更规范化的方自然语言表述就更为困难。可采用更规范化的方法表示法表示, ,常用的有:流程图、常用的有:流程图、n-sn-s图、伪代码、图、伪代码、pad图等。流程图是最常用的一种方法。它用图形符号图等

5、。流程图是最常用的一种方法。它用图形符号配合文字表示流程和操作配合文字表示流程和操作, ,形象直观形象直观, ,易于理解。易于理解。 起止框起止框i/o框框判断框判断框处理框处理框流程线流程线连接点连接点例:求三个整数的和例:求三个整数的和流程图流程图开始开始输出输出sum的值的值结束结束输入输入x,y,zsum=x+y+zmain( ) float x,y,z,sum; scanf(“%f%f%fn”,&x,&y,&z); sum=x+y+z; printf(“sum=%fn”,sum);例例2 2:求三个数中最小数:求三个数中最小数流程图流程图开始开始输出输出min的值的值输入输入a,b,

6、cabnmin=amin=by结束结束cminmin=cyn#include main() int a,b,c,min; scanf(%d%d%d,&a,&b,&c); if(ab) min=a; else min=b; if(cmin) min=c; printf(min=%d,min);例:求三个数中最小数。例:求三个数中最小数。流程图流程图开始开始输出输出min的值的值输入输入a,b,cabnmin=amin=by结束结束cminmin=cynn-sn-s图图min=bmin=bmin=amin=aababy yn nmin=cmin=ccmincminy yn n输入输入a,b,ca,

7、b,c输出输出minmin的值的值3.2 3.2 结构化程序设计方法结构化程序设计方法 结构化程序设计方法的基本思想是:把一个复杂结构化程序设计方法的基本思想是:把一个复杂问题的求解过程分步进行,后一步在前一步的基础上问题的求解过程分步进行,后一步在前一步的基础上细化,这样每步所考虑的子问题都相对易于理解和处细化,这样每步所考虑的子问题都相对易于理解和处理理, ,每步都每步都只用三种基本结构只用三种基本结构, 进行复合和嵌套进行复合和嵌套。也可。也可以概括为:以概括为:自顶向下自顶向下,逐步求精逐步求精的方法。的方法。 从结构化程序设计角度出发从结构化程序设计角度出发, 程序有三种基本程序有三

8、种基本结构结构: 只要用这三种基本结构只要用这三种基本结构, 经过有限次复合和嵌经过有限次复合和嵌套就可以解决程序设计的全部问题。程序结构清晰套就可以解决程序设计的全部问题。程序结构清晰可读性好可读性好, 易维护。易维护。顺序结构、选择结构、循环结构顺序结构、选择结构、循环结构1. 顺序结构顺序结构先执行先执行a, 再执行再执行b.ab2. 选择结构选择结构abpyn 若若p为真为真,则执则执行行a,否则执行否则执行b。apny 若若p为真为真,则执则执行行a,否则跳过否则跳过a。3. 循环结构循环结构(1) 当型循环当型循环 当当p为真为真,反复执行反复执行a,p为假时出循环。为假时出循环。

9、 (2) 直到型循环直到型循环 先执行先执行a, 再判断再判断,若若p为假为假,反复执行反复执行a, 直到直到p为真出循环。为真出循环。pnyaapnyx5 另外另外:由选择结构可以派生出多分支结构由选择结构可以派生出多分支结构.k=k1a1a2aiank2kiknc程序是由语句组成,每个语句以程序是由语句组成,每个语句以分号分号结束。结束。语句分类:语句分类: 控制语句控制语句: : 控制程序执行流程控制程序执行流程 表达式语句表达式语句 函数调用语句:函数调用语句:调用函数调用函数 空语句:空语句: 执行空操作执行空操作 复合语句:复合语句: 执行一组语句执行一组语句 用用 把一些语句括起

10、来,相当于一个语句把一些语句括起来,相当于一个语句 如:如: x1=-(-b+sqrt(d)/(2*a); x2=-(-b-sqrt(d)/(2*a); 3.4 3.4 顺序结构程序设计顺序结构程序设计输入:将数据送入计算机输出:将计算机处理的结果数据送出到输出设备。 语言中,数据输入输出是由库函数完成。 使用库函数时,用预编译命令将有关“头文件”包括到源文件中。 标准输入输出库函数: “stdio.h”stdio.h”文件 源文件开头应有以下预编译命令: #include #include #include stdio.h #include stdio.h 3.5 3.5 数据的输入输出数据

11、的输入输出格式: putchar( c )参数: c为字符常量、变量或表达式功能:把字符c输出到显示器上返值:正常,为显示的代码值;出错,为eof#include main() int c; char a; c=65; a=b; putchar(c); putchar(n); putchar(a);运行结果:a b例1. putchar 1. putchar 函数(字符输出函数)函数(字符输出函数)例 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例

12、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输出表:输出表:要输出的数据要输出的数据( (可以没有,多个时以可以没有,多个时以,分隔分隔) )格式控制串:格式控制串:包含两种信息包含两种信息格式说明:格式说明:%修饰符修饰符 格式字符格式字符, ,用于指定输出格式用于指定输出格式普通字符或转义

13、序列:普通字符或转义序列:原样输出原样输出格式字符:格式字符: d d格式符:格式符:按十进制格式输出按十进制格式输出 f f格式符:格式符:按实数格式输出按实数格式输出 c c格式符:格式符:以字符形式输出一个字符以字符形式输出一个字符2.2. printfprintf函数(格式输出函数)函数(格式输出函数)格式:格式:printf(格式控制串格式控制串,输出表,输出表)功能:功能:按指定格式向显示器输出数据按指定格式向显示器输出数据返值:返值:正常,返回输出字节数;出错,返回正常,返回输出字节数;出错,返回eof说明:说明:标准库函数,函数原型在头文件标准库函数,函数原型在头文件stdio

14、.h中中格式字符格式字符意意 义义d以十进制形式输出带符号整数以十进制形式输出带符号整数(正数不输出符号正数不输出符号)o以八进制形式输出无符号整数以八进制形式输出无符号整数(不输出前缀数字不输出前缀数字0)x,x以十六进制形式输出无符号整数以十六进制形式输出无符号整数(不输出前缀不输出前缀ox)u以十进制形式输出无符号整数以十进制形式输出无符号整数f以小数形式输出单、双精度实数以小数形式输出单、双精度实数e,e以指数形式输出单、双精度实数。用以指数形式输出单、双精度实数。用e时指数以时指数以e表示,用表示,用e时指数以时指数以e表示。表示。g,g以以%f或或%e中较短的输出宽度输出单、双精度

15、实中较短的输出宽度输出单、双精度实数数c输出单个字符输出单个字符s输出字符串输出字符串 字母字母l,用于长整型数据的输出,可以加在,用于长整型数据的输出,可以加在 d、o、x、u四个格式字符的前面。四个格式字符的前面。 在格式字符的前面给出一个正整数在格式字符的前面给出一个正整数m,指定,指定数据最小的输出宽度。若实际位数多于定义的数据最小的输出宽度。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格。若在格式符前面不指定义的宽度则补以空格。若在格式符前面不指定输出宽度,则按数据的实际位数输出。输出宽度,则按数据的实际位数输出

16、。负号,指定输出的数字或字符串在指定宽度负号,指定输出的数字或字符串在指定宽度内向左靠齐。内向左靠齐。 对于实数,可以指定输出的小数位数,称为精度对于实数,可以指定输出的小数位数,称为精度格式符,它以格式符,它以“.”开头,后跟十进制整数开头,后跟十进制整数n,可以用于,可以用于限制限制f、e、e、g和和g格式字符;也用于字符串,表示格式字符;也用于字符串,表示截取的字符个数。实数若不指定输出的小数位数,则截取的字符个数。实数若不指定输出的小数位数,则由系统自动指定,不同的系统略有不同。由系统自动指定,不同的系统略有不同。 “%f”格式,格式,整数部分全部输出,小数部分输出六位数字。对于整数部

17、分全部输出,小数部分输出六位数字。对于“%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.542.345410e+002

18、, 2.34e+002technology, 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

19、.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。对于。对

20、于0255之间的整数,若按之间的整数,若按%c输出,则输出与该整数输出,则输出与该整数对应的对应的ascii字符。反之,若用字符。反之,若用 %d输出字符量,则输出其输出字符量,则输出其对应的对应的ascii值。值。4。使用。使用printf时,若输出项是表达式,应注意求值顺序,时,若输出项是表达式,应注意求值顺序,对于对于tc来说,按照自右向左的顺序。来说,按照自右向左的顺序。 例如,例如,int i=5; printf(“%d,%dn”,i+,i); printf(“%dn”,i);格式:getchar( )功能:从键盘读一字符返值:正常,返回读取的代码值;出错,返回eof例 /*ch3_

21、4.c*/#include main() int c; printf(enter a character:); c=getchar(); printf(%c-hex%xn,c,c);运行结果:enter a character:aa-hex413. getchar3. getchar函数(字符输入函数)函数(字符输入函数)4. getch函数函数格式格式: getch ( )功能:功能:从键盘读入一字符,从键盘读入一字符, 不用回车结束,不用回车结束,不回显不回显例:例:#include main( ) char c; c=getch ( ); putchar( c ); a a5. getc

22、he函数函数格式格式: getche ( )功能:功能:从键盘读入一字符,从键盘读入一字符, 不用回车结束,不用回车结束,回显回显例:例:#include main( ) char c; c=getche ( ); putchar( c ); a aa6.scanf6.scanf函数函数 ( (格式输入函数格式输入函数) ) v地址表:变量的地址,用取地址运算符&v格式字符:d,c,f例 int a scanf(%d,&a); 输入:10 则 a=10例 char a; scanf(%c,&a); 输入:m 则 a=m例 float a; scanf(%f,&a); 输入:3.14 则 a=3

23、.140000格式: scanf(格式控制串,地址表)功能:按指定格式从键盘读入数据,存入地址表指 定的存储单元中,按回车键结束返值:正常,返回输入数据个数说明:标准库函数, 在头文件stdio.h中定义例例 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 输入分隔符的指定格式串中两个格式符有间隔字符格式串两个格式符无间隔字符,以空格、tab或回车键作为分隔关于格式输

24、入函数的几点说明:关于格式输入函数的几点说明:1 1、输入数据时不能规定精度;、输入数据时不能规定精度;2 2、参数中、参数中“格式控制格式控制”之后应该是变量地址;之后应该是变量地址;3 3、如果在、如果在“格式控制格式控制”字符串中除了格式说明以外,字符串中除了格式说明以外, 还有其他字符,则在输入数据时应输入与这些还有其他字符,则在输入数据时应输入与这些 字符相同的字符;字符相同的字符;例:例:scanf(”%7.2f”,&a););例例: scanf(”%f”,a););例:例:scanf(”a=%d,b=%d”, &a,&b););输入时应该是:输入时应该是:a=3,b=4 4 4、在用、在用“%c”

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论