c语言程序设计第4章课件.ppt

上传人:本田雅阁 文档编号:3479584 上传时间:2019-09-01 格式:PPT 页数:51 大小:324.52KB
返回 下载 相关 举报
c语言程序设计第4章课件.ppt_第1页
第1页 / 共51页
c语言程序设计第4章课件.ppt_第2页
第2页 / 共51页
c语言程序设计第4章课件.ppt_第3页
第3页 / 共51页
c语言程序设计第4章课件.ppt_第4页
第4页 / 共51页
c语言程序设计第4章课件.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《c语言程序设计第4章课件.ppt》由会员分享,可在线阅读,更多相关《c语言程序设计第4章课件.ppt(51页珍藏版)》请在三一文库上搜索。

1、第4章 顺序结构程序设计,池州学院 计算机中心,C 语言程序设计,2019/9/1,2,程序的三种基本结构,顺序结构,N-S结构图,流程图,选择结构,2019/9/1,3,程序的三种基本结构,循环结构,直到型循环,当型循环,N-S结构图,流程图,2019/9/1,4,本章主要内容:,C语句概述 赋值语句 数据输入输出的概念及在C语言中的实现 字符数据的输入输出 格式输入输出 顺序结构程序设计举例,2019/9/1,5,4.1 C语句概述,程序包括数据描述(由声明部分来实现)和数据操作(由语句来实现)。数据描述包括定义数据结构和在需要时对数据赋予初值。数据操作的任务是对已提供的数据进行加工。 主

2、要内容: 说明性语句 表达式语句 控制语句 空语句 复合语句 函数调用语句,2019/9/1,6,1、控制语句,控制语句包括以下三类: (1)选择分支控制语句 if ( ) else (条件语句) switch ( ) (多分支选择结构) (2)循环控制语句 for ( ) (循环语句) while ( ) (循环语句) do while ( ) (循环语句) (3)其他控制语句 Break (终止执行switch或循环语句) Continue (结束本次循环语句) Goto (转向语句) Return (从函数返回语句),2019/9/1,7,2、 说明性语句,对程序中使用的变量、数组、函数

3、等操作对象进行定义、声明的描述语句 只起说明作用,不产生可执行的机器指令代码。 例如:int a,b; float function( int, int);,C程序由函数组成。函数的格式: 函数名(参数表) 说明部分; 执行部分; ,数据类型说明语句,可执行语句,2019/9/1,8,表达式语句由表达式加一个分号构成。 x=3; y=y+5; x=a-b ,注意: 1、赋值语句(a=3;)有赋值表达式(a=3)构成。 2、 分号是语句必不可少的一部分 3、 单独的一个分号“;” 构成一个空语句 例如: ; (空语句,是最简单的C语句),3、表达式语句,2019/9/1,9,4、空语句,只有一个

4、分号的语句,叫空语句。即它什么也不做。有时用来作流程的转向点(流程从程序其它地方转到此处语句),也可以用来作为循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。,2019/9/1,10,5、 复合语句,用一对花括号“”括起来的若干条语句 花括号中可以是说明语句、表达式语句、控制语句,也可以是复合语句 例如: if (ab) max=a; min=b; for(n=1; n= 100 ) printf(“dn”, p); break; ,2019/9/1,11,5、 复合语句(续),复合语句中如果有说明性语句,应该写在可执行语句的前面,例如: main( ) int a,b; a=b=

5、100; float c=10.23; printf(“%fn“,c); printf(“%d %dn“,a,b); ,要特别注意: 花括号的配对 花括号的位置,C语言学习的难点之一,2019/9/1,12,6、函数调用语句,函数调用语句由一个函数用加一个分号构成,例如: printf(“This is a C satatement.”); 此语句调用输出函数。 注意: C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。,2019/9/1,13,4.2 赋值语句,赋值语句是由赋值表达式加上一个分号构成。 C语言的赋值语句具有其它高级语言的赋值语句的一切特点和功能。但也

6、有和其它高级语言不同的地方,其区别主要为: (1)C语言中的赋值号“”是一个运算符,在其它大多数语言中赋值号不是运算符。 (2)关于赋值表达式与赋值语句的概念,在其它多数高级语言中没有“赋值表达式”这一概念。例如:书71页例题。,2019/9/1,14,4.3数据输入输出的概念及在C语言中的实现,数据输入输出应注意以下几点: (1)所谓的输入输出是以计算机主机为主体而言的。 (2)C语言本身不提供输入输出语句,输入输出是由C函数库中的函数来实现的。 (3)在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。,2019/9/1,15,4.4字符数据的非格式

7、化输入输出,对于字符类型的数据输入/输出,可以通过调用C语言其他的库函数来实现,这些库函数在实现字符型数据的输入/输出时不能够对输入/输出进行格式控制,也就是说,它们的输入/输出是系统规定好了的,没法改变,所以称之为字符数据的非格式化输入/输出。 4.4.1 putchar 函数 putchar 函数(字符输出函数)的作用是向终端输出一个字符(只能输出字符,而且只能是一个字符)。其一般形式为: Putchar(c) 它输出字符变量c的值,c可以是字符型变量或整型变量。 例题:书73页。例4.1,2019/9/1,16,函数调用的一般形式 putchar(ch) 功能: 在标准输出设备(即显示器

8、屏幕)上输出一个字符。 例如: putchar(b); putchar(n); putchar(101); putchar(st);,2019/9/1,17,说明,1,putchar是C语言的标准库函数,使用时必须加编译预处理命令: #include “stdio.h“ 或 #include 【例3.1】利用putchar函数输出字符。,#include “stdio.h“ main( ) char c1,c2; c1=a ; c2=b ; putchar(c1);putchar(c2); putchar(n); putchar(c1-32);putchar(c2-32); putchar(n

9、); ,输出结果:ab AB,例jc3_1,2019/9/1,18,4.4.2 getchar 函数 getchar 函数(字符输入函数)的作用是从终端(或者是系统隐含指定的输入设备)输入一个字符。 getchar 函数没有参数,其一般形式为getchar()。函数的值就是从输入设备得到的字符。 注意: getchar 函数只能接受一个字符。 getchar 函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。 例题:书74页例题4.2,2019/9/1,19,说明:,getchar是C语言的标准库函数,使用时必须加编译预处理命令: #include “st

10、dio.h“ 或 #include getchar函数需要交互输入,接收到输入字符之后才继续执行程序。 连续使用getchar函数时,要注意字符的输入形式 ,例如执行如下程序段:,char ch1,ch2; ch1=getchar( ); ch2=getchar( );,必须连续输入两个字符,中间不能有其他字符,2019/9/1,20,【例】getchar函数的应用。 #include “stdio.h“ main( ) char ch; ch=getchar( ); printf(“%c %dn“,ch,ch); printf(“%c %dn“,ch-32,ch-32); ,程序运行时输入:

11、m 并按回车键后 输出结果是: m 109 M 77,例jc3_8,2019/9/1,21,4.5 格式输入与输出,1、Printf函数称为格式化输出函数,其关键字最末个字母f即为“格式”(Format)之意。 Printf函数的功能绝非只是输出变量的值,它还可以输出表达式的值,并且可以同时输出多个表达式和变量的值。 Printf函数的一般格式为: Printf( “格式控制”,输出列表) 功能:按格式控制所指定的格式,在标准输出设备上输出参数2、参数n的值。 例如有程序段 : int a=123,b=100; printf(“%d %d %dn“,a,b,a+b); printf (“c =

12、 %d + %d = %dn“,a,b,a+b );,2019/9/1,22,格式控制,用双引号括起的字符串,用于指定输出数据的类型、格式、个数 包括:普通字符和格式说明符,照原样输出,printf (“c=%d+%d=%dn“, a, b, a+b );,格式说明符:指定输出3个十进制整型数,分别为变量 a、b、ab的值,2019/9/1,23,例如: Printf(“%d,%cn”,i,c) 其中括号包括两部分: (1)格式控制用于指定输出格式,用双撇号括起来。它包含如下所示的两类字符: 格式说明。以开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。如,%d、%f等。其中

13、,% 后面的d 和f被称为格式转换字符。 普通字符。即需要原样输出的字符。 如书68页习题3.6 (2)输出表列是需要输出的一些数据,可以是表达式。如:a=3,b=4 Printf(“a=%d b=%d”,a,b) 格式说明 输出表列 则输出结果为:a=3 b=4。其中,a=和b=是Printf函数中的“格式控制”字符串中的普通字符按原样输出的结果。,2019/9/1,24,2、格式字符 在输出时,对不同类型的数据要使用不同的格式字符。常用的有以下几种格式字符。 (1)d格式符。用来输出十进制整数。有以下几种用法: %d。按十进制整型数据的实际长度输出。 %md。m为指定的输出字段的宽度。如果

14、数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。如:printf(“%4d,%4d”,a,b), 若a=123,b=12345,则输出结果为: 123,12345,2019/9/1,25,%ld。输出长整型数据。例如: Long a=135790; Printf(“%ld”,a); 如果用%d输出,就会发生错误,因为整型数据的范围为-3276832767。对于long型数据应当用%1d格式输出。对长整型数据也可以指定字段宽度,如将上面printf函数中的“%1d”改为“%8d”,则输出为 _135790,2019/9/1,26,(2)o格式符。以八进制整数形式输出。由于是将内存单

15、元汇总的各位的值(0或1)按八进制形式输出,因此输出的数值补带符号,即将符号位也一起作为八进制数的一部分输出。例如: Int a=-1;Printf(“%d,%o”,a,a); 则输出结果为:1,177777 (3)x格式符。以十六进制数形式输出整数。同样不会出现负的十六进制数。例如: int a=-1;printf(“%x,%o,%d”,a,a,a) 则输出结果为:ffff,177777,-1,2019/9/1,27,(4)u格式符。用来输出unsigned型数据,即无符号数,以十进制整数形式输出。 一个有符号整数型也可以用%u格式输出;反之,一个unsigned型数据也可以用%d格式输出。

16、按相互赋值的规则处理,unsigned型数据也可用%o或%x格式输出。例题:书77页4.3。 (5)c 格式符。用来输出一个字符。例如:char c=a;printf(“%c”,c);输出字符a。 注意: %后面的c是格式符,逗号右边的c是变量名。 一个整数,只要它的值在0255范围内,也可以用“%”使之按字符形式输出,在输出前,系统将该整数作为ASCII码转换成相应的字符;反之,一个字符数据也可以用整数行数输出。书78页4.4,2019/9/1,28,(6)s格式符,用来输出一个字符串。有几种用法: %s。例如:printf(“%s”, “CHINA”); 输出字符串“CHINA”(不包括双

17、引号)。 %ms,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若字符串长小于m,则左补空格。 %-ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。 %m.ns,输出占m 列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。 %-m.ns,其中m,n含义同上,n个字符输出在m列范围的左侧,右补空格。如果nm,则m自动取n值,即保证n个字符正常输出。 书78页例题4.5,2019/9/1,29,(7)f格式符。用来输出实数(包括单/双精度),以小数形式输出。有以下几种: %f,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输

18、出6位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为7位。书79页例题4.6、4.7。 %m.nf,指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。 %-m.nf与%m.ns基本相同,只是使输出的数值向左端靠,右端补空格。例题4.8,2019/9/1,30,(8)e格式符。以指数形式输出实数。可用以下形式: %e,不指定输出数据所占的宽度和数字部分的小数位数,有的C编译系统自动指定给出数字部分的小数位数为6位,指数部分占5位(如e+002),其中”e”占1位,指数符号占1位,指数占3位。数值按规范化指数形式输出(即小数点前必须有而且

19、只有一位非零数字)。例如: Printf(“%e”,123.456); 则输出为:1.234560e+002 所输出的实数共占13列。(不同系统的规定略有不同。),2019/9/1,31,%m.ne和%-m.ne,m、n和”-”字符的含义与前面相同。此处n指拟输出的数据的小数部分(又称尾数)的小数位数。 书80页例题 (9)g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时宽度较小的一种),且不输出无意义的零。,2019/9/1,32,注意:对使用printf函数还要说明以下几点: (1)除了X,E,F外,其他格式字符必须用小写字母,如%d不能写成%D. (2)可以在p

20、rintf函数中的“格式控制”字符串内包含转义字符。 (3)格式说明以”%”开头,中间可以插入附加格式字符(也称为修饰符)。其他的字符原样输出。如66页习题3.6 (4)如果想输出字符”%”, 则应该在“格式控制”字符串中用连续两个% 表示。如, printf(“%f%”,1.0/3);输出0.333333% (5)printf函数格式控制中的格式说明符与输出参数的个数和类型必须一一对应。 (6)长整型数应该用ld(或lo、lx、lu)格式输出,否则会出现输出错误。 (7)printf函数的参数可以是常量、变量或表达式。在计算各参数值时,Turbo C采用从右至左的顺序求值。,2019/9/1

21、,33,输出格式说明符,在和格式符之间可以使用附加说明符,2019/9/1,34,附加格式说明符,例如: %ld 输出十进制长整型数 %m.nf 右对齐,m位域宽,n位小数或n个字符 %-m.nf 左对齐,2019/9/1,35,例题:整型数据的输出,main( ) int a=11,b=22; int m=-1; long n=123456789; printf(“%d %dn“,a,b); printf(“a=%d, b=%dn“,a,b); printf(“m: %d, %o, %x, %un“,m,m,m,m); printf(“n=%dn”,n); printf(“n=%ldn“,n

22、); ,程序输出: 1122 a=11, b=22 m: -1, 177777, ffff, 65535 n=-13035 (错误)超出范围 n=123456789,例jc3_a,2019/9/1,36,例 实型数据的输出,main( ) float x=1234.56,y=1.23456789; double z=1234567.123456789; printf(“x=%f, y=%f n“,x,y); printf(“z=%fn“,z); printf(“z=%en“,z); printf(“z=%gn“,z); printf(“z=%18.8fn“,z); printf(“x=%10.

23、3fn“,x); printf(“x=%-10.3fn“,x); printf(“x=%4.3fnn“,x); ,程序输出: x=1234.560059, y=1.234568 z=1234567.123457 z=1.234567e+006 z=1234567 z= 1234567.12345679 x= 1234.560 x=1234.560 x=1234.560(按实际长度输出),例jc3_b,2019/9/1,37,例 字符型数据的输出,main( ) int m=97; char ch=B; printf(“m: %d %cn“,m,m); printf(“ch: %d %cn“,c

24、h,ch); printf(“%sn“,“student“); printf(“%10sn“,“student“); printf(“%-10sn“,“student“); printf(“%10.3sn“,“student“); printf(“%.3snn“,“student“); ,程序输出: m: 97 a ch: 66 B student student student stu stu,例jc3_c,2019/9/1,38,4.5.2scanf函数,C语言中具有基本数据输入功能的库函数是scanf函数。 scanf函数称为格式化输入函数,其关键字最末一个字母f即为 “格式” (For

25、mat)之意。也就是说,它可以按照某种输入格式通过键盘将数据信息输入到计算机。它的函数原型在头文件stdio.h中。 scanf函数调用的一般形式为:scanf(“格式控制字符串”,变量1的地址,变量2的地址,。,变量n 的地址); 功能是在第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依次存放在变量1、变量2、。、变量n中。 例如:int a;scanf(“%d”,就是接受用户通过键盘输入的整数,并将数据存放在int 型的变量a中。其中,&符号的功能是取变量的地址。,2019/9/1,39,格式控制字符串,用双引号括起的字符串,用于指定输入数据的类型、格式、个数以及输入

26、的形式 包括:普通字符和格式说明符,照原样输入,scanf (“a=%d, b=%d“, ,格式说明符:指定输入2个十进制整型数赋给变量 a 和 b,2019/9/1,40,scanf (“%d%d%d“, 输入的形式是:a=32, b=28 (普通字符要照原样输入),2019/9/1,41,(1)在C语言中,变量一经定义,程序运行时系统就会给变量分配相应大小的内存单元,每个内存单元都有与之相对应的内存地址,即变量的地址,变量名通常被用来表示该变量在其内存单元的值,要获得变量的地址(变量所在内存单元的地址),需要在变量名前面加上&符号。因此,&又被称为取地址运算符(与按位与运算符是同一个符号)

27、,它与+等运算符具有相同的优先级。 (2)&只能作用于变量,不能作用与表达式,因为表达式不对应具体的内存单元,没有地址,只有值。例如:&(a+1)是错误的。,2019/9/1,42,输入格式说明符,在和格式符之间可以使用附加说明符,2019/9/1,43,附加格式说明符,例如: %ld、%lo输入十进制、八进制长整型数 %lf、%le输入双精度实型数 %mf输入m位数(域宽) %*d忽略输入的一个整型数,对float和double型指整数位数+小数点 +小数位数,2019/9/1,44,例如:,scanf (“%d%d%d“, 输入的形式是:a=32, b=28 (普通字符要照原样输入) 书8

28、2页例题4.9,2019/9/1,45,使用scanf函数应注意:,要求在程序运行中输入数据,输入的数据个数和类型必须与格式说明符一一对应。 地址参数形式:&变量名(除数组或指针变量) 格式控制中有普通字符时,必须照原样输入。 格式控制中无普通字符时,输入的数值型数据和字符串用空白符分隔,字符型数据不必分隔。 double型数据输入时,必须用%lf或%le格式 实型数输入时域宽不能用m.n形式的附加说明 为了减少不必要的输入量,除了逗号、分号、空格符以外,格式控制中尽量不要出现普通字符,也不要使用 n 、t 等转义字符,2019/9/1,46,scanf (“%c%c%c“, 要输入:abc

29、不能输入:abc 注意数值型数据与char型数据的混合输入,注意(续) :,格式符之间若无普通字符,则: 输入的数值型数据用空白符分隔 输入的 char型数据不必分隔,例如: scanf (“%d%d“, ,错误输入:3228 a,正确输入:3228a ,2019/9/1,47,4.6 顺序结构程序设计,4.6.1 顺序结构程序的一般算法描述,可用: 变量初始化 赋值语句 输入函数调用语句,注意各个语句的顺序,2019/9/1,48,4.6.2 顺序结构程序设计举例,【例1】数据交换。从键盘输入a、b的值,输出交换以后的值。 思路:在计算机中交换变量a和b的值,不能只写下面两个赋值语句 a=b

30、 ; b=a ;,?,正确的交换方法: c=a ; a=b ; b=c;,2019/9/1,49,程序:,main( ) int a,b,c; printf(“ninput a, b: “); scanf(“%d,%d“, ,程序运行情况如下: input a, b: 32, 57 before exchange: a=32 b=57 after exchange: a=57 b=32,运行jc3_15,2019/9/1,50,举例:,【例2】已知三条边a、b、c,求三角形面积。计算三角形面积的海伦公式:,其中:,设定义: 整型变量 a、b、c 实型变量 s 、 area,2019/9/1,51,程序如下:,#include “math.h“ main( ) int a,b,c; float s,area ; scanf(“%d, %d, %d“, ,程序运行情况如下: 3,4,5 area = 6.000,实际上还需要判断a、b、c是否能构成三角形,即应该进行选择判断处理,运行jc3_16,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1