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

下载本文档

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

文档简介

《C语言程序设计》第四章顺序结构程序设计本章内容要点•算法的简单描述

•数据的输入和输出

•顺序结构程序示例

本章任务

一个程序的执行通常离不开数据的输入和输出。本章要完成的任务就是在顺序结构程序设计中,正确地进行数据的输入和输出格式控制。任务分解:根据商品原价和折扣率,计算商品的实际售价。从键盘输入一个大写字母,要求改用小写字母输出。2.1算法

2.1.1算法的概念1.算法算法(Algorithm)一词源于算术(Algorism)。粗略地说,算术方法是一个由已知推求未知的运算过程。后来人们引申开来,把进行某一工作的方法和步骤称为算法。因此,算法反映了计算机的执行过程,是对解决特定问题的操作步骤的一种描述。

2.1算法

2.1.1算法的概念2.简单算法举例【例3.1】求1×2×3×4×5(即5!)。最原始的方法如下。步骤S1:先求1×2,得到结果2。步骤S2:将步骤1得到的乘积2乘以3,得到结果6。步骤S3:将6再乘以4,得24。步骤S4:将24再乘以5,得120。这样的算法虽然正确,但太繁琐。改进的算法如下。S1:使t=1。S2:使i=2。S3:使t×i,乘积仍然放在在变量t中,可表示为t×i→t。S4:使i的值加1,即i+1→i。S5:如果i≤5,则返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。如果计算100!,则只需将S5中的i≤5改成i≤100即可。如果求1×3×5×7×9×11,算法也只需按如下方式做很少的改动。S1:1→t。S2:3→i。S3:t×i→t。S4:i+2→t。S5:若i≤11,返回S3,否则,结束。该算法不仅正确,而且对于计算机来说,是较好的算法,因为计算机是高速运算的自动机器,实现循环轻而易举。2.1算法

3.1.1算法的概念2.简单算法举例【例3.2】输入3个数,求其最大值。问题分析:设num1、num2、num3存放3个数,max存放其最大值。为求最大值,就必须对3个数进行比较,可按如下步骤去做。(1)输入3个数num1、num2和num3。(2)先把第1个数num1的值赋给max。(3)将第2个数num2与max比较,如果num2>max,则把第2个数num2的值赋给max(否则不做任何工作)。(4)将第3个数num3与max比较,如果num3>max,则把第3个数num3的值赋给max(否则不做任何工作)。(5)输出max的值,即最大值。从该例中可以看出,首先分析题目,然后寻找一种实现这个问题所要完成功能的方法,这种方法的具体化就称为算法。因此可以说,算法是由一套明确的规则组成的一些步骤,它指定了操作顺序并通过有限个步骤来解决问题、得出结果。2.1算法

2.1.1算法的概念3.算法的特性(1)有穷性(2)确定性(3)有效性(4)有零个或多个输入(5)有一个或多个输出2.1算法

2.1.2算法的表示算法的表示方法很多,常用的有自然语言、传统流程图、N-S结构图、伪代码等。1.用自然语言表示2.用传统流程图表示3.N-S结构图表示4.用伪代码表示2.1算法

2.1.2算法的表示1.用自然语言表示

自然语言就是人们日常使用的语言,可以是中文、英文等。用自然语言表示算法通俗易懂,但一般篇幅冗长,表达上往往不易准确,容易引起理解上的“歧义性”。所以,自然语言一般用于算法较简单的情况。2.用传统流程图表示

用一些图框表示各种操作,用箭头表示算法流程。用图形表示算法直观形象、易于理解。美国标准化协会ANSI规定了一些常用的流程图符号,如图3.1所示。这些流程图符号已为世界各国程序工作者普遍采用。2.1算法

2.1.2算法的表示2.用传统流程图表示图3.1流程图符号起止框:表示算法的开始和结束。一般内部只写“开始”或“结束”。处理框:表示算法的某个处理步骤,一般内部常常填写赋值操作。输入输出框:表示算法请求输入输出需要的数据或算法将某些结果输出。一般内部常常填写“输入…”,“打印/显示…”。菱形框(判断框):作用主要是对一个给定条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。它有一个入口,两个出口。连接点:用于将画在不同地方的流程线连接起来。同一个编号的点是相互连接在一起的,实际上同一编号的点是同一个点,只是画不下才分开画。起止框连接点输入输出框判断框指向线处理框2.1算法

2.1.2算法的表示2.用传统流程图表示下面给出3种基本结构及与其对应的流程图。顺序结构:其对应的流程图见图3.2。分支结构:其对应的流程图见图3.3和图3.4。循环结构:其对应的流程图见图3.5和图3.6。图3.2顺序结构图3.3分支结构一图3.4分支结构二图3.5循环结构一图3.6循环结构二2.1算法

2.1.2算法的表示3.用N—S结构图表示三种基本结构对应的N-S图如图3.7所示。

(a)顺序结构(b)分支结构(c)循环结构图3.7三种基本结构对应的N-S图2.1算法

2.1.2算法的表示4.用伪代码表示

伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。伪代码不用图形符号,书写方便,格式紧凑,便于向计算机语言算法过渡。【例3.3】用伪代码描述例3.2,获得求3个数中的最大值的算法。伪代码如下:inputnum1,num2,num3num1→maxifnum2>maxthennum2→maxifnum3>maxthennum3→maxprintmax2.1算法

2.1.3结构化程序设计方法顺序结构:顺序结构是最简单的基本结构。在顺序结构中,要求顺序地执行且必须执行由行后顺序排列的每一个最基本的处理单位。选择结构:在选择结构中,根据逻辑条件的成立与否,分别选择执行不同的处理。循环结构:循环结构一般分为当型循环和直到型循环。当型循环:在当型循结构中,当逻辑条件成立时,就反复执行处理A(称为循环体),直到逻辑条件不成立时结束(见图3.5)。直到型循环:在直到型循环结构中,反复执行处理A,直到逻辑条件成立结束(即逻辑条件不成立时继续执行)(见图3.6)。解决本章任务一【例3.4】根据商品原价和折扣率,计算商品的实际售价。程序框图如图3.8所示。图3.8程序框图程序代码如下:main(){floatprice,discount,fee;printf("InputPrice,Discount:");scanf("%f%f",&price,&discount);fee=price*(1-discount/100);printf("Fee=%.2f\n",fee);}运行结果:InputPrice,Discount:10010Fee=90.003.2C语句

3.2.1控制语句C语句主要包括控制语句、表达式语句、赋值语句、函数调用语句、复合语句、空语句等,其中存在包含关系。控制语句用于控制程序的流程,以实现程序的各种结构。它们由特定的语句定义符组成。如表3.1所示,C语言有9种控制语句,可分成以下3类。条件判断语句:if语句、switch语句。循环执行语句:do-while语句、while语句、for语句。转向语句:break语句、goto语句、continue语句、return语句。3.2C语句

3.2.1控制语句表3.1C语言的控制语句语

句名

称if-else条件语句for循环语句while循环语句do-while循环语句continue结束本次循环语句break中止执行switch或循环语句switch多分支选择语句goto转向语句return从函数返回语句3.2C语句

3.2.2表达式语句表达式语句:表达式语句由表达式加上分号“;”组成。其一般形式为:表达式;执行表达式语句就是计算表达式的值。表达式语句可分为:赋值语句函数调用语句空语句3.2C语句

3.2.3特殊语句C语言中还包括一些其他语句,如复合语句等。把多个语句用花括号{}括起来组成的语句称复合语句。在程序中可以把复合语句看成是一条语句,而不是多条语句。例如:{x=y+z;a=b+c;printf("%d%d",x,a);}3.3数据输出

在C语言中,所有的输入输出都是通过调用标准库函数中的输入输出函数来实现的。本节介绍向标准输出设备输出数据的printf函数。printf函数称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出到标准输出设备上。3.3.1输入输出的概念3.3.2格式输出函数(printf)从计算机向外部设备(如显示器、打印机、磁盘等)输出数据称为“输出”,从外部设备(如键盘、鼠标、扫描仪、光盘、磁盘)向计算机输入数据称为“输入”。输入/输出是以计算机主机为主体而言的。%d——表示按十进制整型输出%ld——表示按十进制长整型输出%c——表示按字符型输出3.3数据输出

3.3.2格式输出函数(printf)1.printf函数调用的一般形式其中“格式控制字符串”用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。例如:非格式字符串在输出时原样照印,在显示中起提示作用。在“输出列表”中给出了各个输出项,要求格式字符串与各输出项在数量和类型上应该一一对应。printf函数称为格式输出函数。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。

printf函数调用的一般形式为:printf("格式控制字符串",输出列表);3.3数据输出

3.3.2格式输出函数(printf)2.格式字符串各项的意义介绍如下:类型:类型字符用来表示输出数据的类型,其格式符和意义如表3.2所示。标志:标志字符为-、+、#、空格,共4种,其意义如表3.3所示。输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。长度:长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出。在TurboC中,格式字符串的一般形式为:[标志][输出最小宽度][.精度][长度]类型3.3数据输出

3.3.2格式输出函数(printf)表3.2格式字符格式字符意

义d以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x、X以十六进制形式输出无符号整数(不输出前缀0x)u以十进制形式输出无符号整数f以小数形式输出单、双精度实数e、E以指数形式输出单、双精度实数g、G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串表3.3标志符标

志意

义-结果左对齐,右边填空格+输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号#对c、s、d、u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e、g、f类,当结果有小数时才给出小数点3.3数据输出

3.3.2格式输出函数(printf)格式输出printf函数举例:【例3.5】【例3.6】【例3.7】【例3.8】3.3数据输出

3.3.3字符输出函数(putchar)putchar函数的功能是将一个字符输出到显示器上显示。putchar函数的一般调用形式为:

putchar(c);即把变量c的值输出到显示器上,这里的c可以是字符型或整型变量,也可以是一个转义字符。

3.3数据输出

3.3.3字符输出函数(putchar)【例3.9】putchar函数应用举例。程序代码如下:#include"stdio.h"main(){chara,b,c,d;a='g';b='o';c=111;d='d';putchar(a);putchar(b);putchar(c);putchar(d);}程序说明:(1)putchar函数只能用于单个字符的输出,并且一次只能输出一个字符。(2)putchar函数在使用时,必须在程序的开头加上编译预处理命令#include“stdio.h”。运行结果:good3.4数据输入

3.4.1格式输入函数(scanf)1.scanf函数的一般形式scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数的一般形式为:scanf("格式控制字符串",地址列表);其中,“格式控制字符串”的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。“地址列表”中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。3.4数据输入

3.4.1格式输入函数(scanf)【例3.10】使用格式输入函数scanf例一。程序代码如下:main(){inta,b,c;printf("inputa,b,c\n");scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d",a,b,c);}程序说明:在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入789后按下Enter键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔,因此在输入时要用一个以上的空格或Enter键作为每两个输入数之间的间隔。例如:789或者:789运行结果:inputa,b,c789a=7,b=8,c=93.4数据输入

3.4.1格式输入函数(scanf)2.格式控制字符串格式说明的一般形式为:%*mh/l格式字符↓↓↓↓↓[开始符][赋值抑制符][宽度指示符][长度修正符][格式转换字符]3.4数据输入

3.4.1格式输入函数(scanf)2.格式控制字符串格式字符:表示输入数据的类型,其字符和含义如表3.4所示。格式字符说

明d、i输入有符号的十进制整数u输入无符号的十进制整数o输入无符号的八进制整数x、X输入无符号的十六进制整数(大小写作用相同)c输入单个字符s输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志‘\0’作为其最后一个字符f输入实数,可以用以小数形式或指数形式输入e、E、g、G与f作用相同,e与f、g可以互相替换3.4数据输入

3.4.1格式输入函数(scanf)2.格式控制字符串抑制字符“*”:表示该输入项读入后不赋予相应的变量,即跳过该输入值。宽度指示符:用十进制整数指定输入数据的宽度。长度修正符:长度修正符分为l和h两种,l用于输入长整型数据等;h用于输入短整型数据。使用scanf函数还必须注意以下几点:(1)scanf函数中没有精度控制,如scanf(“%5.2f”,&a);是非法的。不能企图用此语句输入小数为2位的实数。(2)scanf中要求给出变量地址,如给出变量名则会出错。如scanf(“%d”,a);是非法的,应改为scanf(“%d”,&a);才是合法的。(3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格、Tab或Enter作间隔。C编译在碰到空格、Tab、Enter或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。(4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。3.4数据输入格式输入scanf函数举例:【例3.11】【例3.12】【例3.13】3.4.1格式输入函数(scanf)3.4数据输入3.4.2字符输入函数(getchar)getchar函数的功能是从键盘输入一个字符。

getchar函数的一般用法为:c=getchar();执行调用时,变量c将得到用户从键盘输入的一个字符值,这里的c可以是字符型或整型变量。3.4数据输入3.4.2字符输入函数(getchar)【例3.14】getchar函数应用举例。程序代码如下:#include"stdio.h"main(){charc;c=getchar(); /*接收用户从键盘上输入的一个字符*/putchar(c); /*输出字符型变量c的值*/}说明:(1)getchar函数只能用于单个字符的输入,且一次只能输入一个字符。(2)getchar函数在使用时,必须在程序的开头加上#include“stdio.h”。(3)getchar函数的功能是从键盘上输入一个字符。运行结果:hh解决本章任务二【例3.16】从键盘输入一个大写字母,要求改用小写字母输出。运行结果:AA,65a,97程序代码:#include<stdio.h>main(){charc1,c2;c1=getchar(); /*输入大写字符*/printf("%c,%d\n",c1,c1);c2=c1+32; /*转变为小写*/printf("%c,%d\n",c2,c2);/*输出*/}3.5顺序结构程序设计举例运行结果:346a=3.00,b=4.00,c=6.00area=5.333【例3.17】输入三角形的三边长,求三角形面积。程序分析:为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为:程序框图如图所示:程序代码:#include<stdio.h>#include<math.h>main(){floata,b,c,s,area; scanf("%f%f%f",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c); printf("area=%8.3f\n",area);}习题1.填空题(1)结构化程序设计的3种基本结构是顺序结构、分支结构、循环结构。(2)以下程序的输出结果是__261_______。main(){inta=177;printf("%o\n",a);}(3)以下程序的输出结果是_____16_______。main(){inta=0;a+=(a=8);printf("%d\n",a);}

温馨提示

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

评论

0/150

提交评论