单元2 顺序结构程序设计_第1页
单元2 顺序结构程序设计_第2页
单元2 顺序结构程序设计_第3页
单元2 顺序结构程序设计_第4页
单元2 顺序结构程序设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、知识目标1掌握算法定义、算法的五大特性及表示方法;2了解三种控制结构,能画出对应控制结构的流程图或N-S图;3掌握格式、字符输入输出函数的使用方法;4掌握顺序结构程序设计方法。 能力目标1能够用流程图、N-S图描述算法。2能够用流程图、N-S图描述程序的三种基本结构。3能够使用C语言进行顺序结构程序设计。 单元二 顺序结构程序设计引例描述 已知有两个整数定义如下:int a=10,b=20;请编写一函数,交换两个变量的值,使得交换后,a=20,b=10。演示一、算法1、算法的概念:为解决某一个问题而采取的方法和步骤。2.1 算法及其表示2、算法的五大特性:有穷性:有限步骤内结束确定性:不能产生

2、歧义可行性0个或多个输入:从外界获取必要信息1个或多个输出:算法必须有结果计算出5!;输入一个正整数n,然后判断n是否为素数;计算任意两个整数的最大公约数。示例程序=算法+数据结构将成绩优秀的学生名单打印二、算法的表示1、自然语言:易懂但不直观2、流程图:自然图形3、N-S图:矩形框4、伪代码:介于自然语言和计算机语言之间的文字和符号【示例】求a,b的最大值max。自然语言:如果a的值比b的值大,把a的值赋给max;否则,把b的值赋给max。符号形状名称圆角矩形起止框平行四边形输入、输出框矩形处理框菱形判断框带箭头的(折)线段流程线aba=maxb=maxYN流程图【例2-1】用伪代码方式表示

3、算法“打印出x的绝对值”;用伪代码方式表示算法“求5!”;开始 置t的值为1 置i的值为2 当iba=maxb=max成立不成立开始 若x为正数 打印x的值 否则 打印-x的值 结束一、顺序结构 是指按照程序中语句书写的顺序一条一条依次执行。二、选择结构 是根据条件判断的结果,从两种或多种路径中选择其中的一条执行。三、循环结构 是将一组操作重复执行多次。2.2 程序的三种基本结构ABAB顺序结构流程图N-S图选择结构流程图N-S图PBA真假P真假AB当循环结构流程图N-S图PA真假当P为真A直到循环结构流程图N-S图PA假真直到P为假A【例2-2】用流程图和N-S图表示算法“求两个数中的最大值

4、”。开始输入a,ba=maxbmaxb=max输出max结束YN输入a,ba=max输出maxbmax成立不成立 b=max【例2-3】请分别用流程和N-S图表示算法“求5!” 。开始1=t,1=iit,i+1=iY输出t结束N思考2.1:上题中,直到型循环的流程图和当型循环的N-S图又该怎样表示?想一想1=t1=it*i=ti+1=i输出t直到i=5不成立开始 置t的值为1 置i的值为1 当i=5时 t =ti i=i1 输出t 结束做一做【课堂实践2-1】 用流程图和N-S图表示算法“求三个数中的最大值”。2.3 数据的输入和输出 C语言的输入和输出操作是通过函数来实现的,在使用前必须在程

5、序的前面使用命令:#include 。 一、格式化输出函数printf() printf(格式控制字符串,输出表列)说明:格式控制字符串,包括普通字符和格式说明两部分,格式说明由%开头,后跟格式字符及修饰符组成;如:printf(a=%dn,a);说明:格式控制字符串中的普通字符按原样输出;如:printf(hello!n);输出结果为hello!用双引号括起来的字符串变量,常量,表达式说明:格式说明与输出表列输出项的个数要一致,格式说明的作用是使对应的输出项按指定的格式输出;说明:输出表列由输出项组成,两个输出项之间用逗号分隔;输出结果为:1,3,5 1,3,1993(不确定) 1,3如:i

6、nt a=1,b=3,c=5; printf(%d,%d,%dn,a,b,c); printf(%d,%d,%dn,a,b); printf(%d,%dn,a,b,c);printf(%d,%c,%f,a,b,c);将输出表列中的值按格式输出到屏幕上格式字符及作用d或i:按有符号十进制整型数据形式输出;x或X:按无符号十六进制整型数据形式输出;o(小写字母):按无符号八进制整型数据形式输出;u(小写字母):按无符号十进制整型数据形式输出;c (小写字母) :按字符形式输出;s (小写字母):按字符串形式输出;f (小写字母):按小数形式输出实数;e或E:按指数形式输出实数;g或G:自动选择f格

7、式或e格式中占宽度较小的一种输出单精度实数;%:输出%本身。如:int a= -2; printf(%xn,a); 输出结果为:如:int a= -2; printf(%xn,a); 输出结果为:(ffff)fffe如:int a= -2; printf(%on,a);输出结果为:如:int a= -2; printf(%on,a); 输出结果为:37777777776如:int a= -2; printf(%un,a); 输出结果为:4294967294如:char ch=a; int a= -191; printf(%c,%cn,ch,a);输出结果为:如:char ch=a; int a

8、= -191; printf(%c,%cn,ch,a); 输出结果为:a,A如:printf(%sn, Hello!); 输出结果为:Hello!如:float a=3.14159; printf(%fn,a);输出结果为:如:float a=3.14159; printf(%fn,a);输出结果为:3.141590如:float a=3.14159; printf(%En,a);输出结果为:如:float a=3.14159; printf(%En,a);输出结果为:3.141590E+000如:int a=78,b=64; printf(%d%*%dn,a,b);输出结果为:如:int a

9、=78,b=64; printf(%d%*%dn,a,b);输出结果为:78%*64修饰符及作用:修饰符在使用时应加在格式字符和%之间。l或L:按长整型数据输出,可加在d,x,o,u格式符前;h:按短整型数据输出,可加在d,x,o,u 格式符前;m(正整数):指定输出项所占的字符数(域宽),当指定域宽小于实际域宽时按实际域宽输出,当指定域宽大于实际域宽时在前面用空格补足;.n(正整数):指定输出的实型数据的小数位数,系统默认小数位数为6;0(数字):指定数字前的空格用0填补; 或+:指定输出项的对齐方式, 表示左对齐,+表示右对齐。如:long a= 65538; printf(%ld,%dn

10、,a,a);输出结果为:如:long a= 65538; printf(%ld,%dn,a,a);输出结果为:65538,65538如:int a= 123,b=12345; printf(%4d,%4dn,a,b);输出结果为:如:int a= 123,b=12345; printf(%4d,%4dn,a,b);输出结果为:123,12345如:float x= 123.44; printf(%.1f,%.2f,%.6fn,x,x,x);输出结果为:如:float x= 123.44; printf(%.1f,%.2f,%.6fn,x,x,x);输出结果为:123.4,123.44,123.

11、440002如:float x= 123.46; printf(%07.1f,%07.2fn,-x,x);输出结果为:如:float x= 123.46; printf(%07.1f,%07.2fn,-x,x);输出结果为:-0123.5,0123.46如:float x= 123.46; printf(%-07.1f,%07.2fn,-x,x);输出结果为:如:float x= 123.46; printf(%-07.1f,%07.2fn,-x,x);输出结果为:-123.5,0123.46二、格式化输入函数scanf()例如:scanf(%d,%d,&a,&b); 不能写成scanf(%d

12、,%d,a,b);从键盘按格式输入变量值同printf函数输入项组成,两个输入项之间用逗号分隔,输入项由取地址运算符&和变量名组成,即:&变量名;scanf(格式控制字符串,地址表列)说明:修饰符及作用:l,h,m(正整数)的作用同printf()函数;*(称为抑制字符)的作用是按格式说明输入的数据不赋给相应的变量,即“虚读”。如:int a,b; scanf (%d%*d%d,&a,&b); printf (%d,%dn,a,b); 如果输入数据为:12345678,则将123赋给变量a,45不赋给任何变量,678赋给变量b,因此,输出结果为:123,678 说明:普通字符按原样输入,用来分

13、割所输入的数据;输入数据流的分割有以下四种方法:根据格式说明规定的数据类型从数据流中取得数据,即当数据流的数据类型与格式说明的类型不一致时,就认为这一数据项结束;如:int a; char ch; float x; scanf (%d%c%f,&a,&ch,&x); 如果输入流为:123%456.78,系统将输入流送入缓冲区,然后按格式%d为变量a读入数据,当读到数据%时发现类型不符,于是把123存入变量a的内存单元,再把字符%存入变量ch 的内存单元,最后把456.78存入变量x的内存单元。 根据格式说明中指定的域宽从数据流中分割数据;通过在格式字符串指定分割符来分割数据,分割符可以是一切非

14、格式字符;如:int a,b; printf(“a=,b=:”); scanf (a=%d,b=%d,&a,&b); scanf ( )函数中的a=,b=都是普通字符,作为数据流的分割符,比如:要把456赋值给变量a,789赋值给变量b,则在输入数据时应输入:a=456,b=789。 在格式字符串中没有指定分割符时,常使用空格、Tab键、回车键来分割数据。如:int k1,k2; scanf (%d%d,&k1,&k2);输入流可以是1020,也可以是1020,还可以是10(按Tab键)20。如:char a; int b; scanf (%3c%3d,&a,&b); printf(“%c,%

15、dn”,a,b);如果输入流为:ab12345,则输出结果为:a,234。 说明:如果输入的数据多于变量的个数时,余下的数据可为下一个scanf()函数使用。如:int a,b,c,d; scanf (%d%d,&a,&b); scanf (%d%d,&c,&d);若输入流为1234567890,则a、b、c、d的值分别为12,23,45,78。三、 字符输出函数putchar()一般形式 putchar(ch)说明:函数参数ch,可以是字符变量或整型变量或字符常量;函数的返回值是向输出的字符;向屏幕输出一个字符【例2-4】putchar()函数举例。#include int main()ch

16、ar a,b,c,d;a=g;b=o;c=111;/与ASCII码值111对应的字符为od=d;putchar(a);putchar(b);putchar(c);putchar(d);return 0; 运行以上程序,运行结果为:good 四、 字符输入函数getchar()一般形式 getchar( )说明:该函数没有参数,函数的返回值是从输入设备得到的字符;从键盘输入的数据通过回车键确认结束;该函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,而作为表达式的一部分;从键盘读入一个字符说明:常用if(ch=getchar()=Y)确定用户输入的字符是否是所需的字符。该函数常

17、与putchar()配合使用,将读入的字符输出到终端。【例2-5】getchar()的应用举例。 #include stdio.h int main() char c; c=getchar(); putchar(c); return 0; 运行以上代码,从键盘输入a,输出结果为:a。2.4 典型实例【例2-6】求一元二次方程ax2+bx+c=0的两个不同的实数根,要求:a、b、c三个系数从键盘输入,保证a0且b2-4ac0。分析:由高中数学可知,当判别式=b2-4ac0时,方程有两个不相等的实数根,并可用求根公式表示。令p=-b/2a,q=sqrt()/2a,两个根分别为:x1=p+q,x2=

18、p-q。因此,程序中要用到系统提供的平方根函数sqrt(),需要将该函数所在的头文件math.h包含到程序中。操作演示定义变量disc,x1,x2,p,qp+q = x1b*b-4*a*c=discsqrt(disc)/(2*a) = q-b/(2*a) = pp-q = x2输出x1,x2操作演示#include #include void ExtractERRoot(float a,float b,float c);void ExtractERRoot(float a,float b,float c) float disc,x1,x2,p,q; p= -b/(2*a); disc=b*b-4*a*c; q=(float)sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf (方程的两根分别为:x1=%5.2f,x2=%5.2f。n,x1,x2);int main() float a,b,c; printf(请输入方程系数a,b,c,保证b*b-4*a*c0, 以空格或回车或tab等分隔:n); scanf(%f%f%f,&a,&b,&c); ExtractERRoot(a,b,c); return 0;【例2-7】编写程序,输入一个三位整数,输出各位数字的和。如,输入123,输出6。分析: 通过单元一的学习,我们已经学会提取各位数字的值

温馨提示

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

评论

0/150

提交评论