C语言第3-4章 顺序结构_第1页
C语言第3-4章 顺序结构_第2页
C语言第3-4章 顺序结构_第3页
C语言第3-4章 顺序结构_第4页
C语言第3-4章 顺序结构_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

第3章结构程序设计1结构化程序设计(1)一.程序设计方法学

1.程序设计方法学是以程序设计方法为研究对象的学科。

2.它是针对某一领域或某一领域的特定一类问题所用的一整套特定程序设计方法所构成的体系。如结构化程序设计方法学、逻辑式程序设计方法学、函数式程序设计方法学和面向对象程序设计方法学等。2结构化程序设计(2)二.结构化程序设计是一种特定的程序设计方法学,它是一种结构性的编程方法。结构性反映如下:

1.编程过程采用的是“自顶向下、逐步求精”的方法;

2.按模块组装的方法编程,即将所需程序编制成只含顺序结构、选择结构及循环结构,其中每一个结构只容许一个入口和一个出口。

3.为实现所编程序的单入口和单出口,采用三种基本控制结构。3结构化程序设计(3)三.结构化程序设计的三种基本控制结构顺序结构AB选择结构expABTF循环结构expATF4结构化程序设计(4)四.结构化程序设计的优点

1.每一步只优先处理当前最需要细化的部分,其余部分推迟到适当的时机再考虑。先后有序,主次分明;

2.易于验证程序的正确性;

3.“结构化”保证程序的清晰易读,“逐步细化”实现程序的正确可靠。5结构化程序设计(5)五.逐步细化的实现步骤

1.由粗到细对程序进行逐步细化;

2.在细化程序的过程中,同时对数据的描述细化;

3.每一步细化均使用相同的结构化语言,最后一步一般直接用伪代码来描述,以便编码时直接译为源程序。6结构化程序设计(6)例:在一组数中找出其中最大的数问题求解逐步细化的过程求解步骤细化第二步结构化语言描述1输入一组数;1输入一个数组;1输入一个数组;2找出其中的最大数;2.1任取一数,假定它就是最大数;2.2将该数与其余各数逐一比较;2.3若发现任何数大于假设的最大数,即取而代之;2.1令”最大数”=数组的第一个元素;2.2从第二个元素至最后一个元素做循环;2.3如果新元素>“最大数”则“最大数”=新元素;3输出最大数3输出最大数3输出“最大数”。7程序流程图(PFD)例1求1-100的累加和

s累加和

n初值

N否(假)

Y是(真)s=1;n=1n<=100?n=n+1s=s+n显示s结束NY开始主要工具(1)89主要工具(2)盒图

(N-S图)1973年,Nassi

和Shneiderman

发表了“结构化程序的流程图技术”一文,提出了这种新方法,其特点是结构紧凑,占用篇幅小。使用符号如下:ABPFTABPFTAwhilePdoAdo-untilPAP=1=2…=nA1A2…An顺序型选择型(1)选择型(2)当型循环直到型循环多分支选择型A调用子程序10第4章顺序程序设计11C语句概述C语言的语句概述:C程序对数据的处理是通过“语句”的执行来实现的。一条语句完成一项操作(或功能)。一个为实现特定目的的程序应包含若干条语句。

12表达式语句(表达式;)简单语句函数调用语句(函数名(参数表);空语句(;)

C语言数据操作复合语句({一条或多条语句})语句条件语句(if语句,switch语句)结构化语句while语句循环语句do_while语句

for语句流程控制语句break语句限定转向语句continue语句非结构化语句return语句非限定转向语句(goto语句)C语言的语句分类:第三章3.1C语句概述13简单语句1.表达式语句由表达式组成的语句称为表达式语句语句格式:表达式;分号(;)是语句结束的标志功能:计算表达式或改变变量的值。分类:运算符表达式语句赋值语句

14运算符表达式语句运算符表达式后跟一个分号组成例:5;i++;语句的功能是,变量i的值增1。a=3,b=a+2,c=a+1;/*由三个赋值语句组成的逗号表达式语句。*/(1)a+b; /*算术表达式语句,计算a与b之和。*/15赋值语句赋值表达式后跟一个分号组成(2)例:x=y+z;/*计算y+z的和并赋值给变量x。*/x=2;y=3;

162.函数调用语句由函数调用表达式后跟一个分号组成格式:函数名(参数列表);分类:标准库函数用户定义函数标准库函数调用原则:(1)要在程序中包含相应的头文件(2)调用的一般形式:函数名(参数列表);17标准函数调用的目的(1)如数学函数,为了得到函数的返回值。这类函数的调用一般出现在表达式中,作为表达式语句的一部分。一般不作为函数调用语句。(2)为了完成某项任务,而不是为了得到返回值。在表达式中调用函数,实际上是转去执行一段预先设计好的程序,求出结果后返回调用点。所以函数的值又叫函数的返回值。调用这类函数时,就直接用函数调用语句。例:scanf("%f",&x);printf("%f",x);18复合语句一对大括号{}包围若干条语句组成。格式:

{[数据说明部分;]

执行语句部分;

}注意:(1)在复合语句中的“内部数据描述语句”中定义的变量,是局部变量,仅在复合语句中有效。(2)复合语句结束的“}”之后,不需要分号。(3)复合语句可以出现在任何数据操作语句可以出现的地方。19例5-1:#include"stdio.h"voidmain(){inta=11,b=21,c=31;

printf("a=%d\tb=%d\tc=%d\n",a,b,c);{intb=22;floatc=3.3;

printf("a=%d\tb=%d\tc=%f\n",a,b,c);a=b;}

printf("a=%d\tb=%d\tc=%d\n",a,b,c);}程序运行结果a=11b=21c=31a=11b=22c=3.300000a=22b=21c=3120空语句空语句就是一个分号。格式:;功能:执行该语句不做任何操作21格式:putchar(c)参数:c为字符常量、变量或表达式功能:把c的值输出到显示器上数据输出C语言无I/O语句,I/O操作由函数实现#include<stdio.h>字符输出函数22/*ch4_1.c*/#include<stdio.h>main(){intc;chara;c=65;a='B';

putchar(c);putchar('\n');putchar(a);}运行结果:AB例23格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据格式输出函数输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%[修饰符]格式字符

,用于指定输出格式普通字符或转义序列:原样输出格式字符除格式字符外的任意字符24d,ix,Xoucse,EfGg%%格式字符:十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+002567.789000567.789%说明 除X、E、G外,其他格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应例

main(){unsignedintu=65535;

printf(”u=%d\n",u);}

输出结果:u=-1例inta=3,b=4;

printf(“%d%d\n”,a,b);

printf(“a=%d,b=%d\n”,a,b);

例inta=3,b=4;

printf(“%d%d\n”,a,b);

printf(“a=%d,b=%d\n”,a,b);输出结果:34a=3,b=41111

11

11

11

11

11

116553525附加格式说明符(修饰符).n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功能m输出数据域宽,数据长度<m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l26例inta=1234;floatf=123.456;charch=‘a’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8.1f,%.2f,%.2e\n”,f,f,f,f);printf(“%3c\n”,ch);运行1234,1234结果:123.456000,123.5,123.46,1.23e+02

a例chara[]=“Hello,world!”printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);运行结果:Hello,world!

Hello,world!

HelloHelloHel

例m.n27例inta=1234;floatf=123.456;staticcharc[]=“Hello,world!”;printf(“%8d,%-8d\n”,a,a);printf(“%10.2f,%-10.1f\n”,f,f);printf(“%10.5s,%-10.3s\n”,c,c);运行结果:1234,1234

123.46,123.5

Hello,Hel例-28格式:getchar()功能:从键盘读一字符例/*ch4_4.c*/#include<stdio.h>main(){intc;

printf("Enteracharacter:");c=getchar();

printf("%c--->hex%x\n",c,c);}运行结果:Enteracharacter:AA--->hex41数据输入字符输入函数29格式输入函数格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);

输入:10

则a=10例scanf(“%x”,&a);

输入:11

则a=1730附加格式说明符(修饰符)l修饰符功能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,跳过,指定输入项读入后不赋给变量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);

输入19991015

则1999yy,10mm,15dd例scanf(“%3d%*4d%f”,&k,&f);

输入12345678765.43

则123k,8765.43f例scanf(“%2d%*3d%2d”,&a,&b);

输入1234567

则12a,67b例scanf(“%3c%2c”,&c1,&c2);

输入abcde

则‘a’c1,‘d’c231输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例scanf(“%d%o%x”,&a,&b,&c);

printf(“a=%d,b=%d,c=%d\n”,a,b,c);

输入123123123

输出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);

输入12:30:45

则12h,30m,45s例scanf(“%d,%d”,&a,&b)

输入3,4

则3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);

输入a=12,b=24,c=3632说明:用“%c”格式符时,空格和转义字符作为有效字符输入如scanf(“%c%c%c”,&c1,&c2,&c3);

若输入abc

则ac1,

c2,bc3输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入如scanf(“%d%c%f”,&a,&b,&c);

若输入1234a123o.26

则1234a,‘a’b,123c33注意事项:scanf()的格式控制字符串中没有转义字符。如scanf(“%d\n”,&a);是错误的。scanf()的格式控制字符串中的普通字符不是用来显示的,而是输入时要求照普通字符输入的。scanf()中参数的第二部分一定是地址列表,不能是表达式。34程序举例/*ch4_12.c*/#include<math.h>#inc

温馨提示

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

评论

0/150

提交评论