1、1C语言程序设计 计算机科学学院2第2章 数据类型与基本运算基本数据类型基本数据类型常量和变量常量和变量运算符与表达式运算符与表达式标识符标识符数据类型转换数据类型转换基本输入和输出基本输入和输出应用举例应用举例计算机科学学院3回顾v程序是为执行一项任务而编写的有序指令集程序是为执行一项任务而编写的有序指令集v算法是解决问题的具体方法和步骤算法是解决问题的具体方法和步骤v流程图是算法的图形化表现形式流程图是算法的图形化表现形式vC C语言的特点语言的特点vC C程序的编译和运行过程程序的编译和运行过程v编译器将源程序转换成机器能理解的程序编译器将源程序转换成机器能理解的程序v连接器用于连接相关
2、的目标文件以生成可执行程序连接器用于连接相关的目标文件以生成可执行程序计算机科学学院4本章目标v理解变量和常量的含义理解变量和常量的含义v熟悉使用基本数据类型熟悉使用基本数据类型 -intint、charchar、float float 和和 doubledoublev使用使用各种各种运算符运算符v理解类型转换理解类型转换v熟练使用熟练使用 scanfscanf()()和和 printfprintf()()函数函数v熟练使用熟练使用 getchargetchar()()和和 putcharputchar()()函数函数计算机科学学院52.1 基本数据类型数据属于不同类别AfricaThe qu
3、ick brown foxTRUE数据 非数值数值整型非整型9002.129999/12/20032.175123Jackie Chanchar数据类型非数值数值整型intshort intlong intdoublefloat非整型计算机科学学院6整型名称名称全称类型说明符全称类型说明符缩写类型说明符缩写类型说明符位数位数 范围范围整型整型intint16-32768 至至+32767无符号整型无符号整型unsigned intunsigned160 至至 65,535短整型短整型short intshort16-32768 至至+32767无符号短整型无符号短整型unsigned shor
4、t intunsigned short160 至至 65,535长整型长整型long intlong32-2,147,483,648 至至 2,147,483,647无符号长整型无符号长整型unsigned long intunsigned long320 至至 4,294,967,295计算机科学学院7单精度浮点型 float 在 C 语言中用于存储单精度浮点数float32 位10-38 至 10+38,7位有效数字计算机科学学院8双精度浮点型内存内存floatdouble213.5671435568967 64位位取值范围:10-308 至 1030816 位有效数字计算机科学学院9年龄
5、:_保险总额:_性别:_字符型3-1 2398340 M int/floatchar计算机科学学院10字符型3-2 5 p$2 2 2+2=4 值值符号符号值值符号符号值值符号符号0空字符空字符44,9132空格空格45-9233!46.933447/9435#48 570 9 95-36$58:9637%59;97 122a z38&6012541)63?12642*64127DEL(Delete键键)43+65 90A Z 计算机科学学院11字符型3-3占 8 位内存signed或 unsignedSigned-128 至+127 unsigned 0 至 255 计算机科学学院122.2
6、 标识符v标识符标识符:是给程序中的实体是给程序中的实体(变量、常量、函数、变量、常量、函数、数组、结构体以及文件数组、结构体以及文件等等)所起的名字。所起的名字。系统定义标识符系统定义标识符C C语言中的标识符语言中的标识符用户定义标识符用户定义标识符计算机科学学院13系统定义标识符系统定义标识符系统定义标识符:是指具有固定名字和特定含义的标是指具有固定名字和特定含义的标识符,如识符,如intint、forfor、breakbreak等。等。关键字关键字系统定义标识符系统定义标识符 预定义标识符预定义标识符关键字关键字:又称保留字,是又称保留字,是C C语言规定的具有特定含语言规定的具有特定
7、含义的标识符。关键字必须用小写字母。义的标识符。关键字必须用小写字母。计算机科学学院14系统定义标识符-关键字数据类型数据类型存储类别存储类别语句命令字语句命令字运算符运算符intlongshortcharfloatdoublesignedunsignedautostaticregisterexterngotoreturnbreakcontinueif,else whiledoforsizeof计算机科学学院15系统定义标识符-预定义标识符12编译编译预处理预处理命令命令标准标准库函数库函数数学函数:数学函数:sqrt,fabs,sin,cos,pow等。输入输出函数:输入输出函数:scanf
8、,printf,getchar,putchar,gets,puts等。define,endef,include,ifdef,ifndef,endif,line,if,else等等计算机科学学院16用户定义标识符1 1以字母或下划线开头,由字母、数以字母或下划线开头,由字母、数字和下划线三种字符组成。字和下划线三种字符组成。2 2语言中有语言中有3232个关键字,每个关键个关键字,每个关键字都代表着某一固定含义。用户不字都代表着某一固定含义。用户不应采用与它们同名的标识符。应采用与它们同名的标识符。计算机科学学院172.3 常量和变量常量常量变量变量符号常量符号常量直接常量直接常量计算机科学学院
9、18程序程序指令指令C语言中的基本元素标识符标识符关键字关键字常量常量运算符运算符分隔符分隔符等等常量是在程序中保持不变的量常量用于定义具有如下特点的数据:在程序中保持不变在程序内部频繁使用需要用比较简单的方式替代某些值变量变量计算机科学学院19变量是在程序运行过程中可以被改变或者可以被赋予新的值变量的名变量的名变量的值变量的值计算机科学学院20变量命名在 C 语言中,变量命名需要遵循一定的规则有效名称有效名称principalcost_pricemarks_3lastnamecity无效名称无效名称123ratecurrency$discount%zip codev变量变量名名的命名规则:的
10、命名规则:变量名可以由变量名可以由字母、数字和字母、数字和 _ _(下划线)(下划线)组合组合而成而成 变量名不能包含除变量名不能包含除 _ _ 以外的任何特殊字符,以外的任何特殊字符,如:如:%、#、逗号、空格等、逗号、空格等 变量名必须以变量名必须以字母或字母或 _ _(下划线)(下划线)开头开头 变量名不能包含变量名不能包含空白字符空白字符(换行符、空格和制(换行符、空格和制表符称为空白字符)表符称为空白字符)C C 语言中的某些词(例如语言中的某些词(例如 intint 和和 float float 等)等)称为保留字,具有特殊意义,不能用作变量名称为保留字,具有特殊意义,不能用作变量
11、名 C C 语言语言区分大小写区分大小写,因此变量,因此变量 price price 与变量与变量 PRICE PRICE 是两个不同的变量是两个不同的变量计算机科学学院21变量程序内存编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个数据的值。通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。存储 RateRate*5%将值存储为DiscAmtRate-DiscAmt100.5将值存储为Result9.5计算机科学学院22声明和使用变量v声明变量:声明变量:DatatypeDatatype variablenamevari
12、ablename;v定义时初始化变量:定义时初始化变量:DatatypeDatatype variablenamevariablename=value;=value;v定义后初始化变量:定义后初始化变量:variablenamevariablename=value;=value;给变量赋值,除了给一个直接的值以外,还可以通过计算获得。注意:变量必须先定义后使用注意:变量必须先定义后使用计算机科学学院23使用整型变量v声明:声明:intint page_numberpage_number;long long intint population;population;unsigned unsign
13、ed intint age;age;v可按如下方式初始化:可按如下方式初始化:page_numberpage_number0;0;intint max_marksmax_marks=100;=100;在同一语句中可以声明多个类型相同的变量:int page_number,copies,paper_width;使用单精度浮点数使用单精度浮点数计算机科学学院24v声明:声明:floatfloat selling_priceselling_price;v初始化:初始化:floatfloat selling_priceselling_price=11.3;=11.3;selling_pricesell
14、ing_price=65.90;=65.90;使用双精度浮点数使用双精度浮点数计算机科学学院25v声明:声明:doubledouble pressure_levelpressure_level;v初始化:初始化:pressure_levelpressure_level=213.5671435568967;=213.5671435568967;doubledouble dvaluedvalue=35.4;=35.4;使用字符型数据使用字符型数据计算机科学学院26char gender;gender=m;char gender=m;2.4 运算符与表达式 计算机科学学院27算术运算符和表达式赋值运
15、算符和表达式关系运算符和表达式逻辑运算符和逻辑表达式条件运算符和条件表达式逗号运算符和逗号表达式其他运算符运算符运算符计算机科学学院281 基本算术运算符基本算术运算符算术运算符和算术表达式3-1+加法运算符,如2+3,x+y。-减法运算符,如3-2,x-y*乘法运算符,如4*6,x*y/除法运算符,如5/3,x/y%求余运算符,如11%3,x%y若若/两边是整型数据,两边是整型数据,则结果是整型数据则结果是整型数据(向零取整向零取整),否则),否则为实型数据为实型数据要求两边必须要求两边必须是整型数据是整型数据2 自增(“+”)自减(“-”)运算符p 都是单目运算符,而且运算对象必须是变量,
16、不能是常量。p 结合方向都是“自右至左”,它们的作用是使运算对象的值加1或减1。p 可以作前置运算符(如+x和-x),也可以作后置运算符。p 不考虑表达式值的情况下,前缀运算和后缀运算的效果完全相同 算术运算符和算术表达式3-2【程序源代码】main()int i,x,y;i=5;x=i+;printf(i=%d,x=%dn,i,x);i=5;y=+i;printf(i=%d,y=%dn,i,y);【例2-6】分析下列程序的输出结果。后缀运算,先把后缀运算,先把i的值的值赋给赋给x,然后,然后i的值加的值加1前缀运算,先使前缀运算,先使i的值加的值加1,然后将,然后将i的值赋给的值赋给y【程序
17、运行结果程序运行结果】i=6,x=5i=6,y=6分析程序【例2-7】分析下列程序的输出结果。main()int a=3,b=5,c;c=(+a)*b;printf(a=%d,c=%dn,a,c);a=3;b=5;c=(a+)*b;printf(a=%d,c=%dn,a,c);a的值先加的值先加1,a的值变成了的值变成了4,然后,然后再将此值与再将此值与b相乘,即相乘,即c=4*5;a的值先与的值先与b相乘相乘,即即c=3*5,然后然后a的值加的值加1变成了变成了4。【程序运行结果】a=4,c=20 a=4,c=15分析程序用算术运算符或圆括号将运算对象(常量、变量和函数)连接起来的式子。例如
18、:x*y%c-0.9+A,a*b/c+8.2 都是合法的算术表达式。算术运算符和算术表达式3-3进行算术运算时,应注意:u 算术运算符的优先级别是先乘除后加减;u 当运算符的优先级别相同时,应按照运算符的结合方向处理,算术运算符的结合方向为“自左至右”。程序分析例如:计算下列两个表达式的值:(1)2*3+6 (2)2*(3+6)【例2-8】分析下列程序的输出结果,注意其中的算术表达式。main()int a,b,c;a=6;b=6;c=6;a=+b-+c;printf(%d,%d,%dn,a,b,c);a=+b+c+;printf(%d,%d,%dn,a,b,c);a=b-+-c;printf
19、(%d,%d,%dn,a,b,c);【程序运行结果程序运行结果】0,7,715,8,815,7,7分析程序a=(+b)-(+c)a=(+b)+(c+)a=(b-)+(-c)复习:第二次课重点内容复习:第二次课重点内容计算机科学学院361、变量类型说明符 变量名2、算术运算符重点注意:自增(“+”)自减(“-”)运算符“/”和“”结合性1赋值运算符“=”作用:将一个数据赋给一个变量。在赋值运算符“=”之前加上其他运算符,就构成了复合赋值运算符。赋值运算符和赋值表达式2-1C语言中总共有10种复合赋值运算符:+=,加赋值运算符 -=,减赋值运算符 *=,乘赋值运算符 /=,除赋值运算符%=,取余赋
20、值运算符&=,位与赋值运算符|=,位或赋值运算符 =,异或赋值运算符=,右移赋值运算符 2赋值表达式由赋值运算符“=”将一个变量和表达式连接起来的式子。一般格式为:变量=表达式;赋值运算符和赋值表达式2-2注意:(1)赋值运算符左边必须是变量。被赋值变量的值就是赋值表达式的值。(2)当赋值表达式中左边变量与右边表达式的数据类型不同时,需要进行类型转换。转换规则是:右边表达式的值被转换成左边变量的数据类型,然后再赋值给变量。【例2-9】分析下列程序的输出结果。#include stdio.hmain()float a,b=1;a=3/2;b+=b;printf(a=%fn,a);printf(“
21、b=%fn,b);【程序运行结果】a=1.000000分析程序相当于相当于b=b+b;计算机科学学院40【例2-10】分析下列程序的输出结果。#include stdio.hmain()int a=10;a=a*=a;printf(a=%dn,a);【程序运行结果】a=200 a=a*a a=a+a注意变量注意变量a值的变化值的变化复习:第二次课重点内容复习:第二次课重点内容计算机科学学院411、变量类型说明符 变量名2、算术运算符重点注意:自增(“+”)自减(“-”)运算符“/”和“”结合性3、赋值运算符重点注意:赋值运算符左边必须是变量 复合赋值运算符的计算(注意变量值的变化)结合性 1关
22、系运算符关系运算符用于比较两个运算对象的大小。C语言提供的关系运算符,如下所示:关系运算符和关系表达式 ,小于运算符 ,大于运算符=,大于等于运算符=,等于运算符!=,不等于运算符 使用关系运算符,应注意优先级:关系运算符和关系表达式p前4个运算符(,=,关系赋值2关系表达式 关系表达式就是用关系运算符将两个或两个以上运算对象连接起来的式子。其中运算对象可以是常量、变量或表达式。关系运算符和关系表达式关系表达式的运算结果有两种:“真”或“假”。在C语言中用1表示“真”,用0表示“假”。【例例2-11】若有定义如下:若有定义如下:char c=d;int m=2,n=5;求下列各表达式的值。求下
23、列各表达式的值。(1)c+1=e(2)c+A-a!=D(3)m-2*n=n+9(4)m=2b)&(y=ba)的值及变量x和y的值。【分析】求表达式“(x=ab)&(y=ba)”的值,先求表达式“(x=ab)”的值。ab为假,变量x的值为0,表达式“(x=ab)”的值为假。对于运算符“&”,左边的运算对象为0,则右边的表达式“(y=ba)”不再进行求解,表达式“(x=ab)&(y=ba)”的值为0,变量y的值不变。【结果】x=0 y=7逻辑运算符示例严格执行严格执行“短路计算短路计算”程序分析【例2-13】分析下列程序的输出结果,注意其中的逻辑表达式。main()int a,b,c;a=b=c=
24、1;+a&-b&+c;printf(%d,%d,%dn,a,b,c);a=b=c=1;-a|+b|+c;printf(%d,%d,%dn,a,b,c);a=b=c=-1;+a&+b|+c;printf(%d,%d,%dn,a,b,c);a=b=c=0;+a|-b&-c;printf(%d,%d,%dn,a,b,c);【程序运行结果】2,0,10,2,10,-1,01,0,0严格执行短路计算严格执行短路计算C语言程序设计第二章 数据类型、运算符和表达式 SCS-SWPU50例:例:用逻辑表达式来表示闰年的条件用逻辑表达式来表示闰年的条件能被能被4整除,但不能被整除,但不能被100整除。整除。能被
25、能被400整除。整除。(year%4=0&year%100!=0)|year%400=0 值为真值为真(1)是闰年,否则为非闰年。是闰年,否则为非闰年。逻辑运算符的实际应用逻辑运算符的实际应用C语言程序设计第二章 数据类型、运算符和表达式 SCS-SWPU51例:能且只能被和中的一个数整除。例:能且只能被和中的一个数整除。(m%3=0)&(m%2!=0)|(m%2=0)&(m%3!=0)例:例:ch是大写字母。是大写字母。ch=A&ch=Z 思考思考上述命题可否描述为上述命题可否描述为 A chy?y:cd?x:y);注意:算术关系逻辑条件赋值【例2-14】输入两个整数,求最大数。计算机科学学
26、院54【分析】输入模块(输入数据):a和b;处理模块:比较a和b的大小,将大的赋值给max;输出模块(输出数据):max;【流程图】开始开始接受接受 a a和和b bMax=a显示显示 max结束结束ab?Max=b否否是是利用条件表利用条件表达式实现达式实现#include stdio.hmain()int a,b,max;printf(input a,b:);scanf(%d,%d,&a,&b);max=ab?a:b;printf(the max is%dn,max);【程序运行结果】input a,b:4,5 the max is 5程序代码:思考:条件表达式思考:条件表达式的应用对象?
27、的应用对象?1逗号运算符逗号“,”是一种特殊的运算符,用于将若干个表达式连接起来。2逗号表达式用逗号运算符将各种类型的表达式连接成的式子。逗号表达式的一般格式为:表达式1,表达式2,表达式n逗号运算符和逗号表达式逗号表达式的运算规则是:先计算表达式1,再计算表达式2,依次计算到表达式n。最后一个表达式的值就是整个逗号表达式的值。逗号运算符练习逗号运算符练习计算机科学学院57位运算符和位表达式1位运算符 位运算符是对二进制位进行运算。C语言提供了4个逻辑运算符,分别是:同为1结果为1,否则为0&:按位与 有一个为1,结果为1,否则为0|:按位或 按位取反:按位取反 相同为0,不同为1:按位异或1
28、移位运算符(右移)2移位表达式移位表达式的一般格式为:表达式1表达式2移位算符和移位表达式其中:表达式1是移位对象,表达式2是移位位数。注意:右移后前方置1还是0由系统决定。1sizeof运算符 求字节数运算符,可以计算某一种类型数据所占存储单元的字节个数。它是单目运算符。格式:sizeof()2使用说明 sizeof运算符的运算对象只能是变量名或数据类型标识符。其他运算符程序分析计算机科学学院61【例2-15】分析下列程序的输出结果,注意其中sizeof运算符的应用。main()float m;printf(char:%d bytesn,sizeof(char);printf(float:%
29、d bytesn,sizeof(float);printf(m:%d bytesn,sizeof(m);【程序运行结果】char:1 bytesfloat:4 bytesm:4 bytes小结:常用运算符优先级小结:常用运算符优先级计算机科学学院62v思考以下问题的结果:思考以下问题的结果:3+2.5a+3A+12.34计算机科学学院632.6 数据类型转换v以不丢失结果精度为原则以不丢失结果精度为原则计算机科学学院642.6 数据类型转换v 自动类型转换自动类型转换 原则:把表示范围小的类型的值转换到表示范围大的原则:把表示范围小的类型的值转换到表示范围大的类型的值类型的值 short sh
30、ort intint long long float float double double 例:已知例:已知char a;char a;intint b;float c;double d;b;float c;double d;则表达式则表达式a+b+c+da+b+c+d的结果为()型的结果为()型v 强制类型转换强制类型转换 语法:语法:(类型名类型名)变量或数值变量或数值 例如:例如:intint a=5,b=3;a=5,b=3;float float ququ=(floatfloat)a/b;a/b;由系统自动由系统自动进行进行注意:两边的括注意:两边的括号一定不能省略号一定不能省略C语
31、言程序设计算法的描述 SCS-SWPU652.7 C数据输入与输出的实现数据输入与输出的实现从计算机向外部输出设备从计算机向外部输出设备(显示器显示器,打印机打印机)输出数据。输出数据。从输入设备从输入设备(键盘键盘,鼠标鼠标,扫描仪扫描仪)向计算机向计算机 输入数据。输入数据。(二二)C)C语言本身不提供输入输出语句语言本身不提供输入输出语句,输入和输出输入和输出操作是由操作是由C C函数库中的函数来实现的函数库中的函数来实现的例如例如:字符输入函数字符输入函数:getchar 字符输出函数字符输出函数:putchar 格式输入函数格式输入函数:scanf 格式输出函数格式输出函数:prin
32、tf 字符串输入函数字符串输入函数:gets 字符串输出函数字符串输出函数:putsC语言程序设计算法的描述 SCS-SWPU662.7 C数据输入与输出的实现数据输入与输出的实现C语言程序设计算法的描述 SCS-SWPU67(三三)在使用系统库函数时在使用系统库函数时,要用预编译命令要用预编译命令“#include”#include”将有关的将有关的“头文件头文件”包括到用户源文件包括到用户源文件中中例如:在调用标准输入输出库函数时,应该有:例如:在调用标准输入输出库函数时,应该有:#include“stdio.h”或:或:#include 2.7 C数据输入与输出的实现数据输入与输出的实现
33、计算机科学学院68字符型变量字符型数据字符型数据2.7.1 字符数据的输入输出字符数据的输入输出接受并显示字符C语言程序设计算法的描述 SCS-SWPU692.7.1 字符数据的输入输出字符数据的输入输出1、putchar()函数的用法函数的用法p putchar()是向标准输出设备上输出是向标准输出设备上输出一个字符一个字符,一,一般是显示器。般是显示器。p 使用格式:使用格式:putchar(ch);已定义:已定义:int c;c=A;若想输出字符若想输出字符A,可以用几种方式?,可以用几种方式?putchar(c);或或 putchar(A);或或 putchar(65);putchar
34、(0101);或或 putchar(0 x41);或或putchar(101);注意:注意:ch可以是字符可以是字符常量或字符变量,也常量或字符变量,也可以是整型常量或整可以是整型常量或整型变量,不能是字符型变量,不能是字符串串C语言程序设计算法的描述 SCS-SWPU70例例 输出单个字符。输出单个字符。#includevoid main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);运行结果:运行结果:BOYputchar(a);putchar(n);putchar(b);putchar(n);put
35、char(c);putchar(n);运行结果:运行结果:B O Y2.7.1 字符数据的输入输出字符数据的输入输出C语言程序设计算法的描述 SCS-SWPU71 2、getchar()函数的用法函数的用法p从标准输入设备上输入从标准输入设备上输入一个一个字符,一般是字符,一般是键盘键盘p使用格式:使用格式:ch=getchar();例例#include void main()char c;c=getchar();putchar(c);#include void main()putchar(getchar();键盘上输入的键盘上输入的数字数字、空格空格、回车回车、逗号等逗号等都将作为一个字符输
36、入都将作为一个字符输入2.7.1 字符数据的输入输出字符数据的输入输出计算机科学学院72#include void main()char a,b;printf(请输入两个字符:n);a=getchar();fflush(stdin);b=getchar();fflush(stdin);putchar(a);putchar(b);putchar(n);getchar()和putchar()示例内存内存abOK输出:请输入两个字符:OKOKPress any key to continue_C语言程序设计算法的描述 SCS-SWPU732.7.2 格式输出函数格式输出函数printf例如:例如:p
37、rintf(“a=%d,b=%f,a,b);调用格式:调用格式:printf(“格式控制字符串格式控制字符串”,输出列表输出列表);格式控制:格式说明(格式控制:格式说明(%格式字符)格式字符)+普通字符普通字符 输出列表:即需要输出的数据,可以是表达式输出列表:即需要输出的数据,可以是表达式 函数名C语言程序设计算法的描述 SCS-SWPU74 符号 作用%c单个字符单个字符%s 输出字符串输出字符串%d十进制有符号整数十进制有符号整数%u 输出无符号十进制整数输出无符号十进制整数%o 无输出无符号八进制整数无输出无符号八进制整数(不输出前缀不输出前缀0)%x,%X 输出无符号十六进制整数输
38、出无符号十六进制整数(不输出前缀不输出前缀0 x)%f 输出十进制输出十进制float数,不带域宽时,保留数,不带域宽时,保留6位小数位小数%lf输出十进制输出十进制double数,不带域宽时,保留数,不带域宽时,保留6位小数位小数%le以以“科学记数法科学记数法”的形式输出的形式输出double数数 如如2.4e+02%e以以“科学记数法科学记数法”的形式输出的形式输出float数数 如如2.4e+02%g选用选用e或或f格式中较短的一个输出浮点数,不输出无效零格式中较短的一个输出浮点数,不输出无效零%p 指针的值指针的值 2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符
39、C语言程序设计算法的描述 SCS-SWPU75格式符格式符按十进制整数的实际长度输出数据按十进制整数的实际长度输出数据#include stdio.h /*包含头文件包含头文件*/main()/*主函数主函数*/int x,y,z;/*定义变量定义变量*/x=3;y=1;/*给变量赋值给变量赋值*/z=x+y;/*求求a与与b的和的和*/printf(“%d+%d=%dn”,x,y,z);/*输出结果输出结果*/2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符v例题:例题:从屏幕输入圆柱体的底面圆的半径从屏幕输入圆柱体的底面圆的半径r和高和高h,求圆柱体的表面积,求圆柱体的
40、表面积C语言程序设计算法的描述 SCS-SWPU76#include#define PI 3.14159void main()float r,h;double area;printf(input the r and h:n);scanf(%f%f,&r,&h);area=2*PI*r*r+2*PI*r*h;printf(%lfn,area);2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符默认情况下精确到六位小数C语言程序设计算法的描述 SCS-SWPU77若实际位数多于定义的宽度:则按实际位数输出。若实际位数多于定义的宽度:则按实际位数输出。若实际位数少于定义的宽度:默认
41、右对齐,有负号左对齐若实际位数少于定义的宽度:默认右对齐,有负号左对齐n:精度精度m:域宽,即输出项在输出设备上所占的域宽,即输出项在输出设备上所占的宽度宽度n 输出输出实型数据实型数据,n指定实型数据所占的小数位数指定实型数据所占的小数位数n 输出输出字符串字符串,n指定最多输出的字符个数指定最多输出的字符个数2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符计算机科学学院78int salary=5500;printf(%10d,salary);输出结果:5500输出结果的左边显示了 6 个空格%10d 2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符
42、计算机科学学院79double mercury_level=168.2251074;printf(%7.2f,mercury_level);输出结果:168.23宽度:表示所有的数字和小数点所占的位数。不够7位右对齐。%7.2f 精度:精确到小数点后多少位2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符计算机科学学院80double mercury_level=168.2251074;printf(%7.2f,mercury_level);输出结果:168.23宽度,表示所有的数字和小数点所占的位数。不够7位右对齐。%7.2f 精度(精确到小数点后多少位)C语言程序设计算法
43、的描述 SCS-SWPU81 标志:标志:-、+、#、空格、空格、0 0的意义如下所示:的意义如下所示:-结果左对齐,右边填空格结果左对齐,右边填空格 +输出符号输出符号(正号或负号正号或负号)()(只对十进制数)只对十进制数)空格空格输出值为正时冠以空格,为负时冠以负号输出值为正时冠以空格,为负时冠以负号#对对c,s,d,i,u类无影响;对类无影响;对o(八进制八进制)类类,在输出时在输出时加前缀加前缀 0;对;对x(十六进制十六进制)类类,在输出时加前缀在输出时加前缀0 x;对对e,g,f 类,确保出现小数点,即使无小数位时类,确保出现小数点,即使无小数位时亦如此亦如此 0右对齐输出数据时
44、,不够宽度补右对齐输出数据时,不够宽度补0 2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符C语言程序设计算法的描述 SCS-SWPU82#include stdio.hvoid main()float f,g;f=1.27;g=23.2;printf(%f+%f=%fn,f,g,f+g);在输出的数字中并非全部数字都是有效数字在输出的数字中并非全部数字都是有效数字l单精度实数的有效位数一般为位;单精度实数的有效位数一般为位;l双精度实数的有效位数一般为双精度实数的有效位数一般为16位位printf(%2.2f+%2.2f=%4.2fn,f,g,f+g);2.7.2 格式输
45、出函数格式输出函数printf的格式字符的格式字符C语言程序设计算法的描述 SCS-SWPU83例例1:printf(“%d,%4d,%-4d,%4d”,a,a,a,b);若若a=123,b=12345 则输出结果是:则输出结果是:123,123,12312345例例2:printf(%lf,%8.2lfn,b,b);若若b=123.4567 则输出结果是:则输出结果是:123.456700,123.46例例3:printf(“%s,%8s,%8.3s”,“china”,“china”,“china”);则输出结果是:则输出结果是:china,china,chi2.7.2 格式输出函数格式输出
46、函数printf的格式字符的格式字符计算机科学学院84转义序列输出结果:Name:Audrey HepburnMovie:Roman Holiday代码:printf(“Name:Audrey Hepburn n Movie:Roman Holiday”);转义序列允许在输出结果中包括特殊字符转义序列名称描述a 警告警告产生一则警告。产生一则警告。b 退格退格将光标回退一格。将光标回退一格。f 换页换页将光标移到下一页的第一格。将光标移到下一页的第一格。n 换行换行将光标移到下一行的第一格。将光标移到下一行的第一格。r 回车回车将光标移到当前行的第一格。将光标移到当前行的第一格。t 水平制表水
47、平制表 将光标移到下一个水平制表位置。将光标移到下一个水平制表位置。v 垂直制表垂直制表将光标移到下一个垂直制表位置。将光标移到下一个垂直制表位置。单引号单引号产生一个单引号。产生一个单引号。双引号双引号产生一个双引号。产生一个双引号。?问号问号产生一个问号。产生一个问号。反斜线反斜线产生一条反斜线。产生一条反斜线。0 空空产生一个空字符。产生一个空字符。C语言程序设计算法的描述 SCS-SWPU85#include main()int a=100;float b=123.255;printf(a=%dn,a);printf(a=%10dn,a);printf(a=%-10dn,a);prin
48、tf(a=%+dn,a);printf(a=%dn,a);printf(a=%#on,a);printf(a=%#xn,a);printf(b=%07.1fn,b);/a=100/a=100/a=100 /a=+100/a=100/a=0144/a=0 x64/b=00123.3例例42.7.2 格式输出函数格式输出函数printf的格式字符的格式字符C语言程序设计算法的描述 SCS-SWPU86printf 函数的注意事项函数的注意事项 格式控制必须与输出项匹配,否则不能正确输出格式控制必须与输出项匹配,否则不能正确输出 请判断下列输出是否正确:请判断下列输出是否正确:main()int a
49、=65;printf(%f,a);main()int a=65;printf(%dn,a);main()int a=65;printf(%c,a);2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符输出数据的类型必须与格式控制匹配输出数据的类型必须与格式控制匹配C语言程序设计算法的描述 SCS-SWPU87例如:例如:main()int x,y;x=11/3;y=5;printf(%d,%dn,x,y);程序的运行结果为:程序的运行结果为:%d,%3 C语言规定,在格式控制字符串中若连续出现两个语言规定,在格式控制字符串中若连续出现两个“”,系统视为一个系统视为一个“”字符输
50、出。字符输出。2.7.2 格式输出函数格式输出函数printf的格式字符的格式字符计算机科学学院88scanf(%d,&num);scanf 函数从标准输入(键盘)读取信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的程序变量。格式控制字符串&符号(附在读取的每个变量上)用于指明变量在内存中的位置变量的名称格式控制字符串参数变量的类型要求的实际输入%dint 十进制数字序列十进制数字序列%ld long 十进制数字序列十进制数字序列%f float 十进制数,可以有小数点及指数部分十进制数,可以有小数点及指数部分%lf double 十进制数,可以有小数点及指数部分
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。