第3章C的基本数据类型_第1页
第3章C的基本数据类型_第2页
第3章C的基本数据类型_第3页
第3章C的基本数据类型_第4页
第3章C的基本数据类型_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

第3章作业:p59四.2,5,6,7,8

第4章作业:p84三.1,3,5,7,8

每章的选择题和填空题自己做,上机验证答案!包含在while语句内部的要内缩两列!说明while语句内有一if和i++复合起来的复合语句。if语句满足条件后要执行缩在其内的sum+=i;cin>>n;sum=0;i=2;While(i<10){if(i%2==0)sum+=i;i++;}cout<<"thesumofevenfrom1to"<<n<<"is"<<sum);缩进While内缩进if内第3章C的基本数据类型

加强自学,有效读书:上机遇到疑惑,(1/2结果是0,而不是

0.5)应该自己会在书上找答案画第三章引言:2、3两章、理论和上机实践互相促进学习。第3章C的基本数据类型3.1标识符和关键字3.2基本数据类型3.3常量和变量3.4运算符3.5表达式3.1标识符和关键字(p37)

原则:见名知义!!不产生歧义。正确√不正确╳count1counttest123hi!therehigh_balancehigh..balancePIa+ba_1a=1标识符是C语言编程时用来标志识别的符号,以字母开头,由字母、数字和下划线组成。在C语言中,标识符中大小写字母是有区别的。习惯上采用小写字母表示各种标识符,如变量名、数组名、函数名等。各种语句也用小写字母,而大写字母只用来定义宏名等,用的不多。不同的系统对标识符的长度有不同的要求,有的要求为6个字符,有的允许使用8个字符,而VC系统下的有效长度为1至32个字符。除了少数工作单元我们用单个字符作标识符,一般的应做到见名知义,以提高程序的可读性。如用sum表示和,score表示成绩,max表示最大等等。

关键字ANSIC规定了32个关键字(保留字),不能再用作各种标识符。auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while。它们用来表示C语言本身的特定成份,具有相应的语义,可构成所有的C语言语句。12个标识符作为编译预处理的命令单词,但使用时前面应加“#”:define,elif,else,endif,error,if,ifdef,ifndef,include,line,progma,undef。3.2C的基本数据类型数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作3.2基本数据类型

1.基本数据类型(p39表3-2)基本数据类型类型位数值域内存字节数char8-128~1271int16-32768~327672float323.4e-38~3.4e+384double641.7e-308~1.7e+3088void00数值常量整型常量单精度实型常量双精度常量字符常量用单引号括起的一个字符,转义字符字符串常量用一对双引号括起的字符序列3.3常量和变量(p39)5123.41234567.89‘a’,’0’,’$’‘\t’“string”“alotof”常量是指在程序运行过程中其值不能被改变的量;C语言中有三种常量:1.整型常量整型常量也称为整型常数或整数。整型常量按进制分可分为十进制整数,八进制整数和十六进制整数。①十进制整数十进制整数以正负号开头,后跟0~9的若干位数字构成。如123,-456,789等。3.3.1常量②八进制整数以基数0,1,2,3,4,5,6,7表示的数,以数字0作为前缀,作为八进制数的标志。如0123,-0456,0765等。③十六进制整数以基数0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F表示的数,以0x作为前缀,作为十六进制数的标志。如0x123,-0xF56,0x7ED等。3.3.1常量逢二进一逢八进一逢十进一逢十六进一数制间的转换非十进制转换为十进制:按权值展开即可,An-1An-2…A1A0,n位M进制数D=An-1Mn-1+An-2Mn-2+…+A1M1+A0M0如0x2F=2*161+15*160=47

1101B=1*23+1*22+0*21+1*20=8+4+0+1=132.十进制转换为非十进制:短除法

13→01547→0x2F3.十六进制与二进制之间的转换:一位十六进制数对应于四位二进制数。十进制二进制八进制十六进制0000000010001011200100223001103340100044501010556011006670111077810001089100111910101012A11101113B12110014C13110115D14111016E15111117FP402.实型常量分为单精度实型常量和双精度实型常量。单精度实数占四个字节,其数值范围是:3.4×10-38≤|x|≤3.4×1038,它的有效位最多只有7位十进制数字。双精度实数占8个字节,取值范围是:1.7×10-308≤|x|≤1.7×10308,它的有效位能达到16位十进制数字。有小数形式和指数形式两种。①小数形式正、负号开头,有若干位整数部分,后跟一个小数点,再有若干位小数部分。如123.456,-21.37,12.,12.0。②指数形式也称为科学计数法,分成尾数部分和指数部分。尾数部分可以是整数形式或小数形式,指数部分是一个字母“e”或“E”后跟一个整数。2.1E5(等于2.1×105),√3.7E-2(等于3.7×10-2)√0.5E7(等于0.5×107)√-2.8E-2(等于-2.8×10-2)√E7,53.-E3,2.7E。×3.字符常量:常用字母数字+转义字符‘A’~‘Z’:0x41~0x5A(p284附录A)‘a’~‘z’:0x61~0x7A‘0’~‘9’:0x30~0x39其他符号:!,@,#,$,%,^,&,*,(,),+,_...转义字符单引号内以“\”开始,后跟字母,或最多3位八进制数或x+最多两位十六进制数。符号意义ASCII码值(十进制)\a响铃(BEL)007\b退格(BS)008\f换页(FF)012\n换行(LF)010\r回车(CR)013\t水平制表(HT)009\v垂直制表(VT)011\\反斜杠092\?问号字符063\'单引号字符039\"双引号字符034\0空字符(NULL)000\ddd任意字符三位八进制\xhh任意字符二位十六进制强调程序的可读性、规范性中国软件之所以上不去的原因之一就是“习惯问题”。印度十个人编程,会编出一样的东西,而我们十个人编程可能会有十种风格。因为我们忽略了一个重要的问题,即“顾客”的感受。程序是编写给别人看的,不是给自己看的。基本的规范(如变量的起名和缩进式)不应该自己创新,尽量模仿例题!③变量可以在程序内的三个地方定义:A:在函数内部的一开始B:在函数的参数(形参)中定义(形式参数)C:在所有的函数外部(全局变量)在不同地方定义的变量,其作用范围不同(ch7,难点)。在同一层次定义的变量,不能与数组、指针、函数和其它变量同名。不同的系统中,同一个类型变量所占的空间大小是不一样的,可以查看有关手册,也可以通过编程查看其所用字节数目。#include<iostream.h>voidmain(){doublex;x=45;cout<<"thesizeofdoubleis"<<sizeof(x)<<endl;}3.3.2变量(重点)变量是指程序执行过程中,其值可以改变的量;变量定义的一般形式:类型变量名表;每个变量都必须有类型说明;一旦被指定为确定类型,将为它分配相应字节的内存;合法标识符,“知名见义”;charc,ch,name;unsignedintui;inti,j,num;floata,b,sum;doublex,total;例:1个字节2个字节4个字节8个字节变量必须先定义,后使用,且在同一层次中不能与其它标识符重名;3.3.3变量的初始化程序中常需要对一些变量预先设置初值。C规定,可以在定义变量时同时使变量初始化。变量初始化只需在定义变量时在变量名后面加一等号及一个常数。它的一般形式是:类型变量名=常数;

charch=‘a’;intfirst=0;floatx=123.45;#include<iostream.h>voidmain(){ int x; charch='a'; x=ch+2;//这里x的值是‘a’的ASCII码值97

//加2,也就是99 cout<<"ch="<<ch<<'\n'<<"x="<<x<<endl;}例3-1字符型数在数值运算时可以当成整型数。初始化应用举例3.4C语言中的运算符(常用的)算术运算符:+,-,*,/,%,++,--(P45表3-7)(2)关系运算符:<,>,<=,>=,==,!=(P47表3-8)(3)逻辑运算符:!,&&,||(P48表3-9)(4)赋值运算符:=,及其双目运算符的扩展赋值运算符(5)圆括号运算符()。1.算术运算:+-*/%2.关系运算:>,<,>=,<=,==,!=3.逻辑运算:!,&&,||4.位运算:<<,>>,~,|^&5.赋值运算符:=及其扩展运算符如+=等6.条件运算符:?:7.逗号运算符:,8.指针运算符:*,&9.求字节运算符:sizeof10.强制类型转换:(类型)11.分量运算符:.->12.下标运算符:[]13.其它()C运算符简介:包括13类3.4.1.算术运算符和赋值运算符表3-7算术运算符和赋值运算符操作符作用运算对象个数优先级结合方向++自增,加112自右向左--自减,减112-负号12*乘23自左向右/除23%取余(取模)23+加24自左向右-减24=赋值214自右向左+,-,*,/,先乘除后加减,按优先级顺序进行运算,优先级高(数小)的先运算。加括号可以改变运算顺序。如1/2=0,1.0/2=0.5;

(2)求余运算符(%)仅用于整型数据,不能用于实型和双精度实型。它的作用是取整数除法的余数。如1%2=1,10%3=1,(-10)%3=-1,10%(-3)=1三位数的整数,如何取出其个位?十位?百位?准备上机程序代码时要认真琢磨p46图3-2和图3-3!牵扯一类编程题!!!???(3)赋值运算符(=)是将“=”右边表达式的值赋给左边的变量。赋值运算符左边必须是变量等有存贮单元的元素,而不能是常量或表达式。x=x+1√x+1=x×0=X+1××(4)++,--(难点)仅用于变量,在变量原值的基础上加1、减1;如果运算符在变量前面,则在“引用”该变量前,先对其作加1或减1运算;如果运算符在变量后面,则在“引用”该变量后,再对其作加1或减1运算;y=++x;↔x=x+1;y=x;y=x++;↔y=x;x=x+1;voidmain(){intx,y;x=10;y=++x;cout<<x<<","<<y<<endl;}运算结果为11,11运行结果为11,10voidmain(){intx,y;x=10;y=x++;cout<<x<<","<<y<<endl;}(5)+,-,*,/,%可以与赋值号“=”组成复合赋值运算符+=,-=,*=,/=,%=。a=a+b→a+=b;a=a*b→a*=b书写简练,运行速度快。2.关系运算符和逻辑运算符操作符作用运算对象个数优先级结合方向>大于26自左向右>=大于等于26<小于26<=小于等于26==等于27自左向右!=不等于27!逻辑非(取反)12自右向左&&逻辑与211自左向右||逻辑或212自左向右当关系运算符两边的值满足关系时为真,返回1,不满足关系时为假,返回0。x=10;cout<<x>=9;/*此时输出为1*/x=5;cout<<x>=9;/*则输出为0。*/字符比较按其ASCII码值进行,如‘A’<‘B’为真。(2)关系运算符>,>=,<,<=的优先级相同,如在表达式中同时出现时,则自左向右顺序运算。而==与!=优先级低于此四种关系运算符。cout<<5>3>1;运行输出结果为0。因为两个>是同一优先级,5>3的结果为1,而1>1的关系不满足,所以最后结果为0。cout<<1==11<35;运行输出结果为1。因为<的优先级比==高,则11<35的结果为1,而1==1的关系满足,所以最后结果为1。逻辑运算真值表pq!qp&&qp||q00100010011010111011★逻辑运算结果中,1表示真,0表示假;而参加运算的量,非0表示真(1),0表示假(0);★&&和||一旦能够确定表达式的值,就不再继续运算下去;逻辑运算规则非运算:0→

1,1→

0与运算:表示“并且”的含义,见0为0数学:3<x<6C中:x>3&&x<6或运算:表示“或者”的含义,见1为1

数学:num(0~99)中含5的数

C中:num个位是5||num十位是5(3)关系和逻辑运算符的优先级都低于算术运算符(逻辑非!除外)。如10>1+12完全等价于10>(1+12),其结果当然是假(即0)。(4)在关系和逻辑运算符组成的表达式中,也可以像算术表达式一样,用圆括号来改变运算的优先次序,!1&&0其值为假,因为先执行!1,然后才执行&&。然而加上圆括号!(1&&0)后改变了运算顺序,则执行!0操作结果为1,其值为真。

(5)在逻辑表达式的求解中,并不是表达式的所有部分都被执行,只有在必须执行时才执行,否则就“偷懒”不执行了。a||b,当a=1时,则不再求b的值,直接得到结果1。a&&b,当a=0时,则不再求b的值,直接得到结果0。同理,a||b||c,a&&b&&c一样(6)逻辑运算的转换。!(a||b)→!a&&!b等同于(!a)&&(!b)!(a&&b)→!a||!b3.条件运算符和逗号运算符条件运算符的一般形式是:表达式1?表达式2:表达式3先求表达式1的值,如果为真(非零),则求表达式2的值,并把它作为整个表达式的值;如表达式1的值为假(零),则求表达式3的值,并把它作为整个表达式的值。x=10;y=x>9?100:200;//y=100y=x<9?100:200;//y=200逗号运算符“,”也称顺序求值运算符,其运算优先级为15,也是最低的,结合方向是自左至右。逗号运算符的左边总是不返回的,也就是说逗号右边表达式的值才是整个表达式的值。x=(y=3,y+1,y+1);先将3赋给y,然后计算表达式y+1,其值为4,最后将4赋给x。由于逗号运算符的级别最低,所以以整体先求值时一般均需加圆括号。优先级运算符结合规则1[]()→.从左至右2!~++---*&sizeof从右至左3*/%从左至右4+-从左至右5<<>>从左至右6<<=>>=从左至右7==!=从左至右8&从左至右9^从左至右10|从左至右11&&从左至右12||从左至右13?:从右至左14=+=-=*=/=%=&=^=|=>>=<<=从右至左15,从左至右3.5表达式运算符、常量以及变量构成了表达式。表达式是这些成分的有效组合。C语言的表达式非常丰富,也有人称C语言为表达式语言。3.5C的常用表达式①算术表达式

<操作数><算术运算符><操作数>算术表达式中运算对象(操作数)是常量、变量和表达式,运算结果(即表达式的值)是数值。a+b*c-d/e*10②关系表达式

<操作数><关系运算符><操作数>关系表达式中运算对象是常量、变量或表达式,其运算结果是逻辑量,为“真”时取1,为“假”时取0。如:i<100j==10k<=99if(2*i+4*(20-i)==60);//例3-6非=③逻辑表达式<操作数><逻辑运算符><操作数>逻辑表达式的运算对象是逻辑量,在C语言中无逻辑量,可以是变量、常量或表达式,将非零的值按“真”对待,零值按“假”对待。而运算结果为“真”时取1,为“假”时取0。i&&j

if(a<=0||b<=0||c<=0||a+b<=c||a+c<=b||b+c<=a)//例3-5从键盘输入一个字符ch,当该字符为数字时,…charch;cin>>chIf(ch>=‘0’&&ch<=‘9’)…判断字符变量ch是英文字母的的表达式应写成:if((ch>=’a’&&ch<=’z’)||(ch>=’A’&&ch<=’Z’))…例3-7循环输入若干个字符,计算其中小写字母的个数,用$作为结束符。#include<iostream.h>voidmain(){ intn=0; charcha;

do {cin>>cha; if(cha>='a'&&cha<='z')n++; }while(cha!=‘$’);

cout<<"输入字符中有"<<n<<"个小写字母"<<endl;}复习课时:以书复习p53例3-5例3-6例3-8可以省掉变量m和n(编程时尽量少用变量)表达式中的类型转换转换规则:由短转长,不能由长转短(warning)转换的结果必定是3种基本类型:int,long或double型。①如果数据长度最长为int(char)型,char型的数据要先转换成int型运算,结果是in

温馨提示

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

评论

0/150

提交评论