全国计算机等级考试二级c语言培训课件.ppt

上传人:牧羊曲112 文档编号:1525120 上传时间:2022-12-03 格式:PPT 页数:259 大小:8.56MB
返回 下载 相关 举报
全国计算机等级考试二级c语言培训课件.ppt_第1页
第1页 / 共259页
全国计算机等级考试二级c语言培训课件.ppt_第2页
第2页 / 共259页
全国计算机等级考试二级c语言培训课件.ppt_第3页
第3页 / 共259页
全国计算机等级考试二级c语言培训课件.ppt_第4页
第4页 / 共259页
全国计算机等级考试二级c语言培训课件.ppt_第5页
第5页 / 共259页
点击查看更多>>
资源描述

《全国计算机等级考试二级c语言培训课件.ppt》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级c语言培训课件.ppt(259页珍藏版)》请在三一办公上搜索。

1、全国计算机等级考试,二级教程C语言程序设计,目录,第1章 程序设计基本概念第2章 C程序设计的初步知识第3章 顺序结构第4章 选择结构第5章 循环结构第6章 字符型数据第7章 函数第8章 地址和指针第9章 数组第10章 字符串,第11章 对函数的进一步讨论第12章 C语言中用户标识符的作用域和存储类第13章 编译预处理和动态存储分配第14章 结构体、共用体和用 户定义类型第15章 位运算第16章 文件第17章 上机指导,1.1 程序和程序设计,C语言源程序,C语言编译程序,二进制机器指令(目标程序),.C,.OBJ,高级语言,机器语言,C语言连接程序,可执行文件,.EXE,考点,算法的基本特征

2、,有穷性、确定性、可行性有零个或多个输入有一个或多个输出,结构化程序设计的三种基本结构,顺序结构选择结构循环结构,考点总结:由以上3种基本结构组成的算法 可以完成任何复杂的问题.,考点总结:用C程序实现的算法可以 没有输入,但必须要有输出.,习题,1.1 在VC6.0环境中用RUN命令运行一个C程序时,这时所运行的程序的后缀是_。1.2 C语言源程序文件名的后缀是_;经过编译后,生成文件的后缀是_;经过连接后,生成文件的后缀是_。1.3 结构化程序由_、 _、 _三种基本结构组成。,.exe,.c,.obj,.exe,顺序结构,选择结构,循环结构,第2章 C程序设计的初步知识,2.1 简单C语

3、言程序的构成和格式2.2 标识符、常量和变量2.3 整型数据2.4 实型数据2.5 算术表达式2.6 赋值表达式2.7 自加、自减运算符和逗号运算符,2.1 简单C语言程序的构成和格式,本节将通过一个简单的程序例子,介绍C程序的一些基本构成和格式,使大家对C语言程序有一个初步的了解。,例2.1 已知矩形的两条边长(用a表示宽,b表示长),求矩形的面积(area)。,#include main() double a,b,area; a=1.2; b=3.6; area=a*b; printf(“a=%f,b=%f,area=%fn”,a,b,area); ,a=1.200000,b=3.6000

4、00,area=4.320000,注意:,1. C程序由函数组成,一个程序必须有一个且只能有一个主函数(main),C程序总是从主函数开始执行,并且也是从它结束的。,2. 函数体必须放在一对花括号“”内,在函数体中,通常有定义(说明)语句和执行语句,定义语句应出现在执行语句之前,每条语句后面的分号不可少。多条语句可以写在同一行上,并且一条语句也可以写在多行上。,3. C程序中的注释必须放在/*和*/之间,/和*之间不允许有空格。/*和*/之间不允许再插入/*或*/。注释可以出现在程序中任意位置。,/*包含头文件*/*主函数,程序的入口*/*声明部分,定义了3实型个变量*/*给变量a赋值*/*给

5、变量b赋值*/*将a*b的结果赋值给变量area*/ /*分别输出矩形的两条边长和面积*/,a,b,area,1.2,3.6,4.32,函数体,2.2 标识符、常量和变量,2.2.1 标识符在C语言中,有许多东西都需要命名,如变量名、函数名、数组名等,在命名的时候都必须遵守一定的规则,按此规则命名的符号称为标识符。在C语言中,合法的标识符由字母、数字和下划线组成 。遵守以下规则命名:必须以字母(大小写皆可)或下划线开头。随后可跟若干个(包括0个)字母、数字、下划线。标识符的长度各个系统不同,最好不要超过8个字符。如:area PI _ini a_array s1234 P101p (合法) 4

6、56P cade-y w.w a&b (不合法),注意,C语言区分大小写,如page、Page是两个不同的标识符。,2.2 标识符、常量和变量,2.2.1 标识符C语言的标识符可以分为以下三类 :a) 关键字 b) 预定义标识符 c) 用户标识符关键字: C语言规定了一批标识符,它们在程序中都代表着固定的含义,不能另作它用。例如,用来说明变量类型的标识符int、float、double以及if语句中的if、else等都已有专门的用途,它们不能再用作变量名或函数名。注意,所有的关键字都必须小写。C语言中的关键字请参考附录4。预定义标识符:这些标识符在C语言中也都有特定的含义,如C语言提供的库函数

7、的名字(如include)和预编译处理命令(如define)等。 用户标识符:由用户根据需要定义的标识符称为用户标识符。一般用来给变量、函数、数组或文件等命名。 如例2.1中的a,b,area三个变量,2.2 标识符、常量和变量,2.2.2 常量在程序运行过程中,其值不能被改变的量,称为常量。,常量,整型常量:,实型常量(符点型),字符常量:,字符串常量:,单精度型:,双精度型:,由上述可见,常量的类型从字面形式上就可以区分开来,我们称此常量为字面常量。,12、-1、0,A、d,”NCRE”、“Beijing”,3.14159、-2.71828、0.0,12.5678、-12.5678,2.2

8、 标识符、常量和变量,2.2.3 符号常量在C语言中,可以用一个符号名来代表一个常量,称为符号常量。但是这个符号名必须在程序中用(#define)进行特别的“指定。,例2.2 计算圆面积和周长,此程序中将如何教大家使用符号常量。,#include “stdio.h”#define PI 3.14159main()double r,s,l; r=5.0; s=PI*r*r; l=2*PI*r; printf(“s=%f,l=%fn”,s,l);,S=78.539750,l=31.415900,/*包含头文件*/*定义符号常量,符号常量名为PI,用PI来代表3.14159*/*主函数,程序的入口*

9、/*声明部分,定义了3实型个变量*/*给变量r赋值*/*计算圆的面积*/*计算圆的周长*/*分别圆的面积和周长*/,注意,习惯上,符号常量名用大写,变量名用小写,以示区别,函数体,r,s,l,5.0,78.53975,31.4159,2.2 标识符、常量和变量,2.2.4 变量1.所谓变量是指在程序运行过程中可以改变的量。,如下程序:,#include main()double a,b; a=1.5; b=2.5; printf(“%f%fn”,a,b); a=a+1; b=b+1; printf(“%f%fn”,a,b);,a,b,1.5000002.500000,2.在程序中,声明变量就是

10、在计算机内存中申请了某个内存单元。对变量进行赋值,实质上就是把数据存入该变量所代表的存储单元中。,3.C语言规定,程序中所有变量都必须先定义后使用。如程序例2.1、例2.2。,内存空间,a,b,2.5000003.500000,1.5,2.5,2.5,3.5,1.5,2.5,2.5,3.5,2.3 整型数据,2.3.1 整型常量,在C语言中,按整型常量的表示形式可以有三种形式。,整型常量,由09十个数字组成,如32767、-32768、0等。,由07八个数字组成,如010、011、016等。注意,最高位必须用0作引导符,与十进制和十六进制区分。如:018,为不合法的八进制常量。,由09十个数字

11、和af(AF)六个字母组成,如0 x10、0Xde、0 xf注意,最高位必须用0 x( 0X)作引导符,与十进制和八进制区分。如:oxff、0X12H,都为不合法的十六进制常量。,在C语言中,按整型常量的表示范围可以分为四种。,在C语言中,八进制数和十六进制数只能是正整数。,注意,如:-077、-0X11、01.0等,(不合法),短整型,基本整型,长整型,无符号整型,三种进制之间的转换,十六进制常量:,八进制常量:,十进制常量:,2.3 整型数据,2.2.2 整型变量,整型变量是用来存放整型常量的工具。可以把整型变量抽象为一个盒子。由于整型常量有短整型、基本整型、长整型和无符号整型四种类型,既

12、然整型变量是用来存放整型数据的,那整型变量也要分为四种对应类型的整型变量,以方便存放不同类型的整型常量。在此我们只介绍基本整型变量。也叫整型变量。,在C语言中,整型变量我们需要用一个符号来表示它,即整型变量名。例如:int k; /*定义k为整型变量,k为变量名*/关键字int是用来说明变量k的类型为整型。又如:int i,j,k; /*定义i、j、k为整型变量*/,int i;int j;int k;,相同,注意,在同一行上使用关键字定义多个变量时,变量之间用逗号隔开。所有定义语句后必须以一个“;”号结束,表示它是一条语句。,2.3 整型数据,2.2.2 整型变量,在前面已经讲过,声明变量就

13、是在计算机内存中申请某个内存单元。,在VC6.0环境中,用关键字int声明变量时,计算机将会为每个变量开辟4字节(32个二进制位)的内存单元。,例如,当前的某段内存空间如右图所示。有如下程序段。,内存空间,地址,2000,2001,2002,2003,2004,2005,2006,2007,2011,2010,2009,2008,2012,int i;int j;i=100;j=200;,C语言规定,可以在定义变量的同时给变量赋初值,该过程称为变量的初始化。例如:#include main()int i=1,j=0,k=2; : :,i,j,100,200,/*在声明变量的同时,为三个变量赋值

14、*/,2.3 整型数据,2.3.3 整型数据的分类,不同的计算机系统对整型数所占用的字节数和数值范围有不同规定,下表列出了在VC6.0中定义的整型数所占用的字节数和数值范围。,由于整型数据在C语言中分为上述几类,比如123。它是属于哪一类型的?,int,123L、345l、0L、123456L,123U、345u、0U、123456U,123LU、345lu、0LU、123456LU,long,unsigned,unsigned long,2.3 整型数据,2.3.4 整数在内存中的存储形式,计算机中,内存储器的最小的存储单位称为“位(bit)”,每一位中只能存放0或1,因此称为二进制位。8个

15、二进制位组成一个“字节”,并给每一个字节分配一个地址。,数据在内存中是以二进制形式进行存放的。,一、正整数,正整数在内存中是以“原码”形式存放的。如果定义了一个short类型变量i:,short i;i=5;,/*声明i为短整型变量*/*给i赋以整数5*/,十进制数5的二进制形式为101,在VC6.0中,由于短整型变量在内存中占2个字节,,i,i,符号位:0代表正整数,1代表负整数,二、负整数,负整数在内存中是以“补码”形式存放的。,5,2.4 实型数据,2.4.1 实型常量,在C语言中,实型常量的表示形式有两种。,实型常量,由数字和小数点组成,如0.123、.123、123.、0.0,指数形

16、式:,如:0.23026x101 2.3026x100 23.026x10-1,0.23026E12.3026e023.026e-1,注意,E(e)前后必须有数字,并且后面的必须为整型数。,.3e3 3.0e3 3.e3 (合法),3e e3 55e0.3 (不合法),小数形式:,2.4 实型数据,2.4.2 实型变量,单精度型变量定义的形式如下:float a,b,c;,双精度型变量定义的形式如下:double x,y,z;,实数在内存中是以“指数”形式存放的。,也可以在定义实型变量的同时,对变量进行初始化。例如:#include main()float a=1.5,b=.5,c=0.0;

17、double x=1.5,y=.5,z=0.0; :,/*在声明变量的同时,为三个变量赋值*/*在声明变量的同时,为三个变量赋值*/,2.5 算术表达式,2.5.1 基本的算术运算符,+ (加法运算符,或正值运算符) 如:1+2、+3.9- (减法运算符,或负值运算符) 如:3-4、-54* (乘法运算符) 如:1.2*3.2、3*4、2*x/ (除法运算符) 如:5/3、(a+b)/(x+y),单目运算符,双目运算符,两个整数相除,其值仍然为整数。如:5/3值为1、1/2值为0。两个实数相除,其值仍然为实数。如:1.0/2.0值为0.5。除数、被除数只要有一个为实数时,系统将自动进行类型转换

18、,转换为double型。 如:1/2.0=0.5、 1.0/2.0=0.5 最后结果的类型为double型。,% (求余运算符) 注意:%运算符的两侧必须为整型数据。 如:7%4的结果为3。,-7%4、 7%-4、 -7%-4的结果为多少?,-3 3 -3,结果的符号和被除数相同,2.5 算术表达式,2.5.2 运算符的优先级、结合性和算术表达式,一、优先级,( ) + - * / % + -,单目,双目,同级,同级,同级,高,低,二、结合性,单目运算符的结合性是从右往左的,即表达式从右往左进行计算,称为右结合。其余运算符的结合性是从左往右的。即表达式从左往右进行计算,称为左结合。,例如:(5

19、+1)/2 5+1/2 5*-2,5*(-2),三、算术表达式,用算术运算符和一对圆括号将运算量(或称操作数)连接起来的、符合C语法的表达式称为算术表达式。,算术表达式中,运算对象可以是常量、变量和函数等。例如:2+sqrt(c)*b。,5,-10,3,2.5 算术表达式,2.5.3 强制类型转换表达式,表达式的形式如下:,(类型名)(表达式),强制类型转换运算符,作用:可以利用强制类型转换运算符将一个表达式转换成想要的类型。,例如:(int)3.234 (double)(10%3),3,注意,int3.234 (错误)(double)10%3 (错误),例:阅读如下程序,关于强制类型转换。,

20、#include main()double a; int b; a=3.6; b=(int)a; printf(“a=%f,b=%dn”,a,b);,a=3.600000,b=3,1.0,a,b,3.6,3,2.6 赋值表达式,2.6.1 赋值运算符和赋值表达式,赋值运算符: =赋值表达式:由赋值运算符组成的表达式称为赋值表达式,它的形式如下: 变量名=表达式,赋值号的左边必须是一个代表某一存储单元的变量名。赋值运算的功能是先求出右边表达式的值,然后把此值赋给左边的变量。,例如,若a和b都被定义成int类型变量a=10; /*把常量10赋给变量a*/b=a; /*把a中的值赋给变量b,a中的值

21、不变*/,注意,1. 赋值运算符的优先级别只高于逗号运算符,比其它任何运算符的优先级都低,且具有自右向左的结合性。例如:a=2+7/3 2. 赋值运算符的左侧只能是变量不能是常量或表达式。如a+b=c是不合法的赋值表达式。 3. 赋值号右边的表达式也可以是一个赋值表达式,如a=b=7+1。4. 作为一个表达式,它自己也应该有一个值,C语言规定最左边变量中所得到的新值就是赋值表达式的值。,2.6 赋值表达式,2.6.2 复合赋值表达式,在赋值运算符”=”之前加上其它运算符可以构成复合赋值运算符。,+= -= *= /= %=,= &= = |=,等价于 n=n+1 等价于 a=a+3 等价于 n

22、=n*(m+3) 注意:有括号,例2.3 已有变量a,初始值为9,计算表达式a+=a-=a+a的值。,a,表达式,如:n+=1 a+=3 n*=m+3,a+=a-=a+a,9,18,a+=a-=18,a=a-18,-9,-9,a+=-9,a=a+-9,a=a+(-9),-18,-18,a+=a-=a+a的值是:-18,2.6 赋值表达式,2.6.3 赋值运算中的类型转换,在赋值运算中,只有在赋值号右侧表达式的类型 与左侧变量类型完全一致时,赋值操作才能进行。,如:int a; double b; a=10; b=3.5;,如果赋值运算符两侧的数据类型不一致,在赋值前, 系统将自动先把右侧表达式

23、求得的数值,按赋值号 左边变量的类型进行转换,也可以用强制类型转换 的方式,人为地进行转换后赋给赋值号左边的变量。,a,10,b,3.5,如:int a; double b; a=20.5; b=15;,a,20,b,15.0,3. 在C语言的表达式中(不包括赋值表达式),如果运算 符两边的数据类型不相同,将进行类型之间的转换。 转换规则如下:,double,long,unsigned,int,float,char,short,低,高,如:10+97+1.5-8765.1234*98,8765.1234*98.0,double,2.7 自加、自减运算符和逗号运算符,2.7.1 自加运算符“+”

24、和自减运算符“-”,+ (自加运算符),- (自减运算符),1. +、-运算符是单目运算符,运算对象只能变量,不能是常量和表达式。,2. +和-运算符的结合方向是自右至左。,i+、+i,i-、 -i,i=i+1,i=i-1,例如:,int i=5;i+;,int i=5;+i;,int i=5;i-;,int i=5;-i;,i:,表达式:,运算规则运算符在前,先计算,后赋值运算符在后,先赋值,后计算,例如:int i=3; -i+;,int i=3;-(i+);,i:,表达式:,思考:程序示例,自增自减运算,#include main()int i=0,j; j=i+; printf(“%d

25、,%dn”,i,j); i=0; j=+i; printf(“%d,%dn”,i,j);,上机练习,6,5,6,6,4,5,4,4,4,-3,2.7 自加、自减运算符和逗号运算符,2.7.2 逗号运算符和逗号表达式,, (逗号运算符),用逗号将表达式连接起来的式子称为逗号表达式。逗号表达式的一般形式为:,表达式1,表达式2,表达式n,表达式之间用逗号进行连接,1. 逗号运算符的结合性为从左到右,因此逗号表达式将从左到右进行运算。,如:i=3,i+,+i,i+5,i,表达式,3,3,i,表达式,4,3,i,表达式,5,5,i,表达式,5,10,逗号表达式的值为,2. 在所有运算符中,逗号运算符的

26、优先级别最低。,习题,一、选择题2.1 以下选项中正确的整型常量是 A 12. B -20 C 1,000 D 4 5 62.2 以下选项中正确的实型常量是A 0 B 3. 1415 C 0.329X102 D .871 2.3 以下选项中不正确的实型常量是A 2.607E-1 B 0.8103e 2 C -77.77 D 456e-22.4 以下选项中不合法的用户标识符是 A abc.c B file C Main D PRINTF2.5 以下选项中不合法的用户标识符是 A _123 B printf C A $ D Dim2.6 C语言中运算对象必须是整型的运算符是 A % B / C !

27、 D * *2.7 可在C程序中用作用户标识符的一组标识符是 A void B as_b3 C For D 2c define _123 -abc DO WORD If case SIG,B,D,B,A,BC,A,B,2.8 若变量已正确定义并赋值,符合C语言语法的表达式是 A a=a+7; B a=7+b+c,a+ C int(12.3%4) D a=a+7=c+b2.9 以下中叙述中正确的是 A a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值B 在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式C 执行表达式a=b后, 在内存中a和b存储单元中的原有值

28、都将被改变,a的值已由原 值改变为b的值,b的值由原值变为0D 已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为32.10 以下中叙述中正确的是 A 在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示B C程序由主函数组成C C程序由若干个函数组成D C程序中只允许包含一个函数2.11 VC6.0中int类型变量所占字节数是 A 1 B 2 C 3 D 4,习题,B,A,C,D,习题,2.12 合法的八进制数是 A 0 B 028 C -077 D 01.02.13 不合法的十六进制数是 A oxff B 0Xabc C 0 x11 D0 x19

29、二、填空题2.14 若k为int型变量且赋值11.请写出运算k+后表达式的值_和变量k的值_.2.15 若x为double型变量,请写出运算x=3.2,+x后表达式的值_和变量x的值_.2.16 函数体由符号_开始,到符号_结束.函数体内的前面是_部分,后面是_部分.2.17 C语言中的标识符可分为_._和预定义标识符三类.2.18 在C语言程序中,用关键字_定义基本整型变量,用关键字_定义单精度实型变量,用关键字_定义双精度实型变量.2.19 把a1,a2定义成双精度实型变量,并赋初值1的定义语句是_.2.20 C程序中定义的变量,代表内存中的一个_.,11,12,4.2,4.2,定义和说明

30、,语句,关键字,用户标识符,int,float,double,double a1=1,a2=1;,存储单元,A,A,习题,2.21 表达式3.5+1/2的计算结果是_.2.22 对数学式a x b ,写出三个等价的C语言表达式_._._. c2.23 表达式s=10应当读做_.,三.改错题,2.24#include stdio.h;main(); / * main function * / float r,s; /*/*r is radius*/,/*s is area of circular*/*/ r=5.0; s=3.14159*r*r; printf(%fn,s),2.25main /

31、* main function */ float a,b,c,v; /*a,b,c are sides,v is volume of cube*/ a=2.0;b=3.0;c=4.0 v=a*b*c; printf(%fn,v) ,3.5,(a*b)/c,a*b/c,a*(b/c),将10赋给变量s,第3章 顺序结构,3.1 赋值语句3.2 数据输出3.3 数据输入3.4 复合语句和空语句3.5 程序举例,3.1 赋值语句,在赋值表达式的尾部加上一个“;”号,就构成了赋值语句,也称表达式语句。,例如:a=a+b (赋值表达式) a=a+b; (赋值语句),3.2 数据输出,3.2.1 prin

32、tf函数的一般调用形式,首先,我们先来了解一些其它知识。一个程序,一般情况下都包含数据输入、数据处理、数据输出三个部分。输出:把数据从计算机内部送到计算机的外部设备上的操作称为“输出” 。输入:从计算机外部设备将数据送入计算机内部的操作称为“输入”。,显示器,键盘,在C语言中,数据的输入和输出是通过调用输入和输出函数来实现的。在VC6.0环境下,在调用输入和输出的库函数之前要求在源程序中出现包含头文件命令行: #include 或 #include “stdio.h”,1. printf函数的调用形式如下 :,rintf(格式控制,输出项表),作用:按照指定的格式将输出项中的值输出到终端。,要

33、输出的内容(常量、变量、表达式等),双引号括起来的字符串,按照该指定的格式进行输出,3.2 数据输出,3.2.1 printf函数的一般调用形式,例如: printf(“a=d, b=d ”, a, b);,函数名,格式控制,输出项(实参),在printf函数调用的后面加一个分号就构成输出语句。,例:对于printf函数的调用形式,请见下面的程序示例。,#include main()int i=2518; double a=3.1415; printf(“i=%d,a=%f,a*10=%en,i,a,a*10);,格式控制,输出项(实参),i=2518,a=3.141500,a*10=3.14

34、1500e+001,“i=%d,a=%f,a*10=%en,原样输出,%d,%f,%e,%为引导符,d、f、e为格式字符,转义字符,3.2 数据输出,3.2.1 printf函数的一般调用形式,rintf也可以没有输出项,函数的调用形式将为: printf(格式控制),比如:printf(“OK!”);,OK!,3.2 数据输出,3.2.2 printf函数中常用的格式说明,格式字符: d - 以十进制整数进行输出 o - 以八进制数进行输出 x - 以十六进制数进行输出 f - 以小数形式进行输出 : :,使用时,以%作为引导符,格式字符必须使用小写,如:%d %o %x %f,简单的格式字

35、符形式,完整的格式字符形式,% + - 0 n n1.n2 l/h 格式字符,n 指定输出的宽度 printf(“%6dn”,k);n1.n2 n1指定输出的宽度, n2指定输出的小数位数 printf(“%12.2fn”,f);0 输出的数据右对齐,前面补0 printf(“%06dn”,k);- 输出的数据左对齐 printf(“%-6dn”,k);+ 输出的数据为正数时,使前面带有“+”符号 printf(“%+-6dn”,k);l 输出整数时,为长整型;输出实数时,为双精度型 printf(“%ldn”,k);h 输出整数时,为短整型 printf(“%hdn”,k);,有如下程序段i

36、nt k;float f;k=1234;f=123.456,jj1234,jjjjjj123.46,001234,1234jj,+1234j,1234,1234,3.2 数据输出,3.2.2 printf函数中常用的格式说明,下面,将简单的介绍一些输出格式形式和输出结果:,printf(“%fn”,f);printf(“%12fn”,f);printf(“%.6fn”,f);printf(“%12.0fn”,f);printf(“%en”,f);printf(“%13en”,f);printf(“%13.8en”,f);printf(“%3.8en”,f);printf(“%.8en”,f);

37、printf(“%13.9en”,f);printf(“%13.2en”,f);printf(“%gn”,f);printf(“%10gn”,f);printf(“%f%n”,12.5);,123.456000jj123.456000123.456000jjjjjjjjj1231.234560e+0021.234560e+0021.23456000e+0021.23456000e+0021.23456000e+0021.234560000e+002jjjj1.23e+002123.456jjj123.45612.500000%,以指数形式输出,输出时,先以小数位数为基准,再考虑输出的宽度.,以

38、原数的最小宽度进行输出,指定宽度时,按指定宽度进行输出,3.2 数据输出,3.2.3 使用printf函数时的注意事项,1. 在使用输出函数时,输出的数据要清晰,视觉感要好。例如:k=1234,f=123.456,printf(“%d%d%fn”,k,k,f);printf(“%d,%d,%fn”,k,k,f);printf(“k=%d,k=%d,f=%fn”,k,k,f);,12341234123.456000,2. 在格式控制串中,格式说明与输出项从左到右在类型上要一一对应匹配。 如不匹配,将导致数据不能正确输出,这时,系统并不报错。,最好,例如:int a=10; float b=12.

39、5; printf(“a=%f,b=%dn”,a,b);,a=0.000000,b=1076428800,int a=10;float b=12.5;printf(“a=%d,b=%fn”,a,b);,a=10,b=12.500000,编译时能通过,则输出时为不正确的数据,输出时类型一定要一一对应,1234,1234,123.456000,k=1234,k=1234,f=123.456000,3.2 数据输出,3.2.3 使用printf函数时的注意事项,若格式说明中的个数少于输出项的个数时,则多余的输出项不予输出; 若格式说明中的个数多于输出项的个数时,则将输出一些毫无意义的数字。,例如:i

40、nt a=10,b=20,c=30; printf(“%d,%dn”,a,b,c);,10,20,int a=10,b=20,c=30;printf(“%d%d%d%dn”,a,b,c);,10,20,30,2367460,4. 在格式控制串中,除了合法的格式说明外,可以包含任意的合法字符,还可以 包括转义字符,这些字符在输出时将原样照印。,例如:printf(“mytnametistchenhaon”);,my name is chenhao,t为转义字符(制表符)代表八个空格字符,5. 如果需要输出百分号,则应该在格式控制串中用两个连续的百分号来表示。,例如: printf(“%d%”,1

41、00);,100%,6. printf函数的返回值通常是本次调用中输出字符的个数。,思考:printf(“mytnametistchenhaon”);函数的返回值是多少?,3.2 数据输出,3.2.3 使用printf函数时的注意事项,7. 思考:如:int k=8; printf(“%d,%dn”,k,+k);,9,9,8. 输出时,也可以用参数作为域宽。如:int m=8,i=10; printf(“%*d”,m,i);,jjjjjj10,123.4560000000,int m=8,n=10;float f=123.456;printf(“%*.*f”,m,n,f);,首先先对应匹配,然

42、后再输出,输出的过程,是按输入项从右往左,printf(“%8d”,i);,printf(“%8.10f”,f);,3.3 数据输入,3.3.1 scanf函数的一般调用形式,scanf(格式控制,输入项表),1. scanf函数的调用形式如下 :,作用:把从终端设备(如,键盘)上输入的数据传送给对应的输入项(如变量地址)。,双引号括起来的字符串,按照该指定的格式进行输入,把从键盘上输入的数据送到该指定的输入项中,输入项中必须为变量的地址,例如:int k; float a; double y;,scanf(“%d%f%lf”,函数名,输入格式控制,变量地址(实参),在scanf函数调用的后面

43、加一个分号就构成输入语句。,变量地址形式:&变量名,3.3 数据输入,3.3.1 scanf函数的一般调用形式,例:对于scanf函数的调用形式,请见下面的程序示例。,#include main()int a; float b; scanf(“%d%f”,scanf(“%d%f”,比如,想把23赋值给a,12.345赋值给b,输入形式为:,程序执行到此,停止执行,等待用户从键盘输入数据,等输入数据后,待用户安回车键后,继续向后执行。,23 12.345,a,b,输出结果为:,23,12.345000,23,12.345,3.3 数据输入,3.3.2 scanf函数中常用的格式说明,scanf函

44、数中的格式说明字符与输出函数中的格式说明字符相同。,在使用scanf函数进行输入时,应该注意以下几点:,1. 在格式控制中,格式说明的类型与输入项的类型,应该一一对应匹配。如果类 型不匹配,系统并不给出出错信息,但不可能得到正确的数据。,2. 在输入项表中,输入项的个数要与格式符的个数相同,且排列顺序要一一对应。若格式符个数少于输入项,scanf函数按格式符的数目结束输入,多余的输入项没有得到新的数据;若格式符个数多于输入项,scanf函数则按输入项的数目结束输入,多余的格式符不起作用(作废)。,例如:int a,b,c; scanf(“%d%d”,10,20,-858993460,比如说,我

45、们从键盘读入:,10 20 30,int a,b,c;scanf(“%d%d%d%d”,10,20,30,比如说,我们从键盘读入:,10 20 30 40,3.3 数据输入,3.3.2 scanf函数中常用的格式说明,在scanf函数中的格式字符前可以用一个整数指定输入数据所占宽度。,当输入函数的格式说明的类型与输入项的类型一一对应匹配时。程序在运行的过程中,当我们输入的数据个数少于输入项时,运行的程序将一直等待输入,直到满足要求时才继续向下执行;当我们输入的数据个数多于输入项时,多于的数据没有作废,依然在缓冲区中等待等待下一个输入操作语句。,5. scanf函数在调用结束后将返回一个函数值,

46、其值等于得到输入值的输入项的个数。,例如:int a; scanf(“%5d”,该输入函数正确的输入形式为:,88,输入宽度为5,思考: scanf(“%d%d%d%d”,函数的返回值是多少?,3.3 数据输入,3.3.3 通过scanf函数从键盘输入数据,1. 输入数值数据,例如:int k;float a;double y; scanf(“%d%f%lf”,若要给k赋值10,a赋值12.3,y赋值1234567.89,正确的输入格式如下:,10 12.3 1234567.89,10 12.3 1234567.89,1012.31234567.89,输入的数据之间必须用间隔符隔开可以使用的间

47、隔符有:空格、回车符、制表符,错误的输入格式:,1012.31234567.89,3.3 数据输入,3.3.3 通过scanf函数从键盘输入数据,2. 指定输入数据所占的宽度,例如:int k;float a;double y; scanf(“%3d%5f%5lf”,若从键盘上从第1列开始输入:,123456.789.123,用printf(“k=%d a=%f y=%fn”,k,a,y);输出的结果是:,k=123 a=456.700000 y=89.120000,k,y,a,123,456.7,89.12,3.3 数据输入,3.3.3 通过scanf函数从键盘输入数据,3. 跳过某个输入数

48、据,例如:int x,y,z; scanf(“%d%*d%d%d”,若从键盘上输入:,12 34 56 78,则输出的结果是:,12 56 78,3.3 数据输入,3.3.3 通过scanf函数从键盘输入数据,4. 在格式控制字符串中插入其他字符,又如:int x,y,z; scanf(“%d,%d,%d”,这时从键盘上输入时,一定要向下形式进行输入:,Please input x,y,z:12 34 56,在格式控制字符中出现了其他字符的语句如下:,int x,y,z;scanf(“Please input x,y,z:%d%d%d”,则正确的输入形式:,12,34,56,12, 34, 5

49、6,12, 34, 56,错误的输入形式:,12 34 56,12 ,34 ,56,3.4 复合语句和空语句,3.4.1 复合语句,复合语句是用符号和括起来的语句组,也可称为语句块,在语法上被视为一条语句。复合语句的语句形式如下:,语句1;语句2;语句n;,例如: a+ ; b*=a; printf(b= %d,b); ,3.4 复合语句和空语句,3.4.2 空语句,空语句由一个分号构成,但它是一个C语句,程序执行空语句时不产生任何操作。,如:main() ; ,3.5 程序举例,例3.1 以下程序由终端输入两个整数给变量x和y;然后输出x和y;在交换x和y中的值后,再输出x和y。验证两个变量

50、中的数是否正确地进行了交换。,程序分析:,输入两个整数分别给变量x和y。输出两个变量。交换两个变量中的值。再输出两个变量。,自然语言描述,开始,输入x、y,输出x、y,交换x和y中的值,输出x、y,结束,一般流程图描述,#include main()int x,y; printf(“Enter x,通过流程图,编写出程序,x,y,123,456,z,z=x;x=y;y=z;,交换x和y中的值;,z=x; x=y; y=z;,int z;,Enter x&y:,123 456,x=123y=456,x=456y=123,3.5 程序举例,例3.2 输入一个double类型的数,使该数保留小数点后

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号