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

下载本文档

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

文档简介

主要内容:算法的表示方法、C程序的基本结构和输入输出。 3.1 算法 算法:是解决问题的一系列操作步骤的集合。 科学家沃思(Nikiklaus Wirth)提出一个公式: 数据结构 + 算法 = 程序 数据结构:对数据(操作对象)的描述。 算法: 对操作步骤的描述。 编写程序的本质: 对哪些数据进行什么样的一系列加工就可以达到目标。,第3章 算法和基本程序设计,例:依次读入30个学生成绩,输出平均成绩及最高成绩,算法:s1:0=i, 0=sum, 0=max s2:读入一个学生成绩存入score s3:i+1=i s4;sum+score=sum s5:如果score大于max,则score= max s6:如果i小于30,转移至s2 s7:sum/30=average s8:打印average,max,s2,s3,s4,s5,s6这些步骤会被重复执行30次, 变量i用于统计已处理的学生人数 当i值小于30时,流程转至s2读下一个学生成绩 当i值等于30时,所有学生成绩处理完毕,按顺序到s7计算平均成绩,再到s8输出结果。,算法举例,算法是解决问题逻辑思路的表述,同一问题有不同的解题方法和步骤,设计出不同的算法。 正确的算法应该具备以下特性。 有穷性:包含有限的操作步骤,不能无限制地执行下去。 确定性:算法中所描述的每个步骤都应该是明确的 有0 n个输入数据: 输入是指在算法执行过程中需要用户输入的信息。 有1 n个输出数据: 一般地,算法都有一个或多个输出数据,因为设计算法的目的就是进行数值运算或进行某种数据处理,给用户输出处理结果是必然的要求。 有效性: 在一个算法中,要求每个步骤都能被有效地执行,算法的特性,算法的表示,算法可用自然语言将其表述,但自然语言不严格,容易出现“二义性”。当算法包含多个分支和循环时,自然语言表述就更为困难。可采用更规范化的方法表示,常用的有:流程图、N-S图、伪代码、PAD图等。流程图是最常用的一种方法。它用图形符号配合文字表示流程和操作,形象直观,易于理解。,起止框,I/O框,判断框,处理框,流程线,连接点,例:求三个整数的和,main( ) float x,y,z,sum; scanf(“%f%f%fn”, ,例2:求三个数中最小数,#include main() int a,b,c,min; scanf(“%d%d%d“, ,例:求三个数中最小数。,3.2 结构化程序设计方法,结构化程序设计方法的基本思想是:把一个复杂问题的求解过程分步进行,后一步在前一步的基础上细化,这样每步所考虑的子问题都相对易于理解和处理,每步都只用三种基本结构, 进行复合和嵌套。也可以概括为:自顶向下,逐步求精的方法。,3.3 程序基本结构,从结构化程序设计角度出发, 程序有三种基本结构: 只要用这三种基本结构, 经过有限次复合和嵌套就可以解决程序设计的全部问题。程序结构清晰可读性好, 易维护。,顺序结构、选择结构、循环结构,1. 顺序结构,先执行A, 再执行B.,2. 选择结构,若P为真,则执 行A,否则执行B。,若P为真,则执 行A,否则跳过A。,3. 循环结构,(1) 当型循环 当P为真,反复执行A, P为假时出循环。,(2) 直到型循环 先执行A, 再判断,若P为假,反复执行A, 直到P为真出循环。,x5,另外:由选择结构可以派生出多分支结构.,C程序是由语句组成,每个语句以分号结束。 语句分类: 控制语句: 控制程序执行流程 表达式语句 函数调用语句:调用函数 空语句: 执行空操作 复合语句: 执行一组语句 用 把一些语句括起来,相当于一个语句 如: x1=-(-b+sqrt(d)/(2*a); x2=-(-b-sqrt(d)/(2*a); ,3.4 顺序结构程序设计,输入:将数据送入计算机 输出:将计算机处理的结果数据送出到输出设备。 语言中,数据输入输出是由库函数完成。 使用库函数时,用预编译命令将有关“头文件”包括到源文件中。 标准输入输出库函数: “stdio.h”文件 源文件开头应有以下预编译命令: #include #include “stdio.h“,3.5 数据的输入输出,格式: 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 函数(字符输出函数),例 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);,格式:getchar( ) 功能:从键盘读一字符 返值:正常,返回读取的代码值;出错,返回EOF,例,/*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,3. getchar函数(字符输入函数),4. getch函数,格式: getch ( ) 功能:从键盘读入一字符, 不用回车结束,不回显,例:,#include main( ) char c; c=getch ( ); putchar( c ); ,a a,5. getche函数,格式: getche ( ) 功能:从键盘读入一字符, 不用回车结束,回显,例:,#include main( ) char c; c=getche ( ); putchar( c ); ,a aa,6.scanf函数 (格式输入函数),地址表:变量的地址,用取地址运算符& 格式字符: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,格式: 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、输入数据时不能规定精度;,2、参数中“格式控制”之后应该是变量地址;,3、如果在“格式控制”字符串中除了格式说明以外, 还有其他字符,则在输入数据时应输入与这些 字符相同的字符;,例:scanf(”%7.2f”,&a);,例: scanf(”%f”,a);,例:scanf(”a=%d,b=%d”, &a,&b);,输入时应该是:a=3,b=4 ,4、在用“%c”格式输入字符时,空格字符和转义 字符都作为有效的字符输入。,例:scanf(”%d%d”,&a,&b);,输入时可为:3 4 ,3 4 ,3Tab键4 ,例:scanf(”%c%c%c”,&c1,&c2,&c3);,若输入时为:a b c ,则结果为: c1=a,c2= ,c3=b,5、double型数据输入时,必须用%lf或%le格式,#include #include 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)

温馨提示

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

评论

0/150

提交评论