数据与数据类型-副本.ppt_第1页
数据与数据类型-副本.ppt_第2页
数据与数据类型-副本.ppt_第3页
数据与数据类型-副本.ppt_第4页
数据与数据类型-副本.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

第二章 变量与计算问题,教材:石跃祥 C语言程序设计教程 主讲:王冬丽 2012年2月23日,2.1变量与数据类型,变量:在程序运行过程中,其值可以改变的量 命名规则:以标识符来命名。即一个或多个字母(大写或小写)、数字或下划线的字符序列,且第一个字符必须是字母或下划线 举例:如总和用sum,计数用count(做到见名知义) !注意:1 变量不能用C语言的关键字来命名 2不能与C标准库函数名同名 3大小写敏感,2.1变量与数据类型,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,2.1变量与数据类型,数据类型:任一变量都与一确定的数据类型相对应。 这个类型决定了该变量的取值范围、相关内存的大小、数据的组织形式以及可以应用其上的操作集。 所以程序员不但关心变量的表现形式,还关心变量的(当前)值和它的取值范围以及能对它施加什么样的运算。,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,2.1变量与数据类型,2.1变量与数据类型,数据类型前面还可以加修饰符,以便更准确地适应需求 修饰符:signed(有符号)、 unsigned (无符号)、long(长符型)、short(短符型) signed char char unsigned int long int short double,short int short 短整型,整型,字符型,实型,有,无,说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:,float double 区别,2.1变量与数据类型,signed int 与 unsigned int在占用字节数是一样的 不同的是signed int 有一个位用来表示符号位,以来区分数的正负,而unsigned int 没有这一符号位,2.2定义变量与初始化,变量定义 变量必须先定义后才能被引用。 变量定义的基本格式是: 数据类型名 变量名;,举例:int i; /*定义i为整型变量*/ float price; /*定义price为单精度实型变量*/,一个语句可定义多个变量: int i,j,k;,/*定义了三个整型变量i,j和k*/,2.2定义变量与初始化,变量初始化 一个变量被定义后,其值是不确定的。 如果要确保变量在定义后就具有确定的值,就需要在定义的同时为变量指定一个初始值,我们称之为给变量初始化。格式为: 变量数据类型名 变量=表达式;,举例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;,2.2定义变量与初始化,下列这三个定义语句完全等价。): int isum; /* int总是隐含为带符号 */ signed int isum; signed isum; 下面这两个定义语句完全等价。 unsigned short int isum; /*无符号短整型*/ unsigned short isum; 直接引用未初始化的变量是个常见的错误,可能还很难发现。所以,在大多数情况下,定义变量的同时进行初始化是一个明智的方法。,2.2定义变量与初始化,变量定义位置:一般放在函数开头,例2 float a,b,c; c=a%b;,例1 int student; stadent=19;,/Undefined symbol stadent in function main,/Illegal use of floating point in function main,main() int a,b=2; a=1; data=(a+b)*1.2; float data; printf(“data=%fn”,data); ,2.3 变量赋值,赋值表达式的格式: 变量=表达式 对变量的赋值是一个覆盖的过程 举例:price=0.5; /将0.5赋值给price count=100; /将100赋值给count sum=price*count; /将price与count乘积赋值给sum,#include int main() int a=0; int b=1; int c=6; int d; c=a+b; d=c-8; printf(“d= %dn“,d); ,2.3 变量赋值 整型变量赋值,整型变量赋值 例 int i; i=2.56; /结果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),2.3 变量赋值 实型变量赋值,实型变量 float:占4字节,提供7位有效数字 double:占8字节,提供1516位有效数字,/* 本程序考察实数表示的误差 */ #include int main() float r1, r2; /* 定义变量 r1,r2为单精度型 */ double x1, x2; /* 定义变量 x1,x2为双精度型 */ r1 = 12345.12345678; /* 为r1赋值,以下语句类似 */ r2 = 123.123456789; x1 = 12345.123456789; x2 = 1234567891234.123456789; printf(“r1=%ftr2=%fnx1=%ftx2=%fn“,r1,r2,x1,x2); ,程序输出为: r1=12345.123047 r2=123.123459 x1=12345.123457 x2=1234567891234.123500,2.3 变量赋值 字符型变量赋值,字符变量的取值是字符常量,即单个字符。字符变量的类型名是char。字符值是以 ASCII码的形式存放在变量的内存单元之中的。 举例:char a,b=b; 可以把字符变量看成是整型量,char与int数据间可进行算术运算。语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。,/* 本程序说明字符型量可以作算术运算 (字符型变量赋值例1)*/ #include int main() char chA,chB,cha = a,chb = 98; chA = cha - 32; /* 将小写字母a转换为大写字母A */ chB = chb - 32; /* 将小写字母b转换为大写字母B */ printf(“cha=%c,cha=%dn“,cha,cha); printf(“chb=%c,chb=%dn“,cha,cha); printf(“chA=%c,chA=%dn“,chA,chA); printf(“chB=%c,chB=%dn“,chB,chB); 程序输出: cha=a,cha=97 chb=b,chb=98 chA=A,cha=65 chB=B,chB=66,/* 本程序说明字符型量可以作算术运算 (字符型变量赋值例2)*/ #include #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); ,运行结果: total=37.500000, ch1=d,隐式转换 什么情况下发生 运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其类型不同的变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换 运算转换规则:不同类型数据运算时先自动转换成同一类型,附加:不同类型数据间的转换,char ch; int i; float f; double d;,ch/i + f*d - (f+i),例1,一般形式:(类型名)(表达式) 例: (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,精度损失问题,显式转换(强制转换),2.4 输入函数 scanf(),通过终端输入(如键盘、鼠标等),也称为标准输入(standard input),直接向终端输出(如显示器、打印机等),也称为标准输出(standard output)。 C语言本身没有提供输入输出语句,C语言中的所有I/O操作都是通过函数调用来实现,而这些并非C语言一部分的输入输出函数均以目标级程序的方式提供,并存放在一个C标准函数库中。 每一个标准库都有一个相应的头文件,该头文件包含了该库中所有函数的函数原型及其相关信息。在调用这些库函数时,要用预处理命令“#include”将有关的“头文件”包括到用户源程序中。标准输入输出库函数对应的头文件是“stdio.h”。stdio是standard input & output的缩写。因此,读者在调用标准输入输出库函数时,你的源程序开头应该有如下编译预处理命令: #include,# include,# include # include # include 一般会把用来# include 的文件的扩展名叫.h,称为头文件。 # include文件的目的是把多个编译单元(c文件或cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸;或者提供跨工程公共代码,标准库头文件,标准输入输出头文件,标准数学函数库文件,2.4 输入函数 scanf(),格式输入函数的一般格式 scanf(”格式控制字符串”, 地址列表); 格式控制字符串规定了数据的输入格式,是以%开头的字符串 地址列表是在变量名前加上地址操作符,地址列表,非格式字符,格式说明,2.4 输入函数 scanf(),常见错误 scanf(“%d,%fn”,这样做是不合法的,输入数据时不能规定精度,错误检查!把scanf里面除了 %d %f %i %c 等等之类的模板之外的所有东西都去掉!,d 输入十进制整数(有符号) u 输入无符号的十进制整数 o 输入八进制整数 x 输入十六进制整数 c 输入单个字符 s 输入字符串,以非空字符开始,遇第一个 空白字符结束 f 输入十进制小数 e 以标准指数形式输入,2.4 输入函数 scanf() scanf格式字符,l 加在d、o、x、u前:输入长整型 加在f、e 前:输入双精度型 L 加在f、e 前:输入long double型 h 加在d、o、x 前:输入短整型 m 表示数据占用的宽度 * 本输入项在读入后不赋给相应的变量,2.4 输入函数 scanf() scanf附加格式说明符,#include main() int a, b; printf(“Please input a and b:“); scanf(“%2d%*2d%2d“, ,Please input a and b:,a=12, b=56, a+b = 68,123456,2.4 输入函数 scanf() 例1,#include main() int a, b; printf(“Please input a and b:“); scanf(“%2d%*2d%2d“, ,Please input a and b:,a=12, b=5, a+b = 17,12345a,2.4 输入函数 scanf() 例1,#include main() int a, b; scanf(“%d %d“, ,问题1:当要求程序输出结果为 a = 12, b = 34 时,用户应该如何输入数据?,12 34,2.4 输入函数 scanf() 输入数据的格式控制(例2),#include main() int a, b; scanf(“%d %d“, ,问题2:当限定用户输入数据以逗号为分隔符,即输入数据格式为: 12, 34 时,应修改程序中的哪条语句?怎样修改?,scanf(“%d,%d“, ,2.4 输入函数 scanf() 输入数据的格式控制(例2),#include main() int a, b; scanf(“%d %d“, ,问题3:语句scanf(“%d %d“, 时,用户应该如何输入数据?,a = 12, b = 34,2.4 输入函数 scanf() 输入数据的格式控制(例2),#include main() int a, b; scanf(“%d %d“, ,问题4:限定用户输入数据为以下格式为 1234 同时要求程序输出结果为a = 12, b = 34,scanf(“%2d%2d“, ,2.4 输入函数 scanf() 输入数据的格式控制(例2),#include main() int a, b; scanf(“%d %d“, ,问题5:限定用户输入数据为以下格式为 12 34 同时要求程序输出结果为a = “12“, b = “34“,scanf(“%d%d“, ,2.4 输入函数 scanf() 输入数据的格式控制(例2),#include main() int a, b; scanf(“%d %d“, ,问题6:设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入,scanf(“%d%*c%d“, ,2.4 输入函数 scanf() 输入数据的格式控制(例2),基本算术运算符: + - * / % 结合方向:具有左结合性 优先级: - -* / % - + - (2) (3) (4) 说明: “-”可为单目运算符时,右结合性 两整数相除,结果为整数 %要求两侧均为整型数据,例 5/2 = -5/2.0 =,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,2,-2.5,1,-1,1,0,(),2.5 算术运算符,作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,自增、自减运算符 + -,2.5 算术运算

温馨提示

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

评论

0/150

提交评论