C语言程序设计(何钦铭-颜晖-主编)精课件_第1页
C语言程序设计(何钦铭-颜晖-主编)精课件_第2页
C语言程序设计(何钦铭-颜晖-主编)精课件_第3页
C语言程序设计(何钦铭-颜晖-主编)精课件_第4页
C语言程序设计(何钦铭-颜晖-主编)精课件_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

Chap6数据类型和表达式6.1数据的存储和基本数据类型

6.2常量和变量

6.3数据的输入和输出6.4类型转换6.5表达式1ppt精选版本章要点C语言的基本数据类型有哪些?各种基本数据类型的常量和变量是怎样定义的?C语言有哪些表达式?各种表达式的求解规则是什么?2ppt精选版数据类型和表达式数据类型基本数据类型整型int实型(浮点型)floatdouble字符型char构造数据类型数组、结构、联合、枚举指针类型空类型运算:对数据的操作运算符+数据

表达式3ppt精选版6.1数据的存储和基本数据类型6.1.1数据的存储整型、实型、字符型数据的存储6.1.2基本数据类型整型、实型、字符型4ppt精选版6.1.1数据的存储-整型数据设整数在内存中用2个字节存储10000001100000010000000110000001符号位1:负数0:正数5ppt精选版数值的表示方法-原码反码补码正数的原码、反码和补码相同1的补码0000000000000001……32767的补码0111111111111111(215-1,2个字节的存储单元能表示的最大正数)负数的原码、反码和补码不同-1原码1000000000000001反码1111111111111110原码取反补码1111111111111111反码+16ppt精选版原码反码补码32767补码0111111111111111-32767原码1111111111111111反码1000000000000000原码取反补码1000000000000001反码+1-32768=-32767-1补码1000000000000000(2个字节的存储单元能表示的最小负数)7ppt精选版-32768-10132767

32767

0111111111111111

……1

00000000000000010

0000000000000000-1

1111111111111111-2

1111111111111110……

-32767

1000000000000001-32768

100000000000000032767

+1=32768?100000000000000=-32768-32768

-1=-32769?0111111111111111=327678ppt精选版实型和字符型数据的存储实型数据的存储-1.2345e+02符号位阶码

尾数字符型数据的存储一个字节存储ASCII码9ppt精选版5.1.2基本数据类型整型有符号整型无符号整型数据长度int

unsigned[int]16或32位short[int]unsignedshort[int]16位long[int]unsignedlong[int]32位字符型char8位实型(浮点型)单精度浮点型float32位双精度浮点型double64位10ppt精选版基本数据类型-整型扩展的整数类型:shortlongunsigned

[int]有符号整型无符号整型数据长度int

unsigned[int]16或32位short[int]unsignedshort[int]16位long[int]unsignedlong[int]32位有符号short

1000000000000000-32768

-215011111111111111132767

215-1无符号unsignedshort00000000000000000111111111111111165535

216-111ppt精选版整数类型的取值范围int32位-2147483648~2147483647

-231~231-1short[int]16位-32768~32767

-215~215-1long[int]32位-2147483648~2147483647

-231~231-1unsigned[int]32位0~4294967295

0

~232-1unsignedshort[int]16位0~65535

0

~216-1unsignedlong[int]32位0~4294967295

0

~232-112ppt精选版基本数据类型-字符型字符具有数值特征'A'6501000001整型变量和字符变量的定义和赋值可以互换【ASCII码范围】charc;c='A';或c=65;int

i;i=65;或i='A';13ppt精选版基本数据类型-实型实型(浮点型)数据单精度浮点型

float双精度浮点型double存储

数据精度取值范围(有效数字)float

4字节七/八位

±(10-38

~1038)double

8字节十六位±(10308

~10308)14ppt精选版数据精度和取值范围数据精度与取值范围是两个不同的概念:floatx=1234567.89;虽在取值范围内,但无法精确表达。floaty=1.2e55;y的精度要求不高,但超出取值范围。并不是所有的实数都能在计算机中精确表示

实型常量的类型都是double1234567.8015ppt精选版6.2.1常量符号常量整型常量、实型常量、字符型常量6.2.2变量

变量的定义和使用

6.2常量和变量16ppt精选版6.2.1常量常量的类型通常由书写格式决定123(整型)4.56(实型)'A'(字符型)符号常量:用一个标识符代表一个常量:PI:EPS17ppt精选版例5-1求球的表面积和体积#include<stdio.h>#definePI

3.14intmain(void){

doubler,

s,v;

printf(“Enterr:");

scanf("%lf",

&r);

s=4.0*

PI*

r

*r;

v=4.0/3.0*PI*

r

*

r

*r;

printf("s=%f,v=%f\n",s,v);return0;}加分号?通常用大写字母18ppt精选版符号常量的优点#include<stdio.h>intmain(void){

doubler,

s,v;

scanf("%lf",

&r);

s=4.0*r*r*3.14

;

v=4.0/3.0*r*r*r*3.14

;......return0;}#include<stdio.h>#definePI

3.14intmain(void){

doubler,

s,v;

scanf("%lf",

&r);

s=4.0*PI*r*r;

v=4.0/3.0*PI*r*r*r;......

return0;}3.141593.141593.1415919ppt精选版整型常量(整数)整数的表示三种表现形式:十进制整数:正、负号,0-9,首位不是0例:10,123八进制整数:正、负号,0-7,首位是0例:010,012316进制整数:正、负号,0-9,a-f,A-F,前缀是0x,0X例:0x10,0x12320ppt精选版整数的表示123=01111011(B)二进制=173(O)八进制=7B(X)十六进制12301730x7b160200x10100120XA100100x10不能超出整型数据的取值范围比长整型数还要大的数只能用实数来表示21ppt精选版整数的类型判断整数的类型整数后的字母后缀123L

long123U

unsigned123LU

unsigned

long整数的值22ppt精选版实型常量(实数、浮点数)实数的表示浮点表示法0.123123.412..12科学计数法6.026E-271.2e+301E-5实数的类型double23ppt精选版字符型常量字符常量'a''A''9''+''$'ASCII字符集列出所有可用的字符(256个)每个字符:惟一的次序值(ASCII码)'0'-'9'升序排列'A'-'Z''a'-'z'24ppt精选版字符的数值特征字符-ASCII码对字符进行运算-对字符的ASCII码进行运算例如:'A'的ASCII码65则:'A'+1=66,对应字符'B'区分数字字符和数字

'1'125ppt精选版转义字符反斜杠后跟一个字符或数字字符常量,代表一个字符

'\n'

'\101'

'\x41'

'A'所有字符都可以用转义字符表示26ppt精选版6.2.2变量在程序运行过程中,其值可以被改变的量。变量必须先定义,后使用定义变量时要指定变量名和数据类型变量应该先赋值,后引用27ppt精选版变量的定义变量名:合法的标识符小写字母;见名知义变量的类型:在定义时指定变量定义的一般形式类型名变量名表;intcelsius,fahr;floatx;doublearea,length;变量名代表内存中的一个存储单元,存放该变量的值该存储单元的大小由变量的数据类型决定28ppt精选版变量的使用必须先定义,后使用应该先赋值,后引用变量的赋值方法变量赋初值:在定义变量时对它赋值inta=5,b=3;赋值表达式inta,b;a=5;b=3;输入inta,b;scanf("%d%d",&a,&b);29ppt精选版6.3.1整型数据的输入和输出6.3.2实型数据的输入和输出6.3.3字符型数据的输入和输出

6.3数据的输入和输出

30ppt精选版6.3.1

整型数据的输入输出printf(格式控制,输出参数1,...,输出参数n);scanf(格式控制,输入参数1,...,输入参数n);格式控制说明

%…十进制八进制十六进制int%d%o%xlong%ld%lo%lxunsigned%u

%o%xunsignedlong%lu%lo%lx31ppt精选版例6-2(1)输出整型数据#include<stdio.h>intmain(void){printf("%d,%o,%x\n",10,10,10);printf("%d,%d,%d\n",10,010,0x10);printf("%d,%x\n",012,012);return0;}

0……0101010,12,a10,8,1610,a32ppt精选版例6-2(2)输入整型数据#include<stdio.h>intmain(void){inta,b;

printf("inputa,b:");scanf("%o%d",&a,&b);printf("%d%5d\n",a,b);printf("%x,%d\n",a,b);return0;}

inputa,b:17171517f,17%x%d33ppt精选版6.3.2实型数据的输入和输出输入scanf()float:%f或%e

以小数或指数形式输入一个单精度浮点数double:%lf或%le以小数或指数形式输入一个双精度浮点数输出printf()float和double使用相同的格式控制说明%f以小数形式输出浮点数,保留6位小数%e以指数形式输出34ppt精选版实型数据输出示例#include<stdio.h>intmain(void) {doubled=3.1415926;printf("%f,%e\n",d,d);printf("%5.3f,%5.2f,%.2f\n",d,d,d);return0;}

3.141593,3.14159e+003.142,3.14,3.14一共5位,小数3位,小数点一位35ppt精选版实型数据输入输出示例假定float的精度为7位,double的精度为16位

#include<stdio.h>intmain(void)

{floatf;doubled;printf("inputf,d:");scanf("%f%lf",&f,&d);printf("f=%f\nd=%f\n",f,d);d=1234567890123.12;printf("d=%f\n",d);return0;}inputf,d:1234567890123.1234561234567890123.123456f=1234567954432.000000d=1234567890123.123540d=1234567890123.12012036ppt精选版6.3.3字符型数据输入输出scanf()和printf()%ccharch;scanf("%c",&ch);printf("%c",ch);getchar()和putchar()charch;ch=getchar();putchar(ch);输入输出一个字符37ppt精选版例6-3(1)输入输出字符示例#include<stdio.h>intmain(void){charch1,ch2;ch1=getchar();ch2=getchar();putchar(ch1);putchar('#');putchar(ch2);return0;}AbA#b38ppt精选版例6-3(2)输入输出字符示例#include<stdio.h>intmain(void){charch1,ch2,ch3;scanf("%c%c%c",&ch1,&ch2,&ch3);printf("%c%c%c%c%c",ch1,'#',ch2,'#',ch3);return0;}AbCA#b#CAbCA##b39ppt精选版例6-4输出字符型数据'b'的ASCII码98#include<stdio.h>intmain(void){charch='b';printf("%c,%d\n",'b','b');printf("%c,%d\n",98,98);printf("%c,%d\n",97,'b'-1);printf("%c,%d\n",ch-'a'+'A',ch-'a'+'A');return0;}01100010'b'98'b'98b,98b,98a,97B,6640ppt精选版#include<stdio.h>intmain(){charch;ch='b';printf("%c,%d\n",ch,ch);return0;}01100010'b'9814262'b'9801420x62printf'b'%cputchar98%d142%o62%xscanf'b'%cgetchar98%d142%o62%xscanf("%c",&ch);41ppt精选版字符运算大小写英文字母转换'b'-'a'='B'-'A'……'z'-'a'='Z'-'A''m'

'M''a'-'A''A'-'a''0''m'-'a'+'A'='M''M'-'A'+'a'='m''8'-'0'=88+'0'='8'数字字符和数字转换9-0='9'-'0''9'=9+'0''8'842ppt精选版不同类型数据的混合运算,先转换为同一类型,再运算。6.4.1自动类型转换非赋值运算的类型转换赋值运算的类型转换6.4.2强制类型转换6.4类型转换43ppt精选版6.4.1自动类型转换(非赋值运算)水平方向:自动垂直方向:低高

高double

float

unsignedlong

long

unsigned

unsignedshort

低int

char,short44ppt精选版自动类型转换(非赋值运算)'A'+12–10.05657766.95高double

float

unsignedlong

long

unsigned

unsignedshort

低int

char,short45ppt精选版自动类型转换(赋值运算)变量

=

表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符右侧表达式的类型自动转换成赋值号左侧变量的类型46ppt精选版自动类型转换(赋值运算)doublex;x=1;x=?shorta=1000;charb='A';longc;c=a+b;c=?intai;ai=2.56;ai=?shortbi;bi=0x12345678Lbi=?47ppt精选版5.4.2强制类型转换强制类型转换运算符(类型名)

表达式(double)3(int)3.8(double)(5/2)(double)5/23.032.02.548ppt精选版强制类型转换示例#include<stdio.h>intmain(void){inti;doublex;

x=3.8;i=(int)x;printf("x=%f,i=%d\n",x,i);printf("(double)(int)x=%f\n",(double)(int)x);printf("xmod3=%d\n",(int)x%3);

return0;}x=3.800000,i=3(double)(int)x=3.000000xmod3=049ppt精选版表达式:由运算符和运算对象(操作数)组成的有意义的运算式子,它的值和类型由参加运算的运算符和运算对象决定。运算符:具有运算功能的符号运算对象:常量、变量和函数等表达式算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式等

6.5表达式50ppt精选版6.5.1算术表达式-算术运算符单目+-++--双目+-*/%注意/整数除整数,得整数1/4=0,10/3=3%模(求余):

针对整型数据5%6=5,9%4=1,100%4=0+

单目运算符,+10和–10双目运算符,

x+10和y–10

双目运算符两侧操作数的类型要相同,否则,自动类型转换后,再运算。51ppt精选版自增运算符++和自减运算符--intn;n++++nn----n

(只适合变量运算)使变量的值增1或减1++n

n++

n=n+1--n

n--

n=n-1取变量的值作为表达式的值++n:n=n+1;取n值作为表达式++n的值n++:取n值作为表达式n++的值;n=n+152ppt精选版自增运算和自减运算intn,m;n=2;m=++n;n=2;m=n++;n=3n=3m=3m=2m=nm=n+1n=n+1m=n53ppt精选版算术运算符的优先级和结合性单目+-++--双目*/%双目+-高低从右向左-5+3%2=(-5)+(3%2)=-43*5%3=(3*5)%3=0-i++-(i++)54ppt精选版写出C表达式数学式

C算术表达式s(s-a)(s-b)(s-c)(x+2)e2x55ppt精选版6.5.2赋值表达式赋值运算符=x=3*4优先级较低,结合性从右向左x=y=3

x=(y=3)56ppt精选版赋值表达式变量

=

表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符左侧的变量的值作为表达式的值右侧表达式的类型自动转换成左侧变量的类型intn;doublex,y;n=3.14*2;x=10/4;x=(y=3);57ppt精选版复合赋值运算符赋值运算符简单赋值运算符=复合赋值运算符复合算术赋值运算符+=-=*=/=%=复合位赋值运算符赋值表达式变量

赋值运算符

表达式x+=

exp

等价于x=x+

expx*=y-3x=x*

(y-3)

58ppt精选版6.5.3关系表达式-关系运算符比较两个操作数,比较的结果:真假x<yx<=yx==yx>yx>=yx!=y优先级算术运算符

<<=>>=

==!=赋值运算符左结合a>b==cd=a>bch>'a'+1d=a+b>c3<=x<=5b-1==a!=c(a>b)==cd=(a>b)ch>('a'+1)d=((a+b)>c)(3<=x)<=5((b-1)==a)!=c59ppt精选版关系表达式用关系运算符将2个表达式连接起来的式子哪些是关系表达式?a>b==cd=a>bch>'a'+1d=a+b>cb-1==a!=c3<=x<=5关系运算的结果真1假0

charch='w';inta=2,b=3,c=1,d,x=10;00110160ppt精选版6.5.4逻辑表达式-逻辑运算符&&||!逻辑运算结果:1(真)

0

(假)逻辑运算对象:关系表达式或逻辑量x>=3&&x<=5!x判断逻辑量的真假:非0

(真)

0

(假)(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')ch==''||ch=='\n'x>=3&&x<=561ppt精选版逻辑运算的规则-真值表xyx&&yx||y!x假

假001假真011真假010真真1100

00

非0非00非0

非062ppt精选版优先级!算术运算符关系运算符&&||赋值运算符左结合逻辑运算符的优先级和结合性a||b&&c!a&&bx>=3&&x<=5!x==2a||3+10&&2a||(b&&c)(!a)&&b(x>=3)&&(x<=5)(!x)==2a||((3+10)&&2)63ppt精选版逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子哪些是逻辑表达式?a&&ba||b&&c!a&&ba||3+10&&2!(x==2)!x==2ch||bcharch='w';inta=2,b=0,c=0;floatx=3.0;0101101exp1&&exp2先算exp1,若其值为0,STOPexp1||exp2先算exp1,若其值为1,STOP64ppt精选版例6-7写出满足要求的逻辑表达式x为零关系表达式x==0逻辑表达式!xx不为零x!=0xx和y不同时为零!(x==0&&y==0)x!=0||y!=0x||yx取0!x真x取非0!x假x取

温馨提示

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

评论

0/150

提交评论