闽南师大C语言第3章_第1页
闽南师大C语言第3章_第2页
闽南师大C语言第3章_第3页
闽南师大C语言第3章_第4页
闽南师大C语言第3章_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

闽南师范大学C语言教学课件讲演人:陈颖频第三章数据类型与表达式3.1C语言数据类型数据类型是程序设计一个很重要的因素类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned

int0~65535320~4294967295unsigned

longunsigned

short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255

不同计算机对各种数据所占内存字节数有不同规定,上机时应注意。TurboC3.0的基本数据及其存储类型整形常量重点:补码存储难点:n位整形常量变化范围浮点型常量重难点:浮点数的计算机存储形式字符型常量单引号括起来的常量重点:转义字符(表3-1)字符串常量重点:内存存储模式易错点:最后一个字节存放字符串结束符'\0'符号常量及其定义格式: #define标识符常量符号常量优点:程序便于维护;提高程序可读性3.2节内容概要3.2常量1.位(bit):是指二进制中的位,它是计算机能

处理的最小单位。2.字节(byte):是计算机处理的基本单位。计算

机的内存是按字节进行分配的。一个字

节有八位二进制数组成。所以我们在C语

言中数据类型都是以字节为基本单元。

3.补码:一个正数的补码是其本身;一个负数的

补码是其绝对值按位取反后加1。计算

机是以补码的形式存放数的。

例如:-7的补码是1111111111111001位相关概念整型常量(整常数)三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0xff整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint

型常量n位整型变量的变化范围(重要考点)n位有符号整型变量变化范围:n位无符号整型变量变化范围:正负整数的内存存储方式(重要考点)整型变量皆以补码形式存储正整数的补码就是原码,负整数数的补码为其绝对值的原码取反再加1//有符号整型常量越界实验voidmain(){inta;a=32768printf("%f\n",a);scanf("%f",&a);}//无符号整型常量越界实验voidmain(){unsignedinta;a=65536printf("%f\n",a);scanf("%f",&a);}运行结果:(屏幕显示)0运行结果:(屏幕显示)0实型常量表示形式:小数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式(重要考点):(e或E之前必须有数字;指数必须为整数)如12.3e3(表示12.3*10^3),123E2,1.23e4,e-5(错),1.2E-3.5

(错)在实型常量后加字母f或F,认为它是float型实数在机内存储形式数符小数部分指数符号指数部分031占的位数愈多,数的有效数字愈多,精度愈高。占的位数愈多,能表示的数值范围愈大。实型常量类型(1)float

(2)double*(3)longdouble

区别:①每个变量在内存中所占字节数

float—4、double—8(重要考点)②所能存放的数值范围

float10-38——1038double10-308——10308③有效数字位数float—7、double—16float、double型数据结构实验//实验:实数有效尾数实验voidmain(){doublea;floatb;a=123456.789e5;b=a+20;printf("%f\n",a);printf("%f\n",b);scanf("%f",&a);}大数加小数运行结果:12345678900.00000012345678848.000000double有效数字16

位float有效数字7位voidmain(){floata;doubleb;a=33333.33333;b=33333.33333333333333;

printf("%f\n%f\n",a,b);}结果:33333.33203133333.333333

a是单精度浮点型,有效位数七位。整数已占五位,故小数二位之后均为无效数字b是双精度型,有效位为十六位。但TurboC小数后最多保留六位,其余部分四舍五入。字符常量定义:用单引号括起来的单个普通字符或转义字符.

字符常量的值:该字符的ASCII码值(重要考点)如‘A’——65,‘a’——97,

‘0’——48,‘\n’——10如‘a’‘A’‘?’‘\n’‘\101’转义字符:反斜线后面跟一个字符或一个代码值表示<转义字符及其含义:转义字符含义\n\r\‘\ddd\\\“\xhh转义字符含义换行(ASCII码为10)回车单引号3位8进制数代表的字符反斜线双引号2位16进制数代表的字符\a报警响铃字符数据在内存中的存储形式及使用方法

每个字符变量分配一个字节的内存空间,因此只能存放一个字符。字符值以ASCII码的形式存放。如:x的十进制ASCII码是120

y的十进制ASCII码是121x:y:

允许对整型变量赋以字符值,或对字符变量赋以整型值。允许把字符变量按整型量输出,或把整型量按字符量输出。

整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时,只有低八位字节参与处理。

0111100001111001120的二进制代码例转义字符举例

#include<stdio.h>main(){printf("ab\tcd\n");printf(“12345678\012student\x42\n");}\n\B运行结果:(屏幕显示)abcd12345678StudentB例:‘A’-------’\101’-------’\x41’--------65练习:转义字符举例

#include<stdio.h>main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}运行结果:(屏幕显示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’字符常量与字符串常量不同字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’作为字符串结束标志hello\0例字符串“hello”在内存中aa\0例‘a’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;常量总结一、整型常量:二、实型常量:三、字符常量:四、字符串常量:十进制整数:10八进制整数:012十六制整数:0xa小数形式:0.123456指数形式:1.23456e-1ASCII码十进制:’\n’’A’ASCII码八进制:’\12’’\101’ASCII码十六制:’\xa’’\x41’以‘\0’结束。变量的命名重要考点:变量的命名规则变量的基本数据类型重要考点:n位整形变量变化范围变量的类型定义要点:等价定义变量的初始化要点:哪些变量会自动初始化赋值3.3变量3.3节内容概要变量、变量名、变量类型、变量值、给变量赋值之间的关系变量——杯变量名——杯子的号码变量类型——所装的材料名称变量值——所装的东西多少给变量赋值——把某材料倒进杯子水1号杯水2号杯油3号杯若类型不一致、以变量为准inta;a=123.5;则a为123变量的命名变量标识符命名原则可以由字母、数字、下划线构成标识符开头必须是:字母或下划线,注意数字不能作为变量开头不能以系统关键字作为变量名区分大小写举例:以下是非法标识符,ye#,x>y,$25,3d,int

课堂练习:《学习指导》P48第一题库函数使用方式要点:预处理命令包含头文件常用数学函数要点:exp、pow、rand、srand函数字符输入输出函数要点:putchar、getchar函数,注意和printf、scanf关系格式化输入输出函数要点:printf、scanf函数补充:puts函数,gets函数3.4库函数3.4节内容概要字符输入出函数字符输出函数putchar原形:intputchar(intc)功能:将想要输出的字符打印在屏幕上字符输入函数getchar原形:intgetchar(void)等同于scanf(“%c”,&ch);功能:从键盘读取一个字符例如:#include<stdio.h>voidmain(){charch;ch=getchar();putchar(ch);}

输入abcd显示a格式化输入函数printf函数调用语法:printf(“文字提示+转义字符+格式控制字符串”,输出列表)例如:printf(“IntegerNumber=%d”,i)则显示IntegerNumber=i的十进制值输出控制格式(重要考点)%d:输出十进制int型数据(%ld表示长整型)%f:float型%c:字符型%s:字符串型%x:十六进制输出%o:八进制输出%p:输出内存地址%ld:长整型%e:标准指数形式输出%lf:双精度double型//例题:输出结果(05年国考)voidmain(){intx=0210;printf(“%x\n”,x)}运行结果:88逗号不能省略百分号不能省略格式化输出函数scanf函数调用语法:scanf(“格式控制字符串”,&变量1,…,&变量N)例如:scanf(“%d%d”,&i,&j)输入两个整型数作为i和j的值输入控制格式%d:输出int型数据(%ld表示长整型)%f:float型%lf:double型%c:字符型%s:字符串型格式化输出函数scanf函数的三个常见问题输入地址列表问题,&地址符号不能漏,否则会发生意想不到的情况例如:scanf(“%d”,i)用%c输入字符时,空格符、转义字符都会作为有效字符输入标准输入流的残留字符问题scanf函数注意点之二:%c输入字符输入的问题易错:%c输入字符#include<stdio.h>voidmain(){charc1,c2,c3,c4;scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);printf(“c1=%c,c2=%c”,c3=%c,c4=%c);}

输入a

输入bcd(字符间有空格)运行结果:(屏幕显示)c1=a,c2=,c3=b,c4=易错:标准输入的残留字符#include<stdio.h>#include<stdlib.h>voidmain(){inti=0;charc=0;scanf("%d",&i);scanf("%c",&c);printf("i=%d,c=%d",i,c);scanf("%d",&c);clrscr();}运行结果:(屏幕显示)i=100,c=48‘0’的字符的ASCII码就是48

输入100然后Enter

输入0,然后Enterscanf函数注意点之三:标准输入流的残留字符解决残留字符方案一:在第二个scanf格式控制符前加一个空格#include<stdio.h>#include<stdlib.h>voidmain(){inti=0;charc=0;scanf("%d",&i);scanf("%c",&c);printf("i=%d,c=%d",i,c);scanf("%d",&c);clrscr();}运行结果:(屏幕显示)i=100,c=48‘0’的字符的ASCII码就是48

输入100然后Enter

输入0,然后Enter解决残留字符方案一:在第二个scanf格式控制符前加一个空格#include<stdio.h>#include<stdlib.h>voidmain(){inti=0;charc=0;scanf("%d",&i);fflush(stdin);printf("i=%d,c=%d",i,c);scanf("%d",&c);clrscr();}运行结果:(屏幕显示)i=100,c=48‘0’的字符的ASCII码就是48

输入100然后Enter

输入0,然后EnterC运算符的种类、优先级、结合性算术运算符和算术表达式赋值运算符和赋值表达式增量运算符和增量表达式关系运算符和关系表达式逻辑运算符和逻辑表达式条件运算符和条件表达式逗号运算符和逗号表达式位运算符求字节数运算符3.5运算符和表达式3.5节内容概要

(1)算术运算符:用于各类数值运算:加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)(重要考点)共七种。(2)关系运算符:用于比较运算:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。(3)逻辑运算符:用于逻辑运算:与(&&)、或(||)、非(!)三种。C语言的运算符种类(4)位操作运算符:参与运算的量,按二进制位进行运算:位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。(5)赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。(6)条件运算符:这是一个三目运算符,用于条件求值(?:)。(7)逗号运算符:用于把若干表达式组合成一个表达式(,)。(8)指针运算符:用于取内容(*)和取地址(&)二种运算。(9)成员运算符:如.,->,用于访问成员(10)自增1,自减1运算符:++,--(11)强制类型运算符:(类型)(12)下标运算符:[](13)求字节运算符:sizeof()(14)负号运算符:-(15)括号运算符:()初等运算符单目运算符算术运算符关系运算符逻辑运算符(不包括非运算!)赋值运算符逗号运算符逻辑非!低高运算符的优先级l运算符的优先级:P42,优先级较高的先于优先级较低的。一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。l运算符的结合性:分为左结合性(自左至右)和右结合性(自右至左)。

x-y+z(左结合性):

x=y=z(右结合性):与“-”号结合执行x-y执行+z执行y=z执行x=(y=z)各类型数值数据的混合运算intchar,shortdoublelongunsignedfloat低高例:设已定义floata=14.7;longc=5;计算13/5*a+(’a’+’b’)/c的步骤及转换类型13/5*a+(’a’+’b’)/c12int2.0double14.7double229.4double97

int98

int3195int195long5long439long39double568.4double赋值运算符和赋值表达式简单赋值语法格式变量名=表达式区分等于:变量名1==变量名2复合赋值运算重要考点:赋值运算符结合性是从右往左例题:求a+=a-=b+3的等价表达强制类型转换格式:(数据类型)数据变量,例如:(double)i易错点:把浮点型变量四舍五入注意:浮点型转换为整型,直接将小数部分舍略注意:在定义中不允许连续赋值inta=b=c=5是不合法的而inta,b,c;a=b=c=5则是合法的课堂练习:《学习指导》P49第6题增量运算符前缀运算先使得运算对象的值增1,然后使用运算对象后缀运算先使用运算对象,然后再使得对象值增1使用要点++和--运算符只能用于变量,不能用于常量或表达式++和--运算符的结合方向是“先右后左”不要在一个表达式中多次使用用++和--运算符i+++j的解读,采取最大化结合原则简单原则关系运算符和关系表达式优先级别:低于算术运算符,高于逻辑运算符、赋值运算符关系运算符都是双目运算符,是左结合性关系表达式的值是一个逻辑值,只有0、1两种结果判断两个浮点数是否相等时,由于计算机存储有误差,同样可能出现错误结果逻辑运算符C语言有三个逻辑运算符&&(逻辑与)||(逻辑或)!(逻辑非)逻辑运算符的优先级!高于&&,&&高于||逻辑表达式的“不完全计算法”&&左端如果为假,表达式直接取0||左端为真,则不在计算另一端,表达式直接取1例题:3.12条件运算符、位运算符、sizeof运算符,逗号运算符条件运算符?:三目运算符格式:<表达式1>?<表达式2>:<表达式3>位运算符按位取反:~左移:<<右移:>>,格式:>>+移动的位数

按位与:&按位或:|按位异或:^位运算赋值运算符,格式:>>=移动的位数sizeof运算符,格式:sizeof(变量、数据类型、表达式)逗号表达式取最后一个变量的值为最终值作业《学习指导》P48基础练习3.1、3.2、3.3、3.5、3.6、3.7课堂练习1、语句x=(y=3,b=++y),运行后x,y,b的值是多少?4442、inti=3,求k=(i--)+(i--)63、定义x=3,y=4,z=5,求:!((x<y)&&!z||1)04、《指导》P17选择第18题5、x=2,y=5,求(x=2,y=5,x*2,y++,x+y)6、《指导》选择第11题、28题7、已知doublea=5.2,则语句a+=a-=(a=4)*(a=3)的值是多少?-18.0第三章数据类型与表达式习题课//1、求输出结果(05年国考)voidmain(){chara,b;a=‘A’+’5’-’3’;b=a+’6’-’2’;printf(“%d%c”,a,b)}运行结果:(屏幕显示)67G//2、求输出结果(05年国考)voidmain(){chara=‘1’,b=‘2’;printf(“%c,”,b++);printf(“%d\n”,b-a);}运行结果:(屏幕显示)2,2/*3、程序填空题(04年国考)要求输出格式为:n1=10,n2=20*/voidmain(){intn1=10,n2=20;printf(“”,n1,n2);}答案:n1=%d,n2=%d/*4、程序填空题(变式题)要求输出格式为:n1=10n2=20*/voidmain(){intn1=10,n2=20;printf(“”,n1,n2);}答案:n1=%d\n,n2=%d\n5、定义语句:intb;charc[10];则正确的输入语句是?(05国考)Ascanf(“%d%s”,&b,&c)Bscanf(“%d%s”,&b,c)6、定义语句:intb;charc;则正确的输入语句是?(变式题)Ascanf(“%d%s”,&b,&c)Bscanf(“%d%s”,&b,c)答案:B数组名可作为地址答案:A地址列表必须是地址变量7、下列运算符中,优先级最低的是()A||B!=C<=D+答案:A初等>单目>算术>关系>逻辑(不含!)>条件运算符>赋值>逗号8、a=-2L,printf(“%d\n”,a);求a-29、long型在TurboC编译器中默认占几个字节?占几位?4字节,32位10、short型在TurboC编译器中默认占几个字节?占几位?2字节,16位11

温馨提示

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

评论

0/150

提交评论