《C语言程序设计基础》课件第3章_第1页
《C语言程序设计基础》课件第3章_第2页
《C语言程序设计基础》课件第3章_第3页
《C语言程序设计基础》课件第3章_第4页
《C语言程序设计基础》课件第3章_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第3章

顺序结构实现语句——顺序结构

程序设计3.1简单的顺序结构语句3.2数据的输入/输出3.3顺序结构程序设计实训任务五

熟悉格式的输出和输入实训任务六

学习顺序结构程序设计的方法何谓顺序结构?计算机怎样执行顺序结构程序?

顺序处理是人们处理问题最基本的思维方式,也是程序的基本结构。所谓顺序处理,就是按照一定的逻辑或时间顺序一步一步地执行,程序的顺序结构由顺序执行语句组成,如图3.1所示。

顺序结构是一种最简单的程序结构。顺序结构语句是无条件被执行的语句,每一个程序必包含顺序结构语句。从程序的功能上看,顺序结构语句一般包括提供基本数据的语句、简单数据处理语句和数据输出语句。本章从最简单程序设计出发,介绍一些顺序结构实现语句与程序设计方法。

图3.1顺序结构 3.1简单的顺序结构语句

1.变量定义语句

在第2章已经介绍了变量的作用、意义以及变量的定义语句。变量定义语句的一般格式为

类型符

变量名;

从程序结构上看,变量定义语句基本上是一个程序必有的语句。因为程序中的基本数据都是通过变量来存储的,所以成为基本的数据对象。变量定义语句一般出现在程序的

开始。

2.表达式语句

一个表达式末尾加上“;”就构成表达式语句。从C语法规定来讲,任何一个表达式加上“;”都可以构成C语句。从功能作用上讲,有些表达式能构成有意义的语句,而有些表达式构成语句是没有意义的。

例如:

++i;

i--;

是两个有意义的表达式语句。而

x+y;

是合法的C语句,作用是完成两个变量值的求和,但求和的结果无法保存,这样求和就没有意义了。由表达式构成有意义的表达式语句,最典型的是由一个赋值表达式构成赋值语句。赋值表达式只能出现在语句中,表示语句中的一个操作。变成赋值语句就是程序中一个具有独立功能的语句了。赋值语句是程序中最常出现的语句,一般用于给变量提供值,或将处理结果存放在变量中。例如:

a=3;

u=x+y;

第1个赋值语句是给变量提供值。第2个赋值语句是将两变量值相加的和存放在一个变量中。

3.函数调用语句与返回函数值语句

C语言中的函数是实现相对独立功能模块的基本结构,相当于其他高级语言中的子程序或过程。函数调用语句用来引用函数的功能。函数调用语句的一般格式为

函数名(实参列表);

函数调用的功能是将程序执行转到被调用函数处执行。通过实参列表向被调用函数传送所需要的初始数据。例如:

printf("TheisaCstatement.");

这是一个输出库函数的调用语句,传递的参数是一个字符串常量,实现的功能是输出所传递的字符串。

C语言中的函数有两类。一类是将一些常用功能编写成函数,由系统提供,用户只要通过规定的格式及参数,通过函数调用语句即可使用其功能。这类函数称为库函数。常用的库函数及其调用方法见附录D。另一类是用户自定义函数,有关自定义函数的内容将在第7章介绍。

如果调用一个函数要求有一个返回值,要通过返回语句来实现。返回语句的一般格式为

return(返回数据);

返回语句的功能是将括号中的数据从被调函数带回主调函数。括号中的“返回数据”一般是一个变量或表达式。返回语句一般用在函数体的末尾。

main()函数无返回值,但C99提倡在函数末尾加“return0;”语句,表示函数正常返回。如果不加,则编译系统自动添加,程序也能编译运行。

4.空语句

空语句是指程序语句行只有“;”。“;”是C语句的唯一标识,只要出现一个“;”就认为是一条语句。因分号前无内容,所以称为空语句。从形式上看,空语句好像没有什么意义,但还是有其用途的。如用程序实现一段延时,延时中不要求做什么,只耗费一段时间,就可以采用空语句的循环来实现。

5.复合语句

C语言中,把用{}界定的一个语句集合称为复合语句。例如:

{

z=x+y;

t=z/100;

printf("%f",t);

}

这是一个复合语句。复合语句中包含若干个C语句,也可能包含非顺序语句,但作为一个语句看,它仍属于顺序语句。

6.无条件转向语句

无条件转向语句的一般形式为

goto目标语句标号;

执行该语句,则程序执行流转向目标语句标号处执行。

注意:结构化程序设计不提倡使用无条件转向语句。

3.2数据的输入/输出

3.2.1数据格式输出函数(printf)

1.调用格式

printf函数调用的一般格式为

printf("格式控制字符串",输出数据列表);

其中,printf是库函数名,作为系统使用的关键字,调用语句必须严格使用此函数名,否则不能实现调用。

格式控制字符串是用双撇号界定的一个字符序列,用于控制输出数据的形式和数据的格式。格式控制字符串一般包含格式字符、非格式字符和转义字符三部分。

(1)格式字符用于控制所对应输出对象的数据形式。C语言中常用的格式字符见表3.1。格式字符必须以“%”开始,如%d、%i、%u、%o、%x、%X、%c、%s、%f、%e、%E、%g、%G。

表3.1常用的格式字符

(2)非格式字符指需要照原样输出的字符,如“printf("helloworld!");”,则输出“helloworld!”字符串。

(3)转义字符用于控制输出数据的格式。例如:“\n”表示回车换行;“\t”表示输出跳到下一个制表位。其他转义字符见表2.1。

输出数据列表是用逗号分隔的变量、常量、表达式、函数等,每个输出项依次与格式控制符匹配。分析:

(1)格式控制字符串于开始使用\t,使数据从行首的第2个制表位置输出,即行首空8个字符位。第1个printf函数的控制符使用\n\n,使两行数据之间有一个空行。其他非格式字符按出现顺序原样输出。

(2)定义a为无符号整型变量,分别以%d、%o、%X、%u格式输出,按照数据实际值分别以十进制、八进制、十六进制、无符号数的形式输出。

(3)定义b为带符号整型变量,在计算机内部以二进制补码形式存储,存储结构如图3.2所示。以%d控制b以十进制整数值形式输出,即把内部的二进制补码转换成二进制原码,再转换成十进制数值输出;以%o、%X、%u分别控制b以八进制、十六进制和十进制无符号数形式输出,也就是把机内存储补码的符号位作数值位,分别转换为八进制、十六进制和十进制数输出。

图3.2变量b值的原码与补码分析:从运行结果可以看出,%f控制符号使实型数据的整数部分按实际数位输出,小数部分采用系统默认的6位有效数字,第6位小数位是系统对小数第7位按四舍五入处理后的数值。%e、%E控制符输出的实数形式是一样的,仅是底数的表示字母不同而已,小数部分采用规范化形式,默认6位有效数字,指数部分符号占一位,指数占3位。%g、%G控制符输出的实数形式也是一样的,以最小宽度输出实型数据。

分析:

%s控制输出对象以字符串的形式输出,要求输出对象是一个字符串,按字符串的实际长度输出。

%c控制输出对象以字符的形式输出,输出对象可以是字符型数据,也可以是整型数据。输出对象是整型数据,则看作字符的ASCII码,取值范围是0~255。

从本例又可以看出,字符型数据与整型数据可以通用。字符型数据可以用%d格式输出,则输出的是字符的ASCII码值。整型数据(0~255)可以用%c格式输出,则输出的是十进制整数ASCII码值所表示的字符。

2.附加说明符的使用

格式字符前可以插入附加说明符或加上一个数字,控制宽度以及小数位数,以说明输出数据的类型、形式、长度、小数位数等。常用的附加说明符见表3.2。

表3.2常用的附加说明符在格式字符前插入附加说明符,能进一步控制输出数据的格式,可更好地满足用户的需求。

下面对表3.1中所列的格式字符作进一步说明。

(1) %d表示按十进制整型数据的实际长度输出,对long型数据,应当用%ld或%Ld格式。还可以在%与格式字符之间插入一个数字,来控制数据的输出长度,如%md、%mld、%mLd、%-md、%-mld、%-mLd等。

分析:从程序的执行结果可以看出,在格式控制符中插入数字“10”,使输出数据占10列宽度。不加对齐格式符(或加“+”),数据在输出域内右对齐。加对齐格式符“-”,数据在输出域内左对齐。

(2) %f格式使实数的整数部分全部输出,小数部分输出6位有效数字。还可以在%与f之间插入“m.n”,来控制数据的输出长度及小数点位数。其中,m表示数据所占列数(包括符号和小数点),n表示小数部分所占位数(不包括小数点),如果数据长度小于m,则左补空格。还可以加对齐方式字符。也可以只规定数据宽度m,或只规定小数位数.n。例如%m.nf、%-m.nf、%mf、%-mf、%.nf、%-.nf等。

分析:

%f控制整数部分按实际位数输出,系统默认输出6位小数,与实际小数不一样,是由系统在内存中的存储误差引起的。

%10.2f控制输出数据占10个字符位、两位小数,并按默认方式右对齐,规定的两位小数系统按第3位小数四舍五入处理后输出,因实际的数据位数小于设定的数据宽度,所以左补空格。

%-10.2f控制的输出数据,其宽度、小数点位数同%10.2f,但要求左对齐,因实际的数据位数小于设定的数据宽度,所以右补空格。

%10f只设定输出数据的宽度,因整数和小数点占4个字符位,剩下6位则作小数的输出位数。

%.2f只设定输出小数部分的宽度,整数部分则按实际数位输出。

(3) %e或%E格式下,系统默认6位小数,指数部分占5位(如e+003),“e”占一位,指数符号占一位,指数占3位,数值按标准化指数输出。可以在%与e(E)之间插入“m.n”,来控制数据的输出长度及小数点位数。其作用及使用方式同%f。也可以加对齐方式字符。

分析:

%e按系统默认的指数形式输出。

%10.2e控制输出数据占10个字符位,小数部分采用规范化形式,占2位,指数部分采用系统默认形式;按设定格式,数据有9个字符位,所以左补一个空格。

%-10.2e同%10.2e,只要求左对齐。

%10e只设定输出数据的宽度,其他格式采用系统默认形式。

%.2e只设定输出数据的小数点位数,其他格式采用系统默认形式。

(4) %s格式下,输出字符串的实际字符。可以在%与s之间插入“m.n”,其作用是:输出的字符串占m列,但只截取字符串中左端n个字符输出。如字符串本身长度大于m,即突破m的限制,将字符串全部输出。若串长小于m,则左补空格。也可以插入对齐方式字符。例如,%m.ns、%-m.ns、%ms、%-ms。

分析:

%s控制字符串按实际长度输出。

%15s控制字符串占15个字符位,默认右对齐;因字符串的实际长度小于15,所以左补空格。

%15.3s控制字符串占15个字符位,只截取前3个字符输出,默认右对齐,左补12个空格。

%-15.3s同%15.3s,要求左对齐,右补12个空格。3.2.2数据格式输入函数(scanf)

1.调用格式

scanf函数调用的一般格式为

scanf("格式控制符",地址列表);

scanf是库函数名,作为系统使用的关键字,调用语句必须严格使用此函数名,否则不能实现调用。

格式控制字符串是用双撇号界定的一个字符序列,用于控制输入数据的形式和格式。格式控制字符串一般包含格式字符、非格式字符两部分。

(1)格式字符用于指定输入数据的形式。常用的格式字符见表3.3。格式字符以“%”开始,在%和格式字符之间也可以插入附加说明符。常用的附加说明符见表3.4。表3.3常用的格式符表3.4常用的附加说明符

(2)在格式控制字符串中出现非格式字符时,在输入数据时要照样输入。

地址列表是取输入数据存放变量的地址。

例如:

scanf("%d%d%d",&a,&b,&c);

2.调用执行与数据输入

调用执行scanf函数时,光标停留在一个位置闪烁,等待输入数据。用户应按格式控制字符串中设定的格式和地址列表中变量的顺序依次输入数据。如果格式控制字符串中没有插入非格式字符,每输入一个数据,应按结束键,计算机每取得一个数据就赋给对应变量,直到地址列表中所有变量都取得数据,则scanf函数调用结束。结束一个数据的按键有:“回车键”或“空格间”或“tab键”。如果格式控制字符串中插入非格式字符,作为数据的间隔符号,则每输入一个数据应输入设定的间隔符号,输入完毕则按“回车键”。如执行“scanf("%d,%d,%d",&a,&b,&c);”时,则应按如下形式输入:

12,34,56↙

即格式控制字符串中插入的非格式字符必须照原样输入。

分析:3个scanf函数调用语句前都用了一个printf,输出一个字符串信息,提示输入数据,这是为了提高界面的“友好”性;输入数据的类型要与格式控制符对应;非格式字符要照原样输入;系统按输入数据的顺序依次赋给scanf中的变量。

3.关于scanf函数调用的几点说明

(1)可以指定输入数据的长度,系统按指定长度截取数据,赋给对应变量。例如:

scanf("%3d%3d",&a,&b);

输入:

123456789↙

系统将123赋给a,456赋给b。

(2)插入“*”附加说明符,表示系统给变量赋值要跳过一个数据。例如:

scanf("%d%*3d%2d",&a,&b);

输入:

12└┘345└┘67↙

系统将12赋给a,跳过345,将67赋给b。

(3)格式控制字符串中若包含非格式字符,这些字符要按出现顺序照原样输入。例如:

scanf("%d:%d:%d",&h,&m,&s);

应输入:

12:23:38↙3.2.3字符输出函数(putchar)

C语言库函数中提供了一个用于字符输出的函数。其调用的一般形式为

putchar(ch);

其中,ch是输出的字符型数据对象,可以是字符常量、字符变量、整型常量和整型变量。

分析:putchar调用一次只输出一个字符,连续调用4次则输出4个字符,且在同一行,最后一次putchar调用输出 '\n',实际是控制换行。

3.2.4字符输入函数(getchar)

C语言库函数中提供了一个用于字符输入的函数。其调用的一般形式为

getchar();

调用执行该函数时,光标停留在一个位置闪烁,等待输入字符,从键盘上输入一字符后按回车键,则将得到的字符作为返回值。

3.3顺序结构程序设计

简单顺序结构程序设计应考虑哪些问题?

顺序结构程序是最简单的程序,设计时,只要把解决问题的步骤按顺序列出,再写出实现每一步的C语句。一般来说,一个程序要包含存放数据的变量定义、数据处理和输出结果三个部分。

解决问题的步骤称为算法。编程之前,算法应用流程图描述出来。流程图是按约定的图形符号绘制的。

例3.11输入三角形的三边长,求三角形面积。

编程思路:已知三边,求解三角形面积的数学公式为

算法可用流程图表示,如图3.3所示。C语言库函数中提供了一个求平方根的函数sqrt(floatx)。程序中要调用输入/输出函数和数学公式计算库函数,所以在程序开头应使用预处理命令将stdio.h和math.h头文件包含进来。

图3.3例3.11流程图分析:根据程序中处理的数据,定义实型变量a、b、c,用于存放三角形三边数据,定义实型变量s、area,用于存放中间计算结果和三角形面积。程序按顺序先输入三角形三边数据,计算三边之和的二分之一,按公式计算面积,最后将结果输出。

例3.12从键盘

温馨提示

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

评论

0/150

提交评论