数据类型与基本运算课件_第1页
数据类型与基本运算课件_第2页
数据类型与基本运算课件_第3页
数据类型与基本运算课件_第4页
数据类型与基本运算课件_第5页
已阅读5页,还剩209页未读 继续免费阅读

下载本文档

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

文档简介

1C语言程序设计

1C语言程序设计计算机科学学院2第2章数据类型与基本运算

1基本数据类型常量和变量运算符与表达式标识符数据类型转换基本输入和输出

2

3

4

5

6应用举例

7计算机科学学院2第2章数据类型与基本运算1基本数据类型常计算机科学学院3回顾程序是为执行一项任务而编写的有序指令集算法是解决问题的具体方法和步骤流程图是算法的图形化表现形式C语言的特点C程序的编译和运行过程编译器将源程序转换成机器能理解的程序连接器用于连接相关的目标文件以生成可执行程序计算机科学学院3回顾程序是为执行一项任务而编写的有序指令集计算机科学学院4本章目标理解变量和常量的含义熟悉使用基本数据类型

-int、char、float和double使用各种运算符理解类型转换熟练使用scanf()和printf()函数熟练使用getchar()和putchar()函数计算机科学学院4本章目标理解变量和常量的含义计算机科学学院52.1基本数据类型数据属于不同类别AfricaThequickbrownfoxTRUE数据

非数值数值整型非整型9002.129999/12/20032.175123JackieChanchar数据类型非数值数值整型intshortintlongintdoublefloat非整型计算机科学学院52.1基本数据类型数据属于不同类别Afri计算机科学学院6整型名称全称类型说明符缩写类型说明符位数范围整型intint16-32768至+32767无符号整型unsignedintunsigned160至65,535短整型shortintshort16-32768至+32767无符号短整型unsignedshortintunsignedshort160至65,535长整型longintlong32-2,147,483,648至2,147,483,647无符号长整型unsignedlongintunsignedlong320至4,294,967,295计算机科学学院6整型名称全称类型说明符缩写类型说明符位数范围计算机科学学院7单精度浮点型float在C

语言中用于存储单精度浮点数float32位10-38

10+38,7位有效数字计算机科学学院7单精度浮点型float在C语言中用于计算机科学学院8双精度浮点型内存floatdouble213.5671435568967

64位取值范围:10-308

至1030816

位有效数字计算机科学学院8双精度浮点型内存floatdouble213计算机科学学院9在线保险单年龄:_____保险总额:_____性别:_____字符型3-12398340'M'数值型字符型int/floatchar计算机科学学院9在线保险单字符型3-12398340'M计算机科学学院10字符型3-2'''5''p''$'

有效的字符型值"2"

'2'

正确'2'+'2'=4

X值符号值符号值符号0空字符44,91[32空格45-92\33!46.93]34"47/94^35#48~570~9

95-36$58:96`37%59;97~122a~z38&60<123{39'61=124|40(62>125}41)63?126~42*64@127DEL(Delete键)43+65~90A~Z

计算机科学学院10字符型3-2''有效的字符型值"2"计算机科学学院11字符型3-3char占8位内存signed或

unsignedSigned-128至

+127

unsigned0至

255计算机科学学院11字符型3-3char占8位内存sign计算机科学学院122.2标识符标识符:是给程序中的实体

(变量、常量、函数、数组、结构体以及文件等)所起的名字。系统定义标识符C语言中的标识符用户定义标识符计算机科学学院122.2标识符标识符:是给程序中的实体计算机科学学院13系统定义标识符系统定义标识符:是指具有固定名字和特定含义的标识符,如int、for、break等。关键字系统定义标识符预定义标识符关键字:又称保留字,是C语言规定的具有特定含义的标识符。关键字必须用小写字母。计算机科学学院13系统定义标识符系统定义标识符:是指具有固定计算机科学学院14系统定义标识符-关键字数据类型存储类别语句命令字运算符intlong

short

char

float

double

signed

unsigned

……auto

static

register

externgoto

return

break

continue

if,elsewhile

do

for

……sizeof计算机科学学院14系统定义标识符-关键字数据类型存储类别语计算机科学学院15系统定义标识符-预定义标识符12编译预处理命令标准库函数数学函数:sqrt,fabs,sin,cos,pow等。输入输出函数:scanf,printf,getchar,

putchar,gets,puts等。define,endef,include,ifdef,ifndef,endif,line,if,else等计算机科学学院15系统定义标识符-预定义标识符12编译标准计算机科学学院16用户定义标识符1以字母或下划线开头,由字母、数字和下划线三种字符组成。2C语言中有32个关键字,每个关键字都代表着某一固定含义。用户不应采用与它们同名的标识符。计算机科学学院16用户定义标识符1以字母或下划线开头,由字母计算机科学学院172.3常量和变量常量变量符号常量直接常量计算机科学学院172.3常量和变量常量变量符号常量直接常量计算机科学学院18程序指令C语言中的基本元素标识符关键字常量运算符分隔符等常量是在程序中保持不变的量常量用于定义具有如下特点的数据:在程序中保持不变在程序内部频繁使用需要用比较简单的方式替代某些值计算机科学学院18程序指令C语言中的基本元素标识符常量是在程变量计算机科学学院19变量是在程序运行过程中可以被改变或者可以被赋予新的值变量的名变量的值变量计算机科学学院19变量是在程序运行过程中可以被改变或者可计算机科学学院20变量命名在C语言中,变量命名需要遵循一定的规则有效名称principalcost_pricemarks_3lastnamecity无效名称123ratecurrency$discount%zipcode变量名的命名规则:变量名可以由字母、数字和_(下划线)组合而成变量名不能包含除_以外的任何特殊字符,如:%、#、逗号、空格等变量名必须以字母或

_(下划线)开头变量名不能包含空白字符(换行符、空格和制表符称为空白字符)C语言中的某些词(例如int和float等)称为保留字,具有特殊意义,不能用作变量名C语言区分大小写,因此变量price与变量PRICE是两个不同的变量计算机科学学院20变量命名在C语言中,变量命名需要遵循一计算机科学学院21变量程序内存编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个数据的值。通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。存储RateRate*5%将值存储为DiscAmtRate-DiscAmt100.5将值存储为Result9.5计算机科学学院21变量程序内存编写程序时,常常需要将数据存储计算机科学学院22声明和使用变量声明变量:Datatypevariablename;定义时初始化变量:Datatypevariablename=value;定义后初始化变量:variablename=value;给变量赋值,除了给一个直接的值以外,还可以通过计算获得。注意:变量必须先定义后使用计算机科学学院22声明和使用变量声明变量:给变量赋值,除了给计算机科学学院23使用整型变量声明:intpage_number;longintpopulation;unsignedintage;可按如下方式初始化:page_number=0;intmax_marks=100;在同一语句中可以声明多个类型相同的变量:intpage_number,copies,paper_width;计算机科学学院23使用整型变量声明:在同一语句中可以声明多个使用单精度浮点数计算机科学学院24声明:floatselling_price;初始化:floatselling_price=11.3;selling_price=65.90;使用单精度浮点数计算机科学学院24声明:使用双精度浮点数计算机科学学院25声明:doublepressure_level;初始化:pressure_level=213.5671435568967;doubledvalue=35.4;使用双精度浮点数计算机科学学院25声明:使用字符型数据计算机科学学院26chargender;gender='m';chargender='m';使用字符型数据计算机科学学院26chargender;ch2.4运算符与表达式

计算机科学学院27算术运算符和表达式赋值运算符和表达式关系运算符和表达式逻辑运算符和逻辑表达式条件运算符和条件表达式逗号运算符和逗号表达式其他运算符2.4运算符与表达式计算机科学学院27算术运算符和表达式运算符运算符单目运算符双目运算符三目运算符计算机科学学院28运算符运算符单目运算符双目运算符三目运算符计算机科学学院281基本算术运算符算术运算符和算术表达式3-1+加法运算符,如2+3,x+y。-减法运算符,如3-2,x-y*乘法运算符,如4*6,x*y/除法运算符,如5/3,x/y%求余运算符,如11%3,x%y若/两边是整型数据,则结果是整型数据(向零取整),否则为实型数据要求两边必须是整型数据1基本算术运算符算术运算符和算术表达式3-1+加法运算符2自增(“++”)自减(“--”)运算符都是单目运算符,而且运算对象必须是变量,不能是常量。结合方向都是“自右至左”,它们的作用是使运算对象的值加1或减1。可以作前置运算符(如++x和--x),也可以作后置运算符。不考虑表达式值的情况下,前缀运算和后缀运算的效果完全相同

算术运算符和算术表达式3-22自增(“++”)自减(“--”)运算符算术运算符和算术表【程序源代码】main(){ inti,x,y; i=5; x=i++; printf("i=%d,x=%d\n",i,x); i=5; y=++i; printf("i=%d,y=%d\n",i,y);}【例2-6】分析下列程序的输出结果。后缀运算,先把i的值赋给x,然后i的值加1前缀运算,先使i的值加1,然后将i的值赋给y【程序运行结果】i=6,x=5i=6,y=6分析程序【程序源代码】【例2-6】分析下列程序的输出结果。后缀运算【例2-7】分析下列程序的输出结果。main(){ inta=3,b=5,c;

c=(++a)*b; printf("a=%d,c=%d\n",a,c); a=3; b=5;

c=(a++)*b; printf("a=%d,c=%d\n",a,c);}a的值先加1,a的值变成了4,然后再将此值与b相乘,即c=4*5;a的值先与b相乘,即c=3*5,然后a的值加1变成了4。【程序运行结果】a=4,c=20a=4,c=15分析程序【例2-7】分析下列程序的输出结果。a的值先加1,a的值变成用算术运算符或圆括号将运算对象(常量、变量和函数)连接起来的式子。例如:

x*y%c-0.9+'A',a*b/c+8.2

都是合法的算术表达式。算术运算符和算术表达式3-3进行算术运算时,应注意:算术运算符的优先级别是先乘除后加减;当运算符的优先级别相同时,应按照运算符的结合方向处理,算术运算符的结合方向为“自左至右”。用算术运算符或圆括号将运算对象(常量、变量和函数)连接起来的程序分析例如:计算下列两个表达式的值:(1)2*3+6(2)2*(3+6)程序分析例如:计算下列两个表达式的值:【例2-8】分析下列程序的输出结果,注意其中的算术表达式。main(){inta,b,c;a=6;b=6;c=6;a=++b-++c;printf("%d,%d,%d\n",a,b,c);a=++b+c++;printf("%d,%d,%d\n",a,b,c);a=b--+--c;printf("%d,%d,%d\n",a,b,c);}【程序运行结果】0,7,715,8,815,7,7分析程序a=(++b)-(++c)a=(++b)+(c++)a=(b--)+(--c)【例2-8】分析下列程序的输出结果,注意其中的算术表达式。【复习:第二次课重点内容计算机科学学院361、变量

类型说明符变量名2、算术运算符重点注意:※

自增(“++”)自减(“--”)运算符※“/”和“%”※结合性复习:第二次课重点内容计算机科学学院361、变量1.赋值运算符“=”作用:将一个数据赋给一个变量。在赋值运算符“=”之前加上其他运算符,就构成了复合赋值运算符。赋值运算符和赋值表达式2-1C语言中总共有10种复合赋值运算符:+=,加赋值运算符-=,减赋值运算符*=,乘赋值运算符/=,除赋值运算符%=,取余赋值运算符&=,位与赋值运算符|=,位或赋值运算符^=,异或赋值运算符<<=,左移赋值运算符>>=,右移赋值运算符1.赋值运算符“=”赋值运算符和赋值表达式2-1C语言中总共2.赋值表达式由赋值运算符“=”将一个变量和表达式连接起来的式子。一般格式为:

变量=表达式;赋值运算符和赋值表达式2-2注意:(1)赋值运算符左边必须是变量。被赋值变量的值就是赋值表达式的值。(2)当赋值表达式中左边变量与右边表达式的数据类型不同时,需要进行类型转换。转换规则是:右边表达式的值被转换成左边变量的数据类型,然后再赋值给变量。2.赋值表达式赋值运算符和赋值表达式2-2注意:【例2-9】分析下列程序的输出结果。#include"stdio.h"main(){ floata,b=1; a=3/2;

b+=b; printf("a=%f\n",a); printf(“b=%f\n",b);}【程序运行结果】a=1.000000分析程序相当于b=b+b;【例2-9】分析下列程序的输出结果。【程序运行结果】分析程序计算机科学学院40【例2-10】分析下列程序的输出结果。#include"stdio.h"main(){ inta=10;

a+=a*=a; printf("a=%d\n",a);}【程序运行结果】a=200a=a*aa=a+a注意变量a值的变化计算机科学学院40【例2-10】分析下列程序的输出结果。【程复习:第二次课重点内容计算机科学学院411、变量

类型说明符变量名2、算术运算符重点注意:※

自增(“++”)自减(“--”)运算符※“/”和“%”※结合性3、赋值运算符重点注意:※

赋值运算符左边必须是变量※复合赋值运算符的计算(注意变量值的变化)※结合性

复习:第二次课重点内容计算机科学学院411、变量1.关系运算符关系运算符用于比较两个运算对象的大小。C语言提供的关系运算符,如下所示:关系运算符和关系表达式<,小于运算符 <=,小于等于运算符 >,大于运算符 >=,大于等于运算符 ==,等于运算符

!=,不等于运算符1.关系运算符关系运算符和关系表达式<,小于运算符 使用关系运算符,应注意优先级:关系运算符和关系表达式前4个运算符(>,>=,<,<=)的优先级高于后两个运算符(==,!=)的优先级。“==”是关系运算符,用于比较运算,而“=”是赋值运算符,用于赋值运算。关系运算符的优先级低于算术运算符而高于赋值运算符。它们的结合性是自左至右。注意:算术>关系>赋值使用关系运算符,应注意优先级:关系运算符和关系表达式前4个运2.关系表达式关系表达式就是用关系运算符将两个或两个以上运算对象连接起来的式子。其中运算对象可以是常量、变量或表达式。关系运算符和关系表达式关系表达式的运算结果有两种:“真”或“假”。在C语言中用1表示“真”,用0表示“假”。2.关系表达式关系运算符和关系表达式关系表达式的运算结果有两【例2-11】若有定义如下:charc='d';intm=2,n=5;求下列各表达式的值。(1)c+1=='e'(2)c+'A'-'a'!='D'(3)m-2*n<=n+9(4)m==2<n分析程序TFTF注意优先级别【例2-11】若有定义如下:分析程序TFTF注意优先级别逻辑运算符和逻辑表达式1.逻辑运算符逻辑运算符用来进行逻辑运算。C语言提供了3个逻辑运算符,分别是:!:逻辑非

如:!a,若a为真,则!a为假,否则!a为真&&:逻辑与如:a&&b,若a,b均为真,则a&&b为真,否则a&&b为假||:逻辑或如:a||b,若a,b均为假,则a||b为假,否则a||b为真逻辑运算符和逻辑表达式1.逻辑运算符!:逻辑非如:!a逻辑运算符和逻辑表达式2.逻辑表达式用逻辑运算符将运算对象连接起来的式子。逻辑表达式的值也有两种:“真”或“假”。在C语言中用1表示“真”,用0表示“假”。在对逻辑表达式中的量进行判断时,以非0代表“真”,以0代表“假”。在求解逻辑表达式时,并不是所有的运算都被执行。而是按运算符的优先级和结合性,当某个运算对象的值,可以确定整个逻辑表达式的值时,其余的运算对象将不再参加计算。(短路计算)逻辑运算符和逻辑表达式2.逻辑表达式在对逻辑表达式中【例2-12】设x=5,y=7,a=6,b=9,求:表达式(x=a>b)&&(y=b>a)的值及变量x和y的值。【分析】

求表达式“(x=a>b)&&(y=b>a)”的值,先求表达式“(x=a>b)”的值。a>b为假,变量x的值为0,表达式“(x=a>b)”的值为假。对于运算符“&&”,左边的运算对象为0,则右边的表达式“(y=b>a)”不再进行求解,表达式“(x=a>b)&&(y=b>a)”的值为0,变量y的值不变。

【结果】x=0y=7逻辑运算符示例严格执行“短路计算”【例2-12】设x=5,y=7,a=6,b=9,逻辑运算符示程序分析【例2-13】分析下列程序的输出结果,注意其中的逻辑表达式。main(){inta,b,c;a=b=c=1;++a&&--b&&++c;printf("%d,%d,%d\n",a,b,c);a=b=c=1;--a||++b||++c;printf("%d,%d,%d\n",a,b,c);a=b=c=-1;++a&&++b||++c;printf("%d,%d,%d\n",a,b,c);a=b=c=0;++a||--b&&--c;printf("%d,%d,%d\n",a,b,c);}【程序运行结果】2,0,10,2,10,-1,01,0,0严格执行短路计算程序分析【例2-13】分析下列程序的输出结果,注意其中的逻辑C语言程序设计——第二章数据类型、运算符和表达式

SCS-SWPU50例:用逻辑表达式来表示闰年的条件能被4整除,但不能被100整除。能被400整除。(year%4==0&&year%100!=0)||year%400==0值为真(1)是闰年,否则为非闰年。

逻辑运算符的实际应用C语言程序设计——第二章数据类型、运算符和表达式 C语言程序设计——第二章数据类型、运算符和表达式

SCS-SWPU51例:m能且只能被2和3中的一个数整除。(m%3==0)&&(m%2!=0)||(m%2==0)&&(m%3!=0)例:ch是大写字母。ch>=A&&ch<=Z[思考]上述命题可否描述为A<ch<Z?为什么?

逻辑运算符的实际应用

逻辑运算符的实际应用C语言程序设计——第二章数据类型、运算符和表达式 1.条件运算符用于连接三个运算对象,是C语言中惟一的三目运算符。2.条件表达式一般格式为:

表达式1?表达式2:表达式3条件运算符和条件表达式条件表达式的求值过程是:先计算表达式1,若为非0(真)值,则计算表达式2,并将其作为整个条件表达式的值;否则计算表达式3,并将其作为整个表达式的值。1.条件运算符条件运算符和条件表达式条件表达式的求值过程是:计算机科学学院533.条件运算符的优先级别4.条件运算符的结合性其结合性为“自右至左”。如:x=8,y=10,c=5,d=4

max=(x>y?y:c>d?x:y);

注意:算术>关系>逻辑>条件>赋值计算机科学学院533.条件运算符的优先级别注意:算术>关系>【例2-14】输入两个整数,求最大数。

计算机科学学院54【分析】

输入模块(输入数据):a和b;处理模块:比较a和b的大小,将大的赋值给max;输出模块(输出数据):max;【流程图】

开始接受a和bMax=a显示

max结束a>b?Max=b否是利用条件表达式实现【例2-14】输入两个整数,求最大数。

计算机科学学院54【#include"stdio.h"main(){ inta,b,max; printf("inputa,b:"); scanf("%d,%d",&a,&b);

max=a>b?a:b; printf("themaxis%d\n",max);

}【程序运行结果】inputa,b:4,5themaxis5程序代码:思考:条件表达式的应用对象?#include"stdio.h"【程序运行结果】程序代1.逗号运算符逗号“,”是一种特殊的运算符,用于将若干个表达式连接起来。2.逗号表达式用逗号运算符将各种类型的表达式连接成的式子。逗号表达式的一般格式为:

表达式1,表达式2,…,表达式n逗号运算符和逗号表达式逗号表达式的运算规则是:先计算表达式1,再计算表达式2,依次计算到表达式n。最后一个表达式的值就是整个逗号表达式的值。1.逗号运算符逗号运算符和逗号表达式逗号表达式的运算规则是:逗号运算符练习计算机科学学院57逗号运算符练习计算机科学学院57位运算符和位表达式1.位运算符位运算符是对二进制位进行运算。C语言提供了4个逻辑运算符,分别是:&:按位与

同为1结果为1,否则为0|:按位或有一个为1,结果为1,否则为0~:按位取反按位取反^:按位异或相同为0,不同为1位运算符和位表达式1.位运算符&:按位与同为1结果为1,1.移位运算符

<<(左移)和>>(右移)

2.移位表达式

移位表达式的一般格式为:

表达式1<<表达式2

表达式1>>表达式2

移位算符和移位表达式其中:表达式1是移位对象,表达式2是移位位数。注意:右移后前方置1还是0由系统决定。1.移位运算符移位算符和移位表达式其中:表达式1是移位对象,1.sizeof运算符求字节数运算符,可以计算某一种类型数据所占存储单元的字节个数。它是单目运算符。格式:sizeof()2.使用说明sizeof运算符的运算对象只能是变量名或数据类型标识符。其他运算符1.sizeof运算符其他运算符程序分析计算机科学学院61【例2-15】分析下列程序的输出结果,注意其中sizeof运算符的应用。main(){ floatm; printf("char:%dbytes\n",sizeof(char)); printf("float:%dbytes\n",sizeof(float)); printf("m:%dbytes\n",sizeof(m));}【程序运行结果】char:1bytesfloat:4bytesm:4bytes程序分析计算机科学学院61【例2-15】分析下列程序的输出结小结:常用运算符优先级计算机科学学院62单目>双目算术>关系>逻辑>条件>赋值>逗号小结:常用运算符优先级计算机科学学院62单目>双目思考以下问题的结果:3+2.5‘a’+3‘A’+12.34计算机科学学院632.6数据类型转换Int+floatChar+intchar+float类型转换以不丢失结果精度为原则思考以下问题的结果:计算机科学学院632.6数据类型转换I计算机科学学院642.6数据类型转换自动类型转换原则:把表示范围小的类型的值转换到表示范围大的类型的值

shortintlong

floatdouble例:已知chara;intb;floatc;doubled;

则表达式a+b+c+d的结果为()型强制类型转换语法:(类型名)变量或数值

例如:

inta=5,b=3;

floatqu=(float)a/b;

由系统自动进行注意:两边的括号一定不能省略计算机科学学院642.6数据类型转换自动类型转换由系统自动C语言程序设计——算法的描述

SCS-SWPU652.7C数据输入与输出的实现(一)所谓输入输出是以计算机主机为主体而言的输出:从计算机向外部输出设备(显示器,打印机)

输出数据。输入:从输入设备(键盘,鼠标,扫描仪)向计算机输入数据。C语言程序设计——算法的描述 (二)C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的例如:

字符输入函数:getchar

字符输出函数:putchar

格式输入函数:scanf

格式输出函数:printf

字符串输入函数:gets

字符串输出函数:putsC语言程序设计——算法的描述

SCS-SWPU662.7C数据输入与输出的实现(二)C语言本身不提供输入输出语句,输入和输出操作是由C函数C语言程序设计——算法的描述

SCS-SWPU67(三)在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中例如:在调用标准输入输出库函数时,应该有:

#include“stdio.h”

或:

#include<stdio.h>2.7C数据输入与输出的实现C语言程序设计——算法的描述 计算机科学学院68字符型变量getchar()字符型数据字符型数据putchar()2.7.1字符数据的输入输出接受并显示字符计算机科学学院68字符型变量getchar()字符型数据字符C语言程序设计——算法的描述

SCS-SWPU692.7.1字符数据的输入输出1、putchar()函数的用法putchar()是向标准输出设备上输出一个字符,一般是显示器。使用格式:putchar(ch);已定义: intc;c=‘A';若想输出字符A,可以用几种方式?

putchar(c);

putchar(‘A’);

putchar(65);putchar(0101);

putchar(0x41);

或putchar(‘\101’);

注意:ch可以是字符常量或字符变量,也可以是整型常量或整型变量,不能是字符串C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU70例

输出单个字符。

#include<stdio.h>

voidmain()

{

chara,b,c;

a=‘B’;b=‘O’;c=‘Y’;

putchar(a);putchar(b);putchar(c);putchar(‘\n’);

}

运行结果:BOYputchar(a);putchar(‘\n’);putchar(b);putchar(‘\n’);putchar(c);putchar(‘\n’);运行结果:BOY2.7.1字符数据的输入输出C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU712、getchar()函数的用法从标准输入设备上输入一个字符,一般是键盘使用格式:ch=getchar();

例#include<stdio.h>voidmain(){charc;

c=getchar();putchar(c);}#include<stdio.h>voidmain(){

putchar(getchar());

}键盘上输入的数字、空格、回车、逗号等都将作为一个字符输入2.7.1字符数据的输入输出C语言程序设计——算法的描述 计算机科学学院72#include<stdio.h>voidmain(){chara,b;printf("请输入两个字符:\n");a=getchar();fflush(stdin);b=getchar();fflush(stdin);putchar(a);putchar(b);putchar('\n');}getchar()和putchar()示例内存abOK输出:请输入两个字符:OKOKPressanykeytocontinue_计算机科学学院72#include<stdio.h>getC语言程序设计——算法的描述

SCS-SWPU732.7.2格式输出函数——printf例如:

printf(“a=%d,b=%f",a,b);调用格式:

printf(“格式控制字符串”,输出列表);格式控制:格式说明(%格式字符)+普通字符输出列表:即需要输出的数据,可以是表达式

函数名输出表列普通字符格式说明:%格式说明符C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU74━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

符号

作用─────────────────────────────────────────────────

%c 单个字符

%s

输出字符串

%d 十进制有符号整数

%u

输出无符号十进制整数

%o 无输出无符号八进制整数(不输出前缀0)

%x,%X输出无符号十六进制整数(不输出前缀0x)

%f

输出十进制float数,不带域宽时,保留6位小数

%lf 输出十进制double数,不带域宽时,保留6位小数

%le 以“科学记数法”的形式输出double数

如2.4e+02

%e 以“科学记数法”的形式输出float数

如2.4e+02

%g 选用e或f格式中较短的一个输出浮点数,不输出无效零

%p 指针的值

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2.7.2格式输出函数—printf的格式字符C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU75d格式符——按十进制整数的实际长度输出数据#include"stdio.h"/*包含头文件*/main()/*主函数*/{intx,y,z;/*定义变量*/x=3;y=1;/*给变量赋值*/z=x+y;/*求a与b的和*/printf(“%d+%d=%d\n”,x,y,z);/*输出结果*/}2.7.2格式输出函数—printf的格式字符C语言程序设计——算法的描述 例题:从屏幕输入圆柱体的底面圆的半径r和高h,求圆柱体的表面积C语言程序设计——算法的描述

SCS-SWPU76#include<stdio.h>#definePI3.14159voidmain(){

floatr,h;doublearea;printf("inputtherandh:\n");scanf("%f%f",&r,&h);area=2*PI*r*r+2*PI*r*h;

printf("%lf\n",area);}2.7.2格式输出函数—printf的格式字符默认情况下精确到六位小数例题:从屏幕输入圆柱体的底面圆的半径r和高h,求圆柱体的表面C语言程序设计——算法的描述

SCS-SWPU77若实际位数多于定义的宽度:则按实际位数输出。若实际位数少于定义的宽度:默认右对齐,有负号左对齐n:精度m:域宽,即输出项在输出设备上所占的宽度

输出实型数据,n指定实型数据所占的小数位数输出字符串,n指定最多输出的字符个数2.7.2格式输出函数—printf的格式字符C语言程序设计——算法的描述 计算机科学学院78intsalary=5500;printf("

%10d"

,salary);输出结果:

5500输出结果的左边显示了6个空格"

%10d"2.7.2格式输出函数—printf的格式字符计算机科学学院78intsalary=5500;输出结计算机科学学院79doublemercury_level=168.2251074;printf("%7.2f"

,mercury_level);输出结果:168.23宽度:表示所有的数字和小数点所占的位数。不够7位右对齐。"%7.2f"

精度:精确到小数点后多少位2.7.2格式输出函数—printf的格式字符计算机科学学院79doublemercury_level计算机科学学院80doublemercury_level=168.2251074;printf("%7.2f"

,mercury_level);输出结果:168.23宽度,表示所有的数字和小数点所占的位数。不够7位右对齐。"%7.2f"

精度(精确到小数点后多少位)计算机科学学院80doublemercury_levelC语言程序设计——算法的描述

SCS-SWPU81

标志:-、+、#、空格、0的意义如下所示:

- 结果左对齐,右边填空格

+ 输出符号(正号或负号)(只对十进制数)

空格 输出值为正时冠以空格,为负时冠以负号

#

对c,s,d,i,u类无影响;对o(八进制)类,在输出时加前缀0;对x(十六进制)类,在输出时加前缀0x;对e,g,f类,确保出现小数点,即使无小数位时亦如此

0 右对齐输出数据时,不够宽度补0

2.7.2格式输出函数—printf的格式字符C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU82#include"stdio.h"voidmain(){ floatf,g; f=1.27; g=23.2; printf("%f+%f=%f\n",f,g,f+g);}在输出的数字中并非全部数字都是有效数字单精度实数的有效位数一般为7位;双精度实数的有效位数一般为16位printf("%2.2f+%2.2f=%4.2f\n",f,g,f+g);2.7.2格式输出函数—printf的格式字符C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU83例1:printf(“%d,%4d,%-4d,%4d”,a,a,a,b);

若a=123,b=12345

则输出结果是:123,□123,123□,12345例2:printf("%lf,%8.2lf\n",b,b);

若b=123.4567

则输出结果是:123.456700,□□123.46例3:printf(“%s,%8s,%8.3s”,“china”,“china”,“china”);

则输出结果是:china,□□□china,□□□□□chi2.7.2格式输出函数—printf的格式字符C语言程序设计——算法的描述 计算机科学学院84转义序列输出结果:Name:AudreyHepburnMovie:‘RomanHoliday’代码:printf(“Name:AudreyHepburn\nMovie:\‘RomanHoliday\’”);转义序列允许在输出结果中包括特殊字符转义序列名称描述\a警告产生一则警告。\b退格将光标回退一格。\f换页将光标移到下一页的第一格。\n换行将光标移到下一行的第一格。\r回车将光标移到当前行的第一格。\t水平制表将光标移到下一个水平制表位置。\v垂直制表将光标移到下一个垂直制表位置。\'单引号产生一个单引号。\"双引号产生一个双引号。\?问号产生一个问号。\\反斜线产生一条反斜线。\0空产生一个空字符。计算机科学学院84转义序列输出结果:Name:AudreyC语言程序设计——算法的描述

SCS-SWPU85#include<stdio.h>main(){inta=100;floatb=123.255;printf("a=%d\n",a);printf("a=%10d\n",a);printf("a=%-10d\n",a);printf("a=%+d\n",a);printf("a=%d\n",a);printf("a=%#o\n",a);printf("a=%#x\n",a);printf("b=%07.1f\n",b);}//a=100

//a=□□□□□□□100//a=100□□□□□□□

//a=+100//a=□100//a=0144//a=0x64//b=00123.3例42.7.2格式输出函数—printf的格式字符C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU86printf函数的注意事项格式控制必须与输出项匹配,否则不能正确输出

请判断下列输出是否正确:main(){inta=65;printf("%f",a); }main(){inta=65;printf("%d\n",a);}main(){inta=65;printf("%c",a); }2.7.2格式输出函数—printf的格式字符输出数据的类型必须与格式控制匹配C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU87例如:

main(){intx,y;x=11/3;y=5;printf("%%d,%%%d\n",x,y); }程序的运行结果为:

%d,%3C语言规定,在格式控制字符串中若连续出现两个“%”,系统视为一个“%”字符输出。2.7.2格式输出函数—printf的格式字符C语言程序设计——算法的描述 计算机科学学院88scanf("%d",&num);scanf函数从标准输入(键盘)读取信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的程序变量。

格式控制字符串&符号(附在读取的每个变量上)用于指明变量在内存中的位置变量的名称格式控制字符串参数变量的类型要求的实际输入%dint十进制数字序列%ldlong十进制数字序列%ffloat十进制数,可以有小数点及指数部分%lfdouble十进制数,可以有小数点及指数部分2.7.2格式输入函数——scanf计算机科学学院88scanf("%d",&num);scanC语言程序设计——算法的描述

SCS-SWPU89━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

符号

作用─────────────────────────────────────────────

%c 输入单个字符

%s

输入字符串

%d 输入十进制有符号整数

%u

输入无符号十进制整数

%o 无输入无符号八进制整数(不输出前缀0)

%x,%X 输入无符号十六进制整数(不输出前缀0x)

%f,%e

以小数或指数形式输入float型数据

%lf,%le

以小数或指数形式输入double型数据

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2.7.2格式输入函数——scanfC语言程序设计——算法的描述 计算机科学学院90内存scanffloattax_rate;scanf("%f"

,&tax_rate);tax_rate在内存中分配一块32位存储空间存储空间使用名称“tax_rate”标识提示用户输入一个值输入的值存储在变量中(因为scanf提供此变量的地址)12.234计算机科学学院90内存scanffloattax_rateC语言程序设计——算法的描述

SCS-SWPU91例用scanf函数输入数据。

#include<stdio.h>

voidmain()

{

inta,b,c;

scanf(“%d%d%d”,&a,&b,&c);

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

}a在内存中的地址&是地址运算符2.7.2格式输入函数——scanfC语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU92使用scanf函数的注意事项(1)scanf()函数可以设置输入宽度,不能设置精度

floata; scanf(“%4f”,&a); 正确

scanf(“%4.2f”,&a);是非法的(2)scanf()函数中一定给出变量地址,不可是变量名,否则出错。

如:scanf(“%d”,a);错

scanf(“%d”,&a);对(3)输入多个数据时,格式控制串中没有非格式字符,则输入时数据间的分隔符可用空格、TAB键、回车键。如:scanf(“%d%d%f”,&a,&b,&c);C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU93(4)用连续%c输入字符数据时,任意字符都有效

scanf(“%c%c%c”,&a,&b,&c);printf(“a=%c,b=%c,c=%c”,a,b,c);

输入:A,B,C

输出:a=A,b=,,c=B

(5)如果格式控制字符串中有非格式字符,则输入时也要输入非格式字符。scanf(“%d,%d,%d”,&a,&b,&c);

输入应为:5,6,7若为:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);

输入应为:a=5,b=6,c=7使用scanf函数的注意事项C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU94(6)输入输出格式控制符必须匹配,否则不能正确输出

设:从键盘输入:1020.5<CR>,分析各程序的输出

main(){inta;floatb;scanf("%d%d",&a,&b);printf("%d,%f",a,b); }main(){inta;floatb;scanf("%d%f",&a,&b);printf("%d,%f\n",a,b);}main(){inta;floatb;scanf("%d%d",&a,&b);printf("%d,%d",a,b); }使用scanf函数的注意事项C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU95(7)遇到宽度设置,认为数据输入结束

voidmain() { intx; doublem; scanf("%4lf%d",&m,&x); printf("%lf,%d\n",m,x); } 若输入123.456□23,则输出结果是?使用scanf函数的注意事项123.000000,456C语言程序设计——算法的描述 计算机科学学院96#include<stdio.h>voidmain(){

doubleradius,high,vol;printf("请输入圆柱体底面积的半径和圆柱体的高:");scanf("%lf%lf",&radius,&high);vol=3.14*radius*radius*high;printf("radius=%7.2f,high=%7.2f,vol=%7.2f\n",radius,high,vol);}scanf函数使用示例内存radiushighvol510785请输入圆柱体底面积的半径和圆柱体的高:510radius=5.00,high=10.00,vol=785.00计算机科学学院96#include<stdio.h>scaC语言程序设计——算法的描述

SCS-SWPU972.7输入输出函数——练习#include<stdio.h>main(){

inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}问题1:当要求程序输出结果为

a=12,b=34时,用户应该如何输入数据?问题2:语句scanf("%d%d",&a,&b);修改为scanf(“a=%d,b=%d”,&a,&b);时,用户应该如何输入数据?scanf(“a=%d,b=%d”,&a,&b);问题3:限定用户输入数据为以下格式为

1234↙

同时要求程序输出结果为a=12,b=34scanf(“%2d%2d”,&a,&b);C语言程序设计——算法的描述 例1:由键盘输入5个学生的成绩,计算他们的平均分并保留2位小数。C语言程序设计——算法的描述

SCS-SWPU982.7顺序结构程序设计#include<stdio.h>voidmain(){floats1,s2,s3,s4,s5;doubleave;scanf("%f%f%f%f%f",&s1,&s2,&s3,&s4,&s5);ave=(s1+s2+s3+s4+s5)/5;printf("aver=%.2lf\n",ave);}例1:由键盘输入5个学生的成绩,计算他们的平均分并保留2位小C语言程序设计——算法的描述

SCS-SWPU99例2:用getchar函数从屏幕获得2个字符,要求在屏幕上分别输出这2个字符的ASCⅡ和字符。#include<stdio.h>voidmain(){charch1,ch2;ch1=getchar();ch2=getchar();printf("\'%c\'ASCII=%d\n",ch1,ch1);putchar(ch2);printf("ASCII=%d\n",ch2);}2.7顺序结构程序设计C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU1002.7顺序结构程序设计例3、输入三角形的三边长,求三角形面积。假设:三个边长a,b,c能构成三角形。已知面积公式:s=(a+b+c)*0.5area=C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU101#include<stdio.h>

#include<math.h>

voidmain()

{

floata,b,c,s,area;

scanf(″%f,%f,%f″,&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(″a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n″,a,b,c,s);

printf(″area=%7.2f\n″,area);

}数学函数库因为要用到其中的sqrt函数2.7顺序结构程序设计C语言程序设计——算法的描述 C语言程序设计——算法的描述

SCS-SWPU102本章相关英语词汇学习C语言程序设计——算法的描述 计算机科学学院103总结2-1常量是在程序中不能被更改的值;而变量在程序中可以被更改的,通过变量可以引用存储在内存中的数据C语言中的基本数据类型包括整型、单精度浮点型、双精度浮点型和字符型整型分为短整型、整型、长整型,每种整型又可分为有符号型和无符号型计算机科学学院103总结2-1常量是在程序中不能被更改的值计算机科学学院104总结2-2单精度浮点型和双精度浮点型变量可以存储实数,但双精度型取值范围要比单精度型大的多字符型变量可以存储单个字符,其值是该字符的ASCII码各种运算符提供运算功能,例如+、-、*、/、%、++和--printf()和scanf()函数属于格式输入输出函数getchar()和putchar()函数用来输入输出单个字符的函数计算机科学学院104总结2-2单精度浮点型和双精度浮点型变预习:第3章选择结构程序设计If语句Switch语句高职班作业:P45第3题电信班作业:p652.102.112.12C语言程序设计——第二章数据类型、运算符和表达式

SCS-SWPU105第四次课课后任务预习:第3章选择结构程序设计C语言程序设计——第二章数第一次实验总结常见问题:拼写错误:main→mian一个程序中包含了多个主函数变量未定义;变量类型说明符与变量名之间必须有空格结束没有“;”语法输入时应处于英文状态(输入汉字时除外)计算机科学学院106第一次实验总结常见问题:计算机科学学院106第2次实验课总结数据类型错误声明的数据类型和输入输出时使用该数据时的类型必须一致。声明的变量必须先赋初值,再引用。逻辑错误注意分析语句的前后关系。对库函数的应用必须将头文件包括在内计算机科学学院107第2次实验课总结数据类型错误计算机科学学院107第三次课总结关系运算符逻辑运算符条件运输符注意条件运算符的执行情况逗号运算符注意逗号表达式的值计算机科学学院108单目>双目算术>关系>逻辑>条件>赋值>逗号第三次课总结关系运算符计算机科学学院108单目>双目格式输入输入函数标准输出函数printf重点:格式控制必须与输出项匹配

标准输入函数scanf重点:字符输入输出函数字符输出函数putchar参数可以是字符常量或变量以及整型常量或变量。

字符输入函数getcharC语言程序设计——算法的描述

SCS-SWPU109第四次课课小结格式输入输入函数C语言程序设计——算法的描述 110C语言程序设计

1C语言程序设计计算机科学学院111第2章数据类型与基本运算

1基本数据类型常量和变量运算符与表达式标识符数据类型转换基本输入和输出

2

3

4

5

6应用举例

7计

温馨提示

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

最新文档

评论

0/150

提交评论