第三章顺序结构程序设计

上传人:仙*** 文档编号:157550311 上传时间:2022-09-30 格式:DOC 页数:7 大小:84.50KB
收藏 版权申诉 举报 下载
第三章顺序结构程序设计_第1页
第1页 / 共7页
第三章顺序结构程序设计_第2页
第2页 / 共7页
第三章顺序结构程序设计_第3页
第3页 / 共7页
资源描述:

《第三章顺序结构程序设计》由会员分享,可在线阅读,更多相关《第三章顺序结构程序设计(7页珍藏版)》请在装配图网上搜索。

1、第三章 顺序结构程序设计一、 结构化程序设计:1. 程序是命令的有序集合,命令执行的顺序即程序的结构。2. 在结构化程序设计中,把所有程序的逻辑结构归纳为三种:顺序结构、选择结构和循环结构。3. 结构化程序设计概述: 结构化程序设计的原则:自顶向下逐步细化模块化设计(所谓模块化设计,就是按模块组装的方法编程。把一个待开发的软件分解成若干个小的简单部分,称为模块。)结构化编码(编码俗称编程序)。二、 算法:1. 算法就是一种在有限的步骤内解决问题或完成任务的方法。2. 计算机程序就是告诉计算机如何去解决问题或完成任务的一组详细的、逐步执行的指令 集合。3. 数据时操作的对象,操作的目的是对数据进

2、行加工处理,以得到期望的结果。4. 算法的流程成图表示法:起止框: 输入/输出操作: 判断框: 流程线:5. 基本算法: 累加,累乘,求最大或最小值。 穷举:穷举就是一种重复型算法。它的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。 迭代:是一个不断用新值取代变量的旧值,由旧值递推出变量的新值过程。 递归:算法自我调用的过程,一种算法是否称为递归,关键取决于该算法定义中是否有它本身。 排序:是在待排序记录中按照一定次序排列数据的过程。 查找:是在数据列表中确定目标所在位置的过程。(顺序查找:可在任何列表中查找,对半查找:要求列表是有序的)三、 C语句概述:1.

3、 表达式语句:在各种表达式后加一个分号构成的语句。2. 函数调用语句:在函数调用的一半形式后加一个分号构成的语句,其作用是完成特定的功能。一般形式:函数名(实参表);3. 空语句:只有一个分号的语句称为空语句,其形式如: ; 空语句在语法上占据一个语句的位置,但是它不具备任何操作功能。4. 复合语句:用一对花括号“”将多条语句括起来构成的语句体。形式语句组5. 控制语句:C程序设计中用来构成分支结构和循环结构并完成一定控制功能的语句。l 条件语句:if else。l 多分支选择语句:switchl 当型循环语句:while,forl 直到循环型循环语句:dowhilel 终止本次循环语句:co

4、ntinuel 终止整个循环或跳出switch语句:breakl 无条件转移语句:gotol 函数返回语句:return四、 输入/输出语句:1. C语言不提供输入/输出语句,它的输入/输出操作是由输入/输出函数调用语句来实现的。2. 常用的标准输入/输出函数有两种:l 用于格式输入/输出的函数(scanf()/printf())。l 用于字符输入/输出的函数(getchar()/putchar())。l 这里所谓的标准输入/输出是指以系统隐含指定的输入/输出设备作为输入/输出设备的,例如:对于微型计算机,是指键盘和显示器。3. 格式化输出函数printf()1) Printf()函数: 调用

5、形式: printf(格式字符串,输出项表); 功能:按格式字符串中的格式依次输出输出项表中的各输出项表中的各输出项。 说明:l 字符串是用双引号括起来的一串字符。l 格式字符串用来说明输出项表中各输出项的输出格式。l 输出项表列出要输出的项,各输出项之间要用逗号分开。l 若没有输出项表,且格式字符串不含格式信息,则输出的是格式字符串本身。2) 格式字符串:l 非格式字符:非格式字符(或称普通字符)一律按原样输出。l 格式字符:格式字符的形式:%附加格式说明符格式符格式符功能d输出带符号的十进制整数o输出无符号的八进制整数x输出无符号的十六进制整数u输出无符号的十进制整数c输出单个字符s输出一

6、串字符(若字符串长度超过指定的精度则自动突破,不会截断字符串)f输出实数(默认6位小数)(单精度和双精度)e以指数形式输出实数(尾数1位整数,默认6位小数,指数至多3位)g选择f与e格式中输出宽度较小的格式输出,且不输出无意义的0p输出变量的内存地址%也就是%形式,输出一个% 附加格式说明符功能m(m为正整数)数据输出宽度为m,如数据宽度超过m,按实际输出.n(n为正整数)对实数,n是输出的小数位数,对字符串,n表示输出前n个字符lld输出long型数据,If和le输出double型数据h用于格式符d、o、u、x或X,表示对应的输出项是短整型-数据左对齐输出,无-是默认右对齐输出。3) 每个格

7、式说明都必须用“%”开头,以一个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左左对齐符号“”、前导零符号“0”等。4) 注意:l %o不带先导0,例如十进制数15用%o输出为17,%#o加先导0,例如十进制数15用%#o输出为017l 同理:%#x或%#X输出带先导0x或0X的十六进制数。l E或e:以指数形式输出浮点数(单精度和双精度),格式是:m.ddddddexxx。小数位数(d的个数)由输出精度决定,隐含的精度是6.若指定的精度为0,则包括小数点在内的小数部分都不输出。Xxx为指数,保持3位,不足补0.若指数为0,输出指数是0005) 长度修饰符: 在%和格式字符之间,可以

8、加入长度修饰符,以保证数据输出格式的正确和对齐。对于长整形即%ld;对于短整型数可以加h,即%hd。4、 输出数据所占的宽度说明: 当使用%d,%c,%f的格式说明时,输出数据所占的宽度(域宽)由系统决定,通常按照数据本身的实际宽度输出,前后不加空格,并采用右对齐的形式。也可以用以下三种方法人为控制:1) 在%和格式字符之间插入一个整数常数来指定输出的宽度n(%4d,n代表整数4)。如果指定的宽度n不够,输出时将会自动突破,保证数据完整输出。如果指定的宽度n超过输出数据的实际宽度,输出时将会右对齐,左边补以空格,达到指定的宽度。2) 对于float和double类型的实数,可以用“n1,n2”

9、的形式来指定输出宽度(n1和n2分别代表一个正常数),其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,n2也称为精度。(%12.4f,n1代表整数12,n2代表整数4)。3) 对于f、e、E,当输出数据的小数位多于n2位时,截取右边多于的小数,并对截取部分的第一位小数做四舍五入处理;当输出数据的小数位少于n2时,在小数的最右边补0,使得输出数据的小数部分宽度为n2.若给出的总宽度n1小于n2加上整数位数和小数点(e或E格式还要加上指数的5位),则自动突破n1的限制;反之,数字右对齐,左边补空格。4) 也可以用“.n2”格式(%.6f),不指定总宽度,仅指定小数部分的输出

10、位数,由系统自动突破,按照实际宽度输出、如果指定“n1.0”或“.0”格式,则不输出小数点和小数部分。5) 对于g或G,宽度用来指定输出的有效数字位数。若宽度超过数字的有效数字位数,则左边自动补0;若宽度不足,则自动突破。不指定宽度,将自动按照6位有效数字输出,截取右边多余的小数,并对截取部分的第一位小数做四舍五入处理。6) 对于整型数,若输出格式是“0n1”或“.n2”格式,(%05d或%.5d),则如果指定的宽度超过输出数据的实际宽度,输出时将会右对齐,左边补0、7) 对于float和double类型的实数,若用“0n1.n2”格式输出(%012.4f),如果给出的总宽度n1大于n2加上整

11、数位数和小数点(e或E格式还要加上指数的4位),则数字右对齐,左边补0。8) 对于字符串,格式“n1”指定字符串的输出宽度,若n1小于字符串的实际长度,则自动突破,输出整个字符串;若n1大于字符串的实际长度,则右对齐,左边补空格。若用“.n2”格式指定字符串的输出宽度,则若n2小于字符串的实际长度,将只输出字符串的前n2个字符。9) 输出数据左对齐:由于输出数据都隐含右对齐,如果想左对齐,可以在格式控制中的“%”和宽度之间加一个“”号来实现。10) 使输出数据总带+号或号:通常输出的数据如果是负数,前面有符号“”,但正数前面的“+”一般都省略了。如果要每一个数前面都带正负号,可以在“%”和格式

12、字符间加一个“+”号来实现。11) 符合语句:一个符合语句在语法上视为一条语句,在一对花括号内的语句数量不限。5、 使用printf函数时的注意事项:1) Printf的输出格式为自由格式,是否在两个数之间留逗号、空格或回车、完全取决于格 式控制,如果不注意,很容易造成数字连在一起,使得输出结果没有意义。例如:若K=1234,f=123.456,则printf(%d%d%fn,k,k,f);语句的输出结果是:12341234123.456,无法分辨其中的数字含义。而改用printf(%d %d %fn,k,k,f);其输出结果是:1234 1234 123.456,看起来就一目了然了。2) 若

13、格式说明与输出项的类型不一一对应匹配,则不能正确输出,而且编译时不会报错。若格式说明个数少于输出项个数,则多余的输出项不予输出;若格式说明个数多余输出项个数。则将出现一些毫无意义的数字乱码。3) Printf函数有返回值,返回值是本次调用输出字符的个数,包括回车等控制符。4) 尽量不要在输出语句中改变输出变量的值,因为可能会造成输出结果的不确定性。例如:int k=8,printf(%d,%dn,k,+k);输出结果不是8,9而是9,9。这是因为调用函数printf时,其参数是从右至左进行处理的,将先进行+k运算。5) 输出数据时的域宽可以改变。若变量m、n、i和f都已正确定义并赋值,则语句p

14、rintf(%*d,m,i);将按照m指定的域宽输出i的值,并不输出m的值。而语句printf(%*.*f,m,n,f);将按照m和n指定的域宽输出浮点型变量f的值,并不输出m、n的值。6、 数据输入:l scanf函数的一般调用形式如下: scanf(格式字符串,输入项地址表)l 在scanf函数调用之后加上“;”,则构成输入语句。l 功能:按格式字符串中规定的格式,在键盘上输入各输入项的数据,并依次赋给各输入项。l 说明:格式字符串与printf()函数基本相同,但需要特别注意的是:输入项以其地址的形式出现,而不是输入项的名称。如:scanf(%d,%f,&a,&b);其中&a、&b分别表

15、示变量a,b的地址,&是取地址运算符(优先级及结合性与+相同)。l 格式控制的主要作用是指定输入时的数据转换格式,即格式转换说明。输入项之间用逗号隔开。l 用于输入的格式字符及其功能: 格式字符说 明c输入一个字符d输入带符号的十进制整型数i输入整型数,整型数可以是带先导0的八进制数,也可以是带先导0x(或0X)的十六进制数o以八进制格式输入整型数,可以带先导0,也可以不带x以十六进制格式输入整型数,可以带先导0X或0x,也可以不带u以无符号是禁止行使输入整型数f(lf)以带小数点的数学形式或指数形式输入浮点数(单精度数用f,双精度数用lf)e(le)同上s输入一个字符串,直到遇到“0”。若字

16、符串长度超过指定的精度则自动突破,不会截断字符串l 说明:1) 若格式说明个数少于输入项个数,scanf函数结束输入,则多余的输入项将无法得到正确的输入值;若格式转换说明个数多于输入个数,scanf函数也结束输入,多余的数据作废,不会作为下一个输入语句的数据。2) 在VC 6.0环境下,输入short型整数,格式控制要求用%hd。要输入double型数据,格式控制必须用%lf(或%le)。否则,数据不能正确输入。3) 在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度。4) 由于输入是一个字符流,scanf从这个流中按照格式控制指定的格式解析出

17、相应数据,送到指定地址的变量中。因此当输入的数据少于输入项时,运行程序将等待输入,直到满足要求为止。当输入的数据多于输入项时,多余的数据在输入流中没有作废,而是等待下一个输入操作语句继续从此输入流中读取数据。5) Scanf函数有返回值,其值就是本次scanf调用正确输入的数据项的个数。7、 通过scanf函数从键盘输入数据l 当用scanf函数从键盘输入数据时,每行数据在未按下回车键之前,可以任意修改。但按下回车键后,scanf函数即接受了这一行数据,不能再回去修改。l 输入数值数据:在输入整数或实数这类数值型数据时,输入的数据之间必须用空格、回车符、制表符(tab键)等间隔符隔开,间隔符个

18、数不限,即使在格式说明中人为指定了输入宽度,也可以用此方式输入。 例如:若k为int型变量,a为float型变量,y为double型变量,有以下输入语句: scanf(%d%f%le,&k,&a,&y); 若要给K赋值10,a赋值12.3,y赋值124567.89,输入格式可以(输入的第一个数据之前可有任意空格): 10 12.3 1234567.89 回车 也可以是 10回车 12.3回车 1234567.89回车l 指定输入数据所占的宽度:可以在格式字符前加入一个正整数指定输入数据所占的宽度。例如:scanf(%3d%5f%5le,&k,&a,&y);若在键盘上从第一列开始输入:12345

19、6.789.12用printf(%d %f %fn,k,a,y);打印的结果是:123 456.700000 89.120000 故:数字之间不需要间隔符,若插入了间隔符,系统也将按指定的宽度来读取数据,从而会引起输入混乱。除非数字是粘连在一起,否则不提倡指定输入数据所占的宽度。l 跳过某个输入数据:可以在%和格式字符之间加入“*”号,作用是跳过对应的输入数据。例如: int x,y,z; scanf(%d%*d%d%d,&x,&y,&z); printf(%d %d %dn,x,y,z); 若是输入: 12 34 56 78 则输出是12 56 78l 在格式控制字符串中插入其他字符:sca

20、nf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想要在屏幕上输出提示信息,应该首先使用printf函数输出。例如: Int x,y,z; scanf(please input x,y,z: %d%d%d,&x,&y,&z);屏幕上不会输出现please input x,y,z:而是要求输入数据时按照一一对应的位置原样输入这些字符,必须从第一列起以下面的形式进行输入: please input x,y,z: 12 34 56包括“please input x,y,z:”中字符的大小写、字符间的间隔等必须与scanf中的完全一致。这些字符又被称为通配符。

21、 但如果使用以下的形式:Int x,y,z;printf(please input x,y,z:);scanf(%d%d%d,&x,&y,&z);运行时,由于printf语句的输出,屏幕上将出现提示,只需按常规输入下面的数据即可:12 34 56如果在上面的scanf函数中,在每个格式说明之间加一个逗号作为通配符:Scanf(%d,%d,%d,&x,&y,&z);则输入数据时,必须在前面两个数据后面紧跟一个逗号,以便与格式控制中的逗号一一匹配,否则就不能正确读入数据。例如,输入: 12,34,56 能正确读入。输入:12, 34 ,56也能正确读入。因为空格是间隔符,将全部被忽略掉。但输入:1

22、2 ,34 ,56将不能正确读入,因为逗号没有紧跟在输入数据后面。专题(字符型数据):1. 单引号中的空格符#(此处用#来代表一个空格)也是一个字符常量,但不能写成(两个连续的单引号)。2. 转义字符:转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ANCII字符,这些字符常量也必须括在一对单引号。3. 反斜线后的八进制数可以不用0开头。如:101。4. 反斜线后的十六进制只可由小写字母x开头,不允许用大写字母X,也不能用0x开头。5. ABCn、Z是字符串常量,前者占5个字节、后者占两个字节的存储空间,其中一个字节用来存放最后的o。两个连续的双

23、引号: 也是一个字符串常量,称为“空串”,但要占一个字节的存储空间来存放0。6. 可对字符量进行的运算:l 字符量可参与任何整数运算:BA=6665=1l 可以通过算数运算把数字字符转换为整数值或把一位整数转换成数字字符。l 字符也可以进行关系运算。7、 字符的输入和输出:l Scanf(%c%c%c,&a,&b,&c);当使用的格式说明符中%c一个紧接一个时,在输入字符时,字符之间不应有间隔符,这时空格、回车符和横向跳格符(Tab键)都将作为字符读入。l 可以在格式说明符中加入空格:Scanf(%c %c %c,&a,&b,&c)输入的形式可以和不加空格的Scanf(%c%c%c,&a,&b

24、,&c);相同,这时空格、回车符和横向跳格符(Tab键)都将认作间隔符而不被读入。若要给a、b、c分别输入字母A、B、C,可以用以下两种形式之一: ABC回车 或A#B#Cl 可以在格式字符前加一个整数,用来指定输入数据所占宽度。这时在输入字符数据时,应严格按指定的宽度输入数据,且取指定宽度中的第一个字符作为输入数据。例如: char c1,c2; scanf(%4c%4c,&c1,&c2); 输入的形式A#B#回车当从键盘输入字符,并且在格式说明串中未人为指定宽度时,输入的字符(空格符,回车符和横向跳格符)将按顺序赋予各输入项。l 当交叉输入数值数据和字符数据时,即在输入项列表中交替出现字符

25、变量和数字变量,由于它们从终端读取数据的方式不同,如果用户不加注意,就很容易产生错误的输入结果。例如: int a1,a2; char c1,c2; scanf(%d%c%d%c,&a1,&c1,&a2,&c2); 必须用以下形式输入数据: 10A#20B回车如果用以下形式输入数据,也就是说在10和A之间加入空格,在20和B之间加入空格: 10#A#20#B回车则将把10赋予a1,把空格赋予c1,接着a2将遇到字母A,因为类型不匹配,scanf函数将结束执行,程序照常运行并不报错,但使得a2和c2不能从终端接受数据。注意字母A未被读入,而是留个下一个输入操作去读。8、 字符输出函数: putchar(),作用是向标准输出设备输出一个字符。例如putchar(c); c可以是字符型变量或整型变量。 字符输出函数不仅可以输出一般字符,也可以输出控制字符,如:putchar(n),输出一个换行符。9、 字符输入函数: getchar() 此函数的作用是从标准输入设备输入一个字符,该函数没有参数,其函数值就是从输入设备得到的字符。一般形式:getchar(); getchar()函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。如putchar(getchar();7

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!