第二课时:数值数据与算术运算[下学期]

文档属性

名称 第二课时:数值数据与算术运算[下学期]
格式 rar
文件大小 27.6KB
资源类型 教案
版本资源 教科版
科目 信息技术(信息科技)
更新时间 2006-02-10 21:11:00

图片预览

文档简介

(共20张PPT)
第二课时 数值数据与算术运算 
C语言数据类型
当我们提到计算机数据时,大家想想在平时哪些可以称为计算机数据?
那C语言里的数据又有哪些?
数据在计算机内部的存储形式(占用的内存单元数量、编码方式、取值范围等)分为以下数据类型:
单精度(float)
双精度(double)
整型
字符型(char)
实型(浮点型)
枚举型(enum)
数组类型
结构体类型(struct)
共用体类型(union)
文件类型(FILE)
基本型
构造类型
指针型
空类型(void)
C的数据类型
短整型(short)
整型(int)
长整型(long)
基本数据类型_整型数
整型数:
分类:包括正数、负数和零,在数学中它是一个无限集合,但在计算机中,由于受到分配给整型数的存储空间的限制,它有一定的数值范围。分为int、short int和long int,以及带符号的整型数(signed int)和不带符号的整型数(unsigned int)
类型 位长 取值范围
int 16 -32768~32767
unsigned int 16 0~65535
signed int 16 -32768~32767
short int 16 -32768~32767
unsigned short int 16 0~65535
signed short int 16 -32768~32767
lont int 32 -2147483648~**47
unsigned long int 32 -2147483648~**47
signed long int 32 0~4294967295
基本数据类型_整型数
书写形式:
十进制:用0、1、2、3、4、5、6、7、8、9十个码;
八进制:用0打头,并使用0~7八个码;
十六进制:用0x打头,并使用0~9、A~F或0~9、a~f十六个码
注意:八进制和十六进制只能使用非负数!
提问:08677、-25762、0x35AQ是否为合法数字?
答案:08677(不合法,非八进制-含数字8;非十进制-以0开头)
   -25762(合法,十进制负数)
   0x35AQ(不合法,含非法字母Q)
基本数据类型_整型数
int型数的表示范围:二进制 16bit (2Byte)
0000000000000001 -> 1
0000000000000011 -> 3
0111111111111111 -> 32767
1000000000000000 -> -32767
int型整数的最大值
int型整数的最小值
int型表示数的范围:- 32768 ~ 32767
因为int型数有一定的表示范围所以使用中要注意数据溢出
现在我们来看一道例题!!
基本数据类型_整型数
main( )
{ int i;
i= 1;
i=i*2; printf(”\n i=%d”,i);
i=i*3; printf(”\n i=%d”,i);
i=i*4; printf(”\n i=%d”,i);
i=i*5; printf(”\n i=%d”,i);
i=i*6; printf(”\n i=%d”,i);
i=i*7; printf(”\n i=%d”,i);
i=i*8; printf(”\n i=%d”,i);
i=i*9; printf(”\n i=%d”,i);
i=i*10; printf(”\n i=%d”,i);
}
期望结果
i=2
i=6
i=24
i=120
i=720
i=5040
i=40320
i=362880
i=3628800
int型数数据溢出例题
基本数据类型_整型数
main( )
{ int i;
i= 1;
i=i*2; printf(”\n i=%d”,i);
i=i*3; printf(”\n i=%d”,i);
i=i*4; printf(”\n i=%d”,i);
i=i*5; printf(”\n i=%d”,i);
i=i*6; printf(”\n i=%d”,i);
i=i*7; printf(”\n i=%d”,i);
i=i*8; printf(”\n i=%d”,i);
i=i*9; printf(”\n i=%d”,i);
i=i*10; printf(”\n i=%d”,i);
}
int型数数据溢出例题
实际运行结果
i=2
i=6
i=24
i=120
i=720
i=5040
i=--25216
i=-30336
i=24320
上溢
下溢
产生数据溢出
基本数据类型_整型数
int型数数据溢出例题
例:main( )
{int a,b,;
a=32767;
b=a+1;
printf(“%d,%d\”,a,b);
}
结果为:32767,-32768
基本数据类型_实型数
实型数
分类:float类型和double类型。在机器内部,C语言的实型数是以浮点数形式存储的,存储的数值都是近似的,而且随着运算的进行会有误差积累,为了提高精度,引进双精度类型,即以两倍单精度的存储空间存放数据。所以看书第10页的最下面的倒算第二行到第11页最上面。
表示形式:
十进制形式(就是数学中的小数形式)、
指数形式(类似于科学记数法),指数须是整数。
基本数据类型_字符型
C语言中的一个字符型数据代表ASCII字符集里的一个字符,在内存中占一个字节长度。
取值范围:-128~+127,其中0~+127是基本ASCII字符,-128~-1是扩展ASCII字符
用单撇号将一个字符括起来就表示该字符。
C语言中,存放一个字符时,内存中存放的是该字符的ASCII码。在书上的第25页给出了一个表,在这个表上可以快速的找到每个字母在计算机中对应的二进制,请同学们看25页的最下面,这里告诉了怎么在上表中进行查找。
如果我们想表示比如换行、回车那怎么办呢?
因为我们知道用单撇号括起来的字符只能表示一些普通字符,但我刚才所说的那些表示特定功能的字符用这种方法就无法表示
基本数据类型_字符型
为此,C语言提供了一种以“\”开头的转义字符序列。
理解转义字符序列:转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
   例如,在printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要是用来表示那些用一般字符不便于表示的控制代码。
main()
{
printf("Y\b=\n");
}
转义字符
数据类型长度的测试
现在我们来看一个在C语言中的用来计算数据类型长度的函数:
测定各数据类型所占存储空间长度的运算符“sizeof”。
书写格式为:Sizeof(类型标识符)
现在写一个例子,请大家看后我提问这个程序运行后的结果是什么?
main()
{
printf("char: %d bytes\n",sizeof(char));
printf("short: %d bytes\n",sizeof(short));
printf("int: %d bytes\n",sizeof(int));
printf("long: %d bytes\n",sizeof(long));
printf("float: %d bytes\n",sizeof(float));
printf("double: %d bytes\n",sizeof(double));
}
数据类型长度测试
算术运算符与算术表达式
运算符:
  运算符是一个符号,它告知编译程序执行特殊的算术或逻辑运算等。C中有许多运算符,比如算术运算符、关系运算符等。 
表达式:运算符、常量和变量是表达式的要素,表达式是这些要素的有效组合。
首先  我们来看一下赋值表达式
赋值表达式的一般格式是:变更名=表达式
结合性:我们知道在四则运算中有个“优先级”,在C语言中,除了优先级外,还有个结合性问题,赋值表达式属于“右结合”,也就是从右到左结合。
提问:a=b=3,基于右结合的原则,这个是怎么赋值的?
答案:先算b=3,然后再参加下一步运算,可理解为:a=(b=3) 
算术运算符和算术表达式
算术运算符及其功能
  见书上的第12页的下面……除了书上说的以外还有两个高级别的算术运算符:自增运算(++)、自减运算(--),它们放在变量的前面和后面,表示使变量增1或减1,
    i++:先使用,后自加。
       i---:先使用,后自减。
       ++i:先自加,后使用。
       --i:先自减,后使用。
粗略看来,++i和i++的作用相同,都是使i的值加1,但有时它们的区别却很大,现在给大家写一段程序,告诉我运行后的结果:
算术运算符和算术表达式
例2:
 main()
{
int i,ia=2,j=2,k,ka=2;
i=(ia++)+(ia++)+(ia++);
k=(++ka)+(++ka)+(++ka);
printf("\ni=%d,ia=%d",i,ia);
printf("\nk=%d,ka=%d",i,ka);
printf("\nj=%d,ja=%d",j,j++);
}
运行结果:
  i=6,ia=5
k=15,ka=5
j=3,ja=2s
例1:
 main()
{
int x,y,i,j;
x=i=3;
y=x++;
j=++i;
printf("y=%d\tj=%d\n",y,j);
}
运行结果:y=3 j=4
自增例题
变  量
在程序中使用的数据有两种形式:常量和变量
变量名(也就是标识符)的命名规则:请下一位同学读一下前三条规则
(第14页)
根据刚才读到的规则现在我们看一个例题,大家想一下正确答案是什么?
C的数据分为
常量:其值不随程序的运行而改变的量
变量:其值可随程序的运行而改变的量
现在请一位同学把书上对于变更的宏观概念读一下!(翻到第13页最下面)
注意:变量名和变量值的区别
对应内存地址 内存地址中存放的内容
变  量
除了刚才提到的4点注意事项外还有以下两点:
C语言中,变量必须“先定义后引用”,以便在编译时发现错误。
标识符的选取原则-“见名知意”。这也是结构化程序的特征之一,同时为以后便于再次阅读程序。
变量的赋值运算:例如:x=6,j=4*8
在C语言中,“=”是赋值号而不是等号,C语言中的等号是“==”,赋值号与等号的概念是完全不同的。等号表达了一种“成立”或不成立的关系。例如:书上第15页中间。
在书上还介绍了另一种复合赋值运算符,这个大家可以在业余霎时间了解一下。
常  量
概念:在程序运行过程中不允许改变的量可用一个标识符来代表一个常量。
下面我们来看一个例题:
符号常量的使用
#define PI 3.14159
float r,area,circle;
r=3;
area=r×r×PI;
circle=2×PI×r;
printf("\nR=%f,S=%f,L=%f",r,area,circle);
}
常  量
常量的类型:整型、实型、字符型常量、字符串常量。
整型常量(3种形式)
10进制
8进制
16进制
实型常量(2种形式)
十进制
指数
字符常量:用单引号括起来的单个字符。
字符串常量
:0 ~9
:0 ~7 以数字0开头
:0 ~9,A~F/a~f,以0x或0X开头
:符号、整数、小数点和小数
:用e或E和表示指数部分
字符常量是由单引号括起来的,字符串常量是由双引号括起来的.如“china”.
如‘a’和“a”是两个不同的概念.
C语言规定:每个字符串是以‘\0’为结束标志的.所以“a”其实在内存中是占两个字节的位置,而‘a’在内存中是占一个字节的位置.
同课章节目录