第2章-数据类型、运算符与表达式-4学时_第1页
第2章-数据类型、运算符与表达式-4学时_第2页
第2章-数据类型、运算符与表达式-4学时_第3页
第2章-数据类型、运算符与表达式-4学时_第4页
第2章-数据类型、运算符与表达式-4学时_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

高级语言程序设计揭安全jieanquan@163.com江西师范大学计算机信息工程学院高级语言程序设计——基于计算思维能力培养高级语言程序设计——基于计算思维能力培养第2章数据类型、运算符与表达式揭安全jieanquan@163.com江西师范大学计算机信息工程学院主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式本章思维导图C程序基本结构2.1#include<stdio.h>/*

@函数名称:getMax

@入口参数:两个整型形式参数a,b

@函数功能:返回两个形式参数中的较大者 @文件名:2_1.c*/注释【例2.1】C语言程序示例。2.1C程序基本结构intgetMax(inta,intb){intm;if(a>b)m=a;else m=b;returnm; /*如果a>b,则返回a,否则返回b*/}函数名称函数体2.1C程序基本结构/* @函数名称:main()

@函数功能:主函数*/intmain(){intx,y,z; /*变量定义*/printf("Pleaseinputtwointegers:");scanf("%d%d",&x,&y); /*输入两个整数*/

2.1C程序基本结构z=getMax(x,y);/*调用函数max求x,y中的较大者存入z*/printf("较大的数是:%d\n",z);

/*输出z的值*/return0;}函数调用z=max(x,y);intmax(inta,intb){…returnm;}2.1C程序基本结构语句分隔符;2.1C程序基本结构主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式C程序中

常见的符号2.21、标识符:用于标识程序中的函数、变量等对象的名称统称标识符。系统预定义标识符用户自定义标识符2.2C程序中常见的符号命名规则:(1)英文字母或下划线开头,中间可以是数字或英文字线、下划线等。(2)见名知意例:max,a,b,m,sum,_price,my@name,9cd2.2C程序中常见的符号2、关键字:又称保留字,它们是C语言中预先规定的具有固定含义的标识符。 int表示整数类型char表示字符类型return表示返回主调函数。

用户在自定义标识符不能与关键字相同。例如:2.2C程序中常见的符号

3、运算符:C语言的运算符有34种,如加、减、乘、除,分别表示为:+、-、*、/按运算对象分:单目运算符,如求负(-),自增(++)等双目运算符,如+、-三目运算符,唯一一个,条件运算符?:2.2C程序中常见的符号4、数据:程序的加工对象,分为常量与变量。常量是指程序运行过程中保持不变的量。如:"Pleaseinputtwointegers:"2.2C程序中常见的符号4、数据:程序的加工对象,分为常量与变量。变量是指程序运行过程中可以修改的数据,一般对应内存单元。如:intx,y,z;2.2C程序中常见的符号5、分隔符与其它符号空格、回车、逗号、分号都是有效的分隔符。{、}、/*和*/等具有特定含义的符号块注释则包含在“/*”与“*/”之间。2.2C程序中常见的符号1.下列选项中不是C语言合法的自定义标识符的是()。sum01Flagpriceofbeef_priceABCD提交单选题5分主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式数据类型2.3处理输入设备输出设备数据数据2.3数据类型(1)将牛肉切成大小适中的小块(2)将每个土豆均匀切成4小块(3)倒入50ml油,大火加热…数据处理步骤2.3数据类型2.3数据类型基本数据类型和构造数据类型整数型、浮点型、字符型、字符串型和布尔型。数据类型决定了:该变量能够存放数据的类型该变量占用内存占用的空间大小能够对该变量执行的操作为何要区分数据类型?2.3数据类型图2-5炊具和餐具的类型决定了其功能与用途2.3数据类型高级语言中的同一种数据类型又根据需要存储数据的范围区分成了不同的类别。如,在C语言中整型可分为:基本整型(int)短整型(shortint)长整型(longint)2.3数据类型2.3数据类型int整数,在目前绝大多数机器上占4个字节float单精度浮点数,4个字节double双精度浮点数,8个字节2.3数据类型char字符,1个字节,表示256个ASCII字符,或0~255的整数shortshortint,简写为short,短整数,2个字节2.3数据类型longlongint,简写为long,长整数,4个字节Longlongint,8个字节longdouble,长双精度(高精度)浮点数,10个字节unsigned用来修饰char、int、short和long无符号整数(正整数和0)2.3数据类型类型名范围存储大小char0~2551个字节shortint-215(-32768)~215-1(32767)2个字节int-231(-2147483648)~231-1(2147483647)4个字节unsignedint0~232-14个字节longlonglong-231(-2147483648)~231-1(2147483647)-263~263-14个字节8个字节float-3.4×10-38~3.4×1038精度为6位有效数字4个字节double-1.7×10-308~1.7×10308精度为15位有效数字8个字节如何知道变量占用的内存大小?2.C语言中,错误的int类型的常数是()。1E500370xafABCD提交单选题5分sizeof是C语言的运算符,并非函数,用于计算类型占用的字节数用法:sizeof(类型)结果为类型占用的字节数sizeof(变量名)结果为表达式值所属类型占用的字节数2.3数据类型#include<stdio.h>intmain(){ printf("数据类型

字节\n"); printf("char%d\n",sizeof(char)); printf("short %d\n",sizeof(short)); printf("int %d\n",sizeof(int)); printf("unsigned %d\n",sizeof(unsigned)); printf("long %d\n",sizeof(long)); printf("longlong%d\n

",sizeof(longlong)); printf("float %d\n",sizeof(float)); printf("double %d\n",sizeof(double)); return0;}【例2.2】测试各种数据类型占用的内存空间数据类型

字节char 1short 2int 4unsigned 4long 4longlong 8float 4double 82.3数据类型主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式常量2.4整型常量字符型常量实型常量字符串常量2.4常量整型常数的表示形式(1)十进制整数:

如2008、+1975、-1,18u,123L,140Lu(2)八进制整数:

例如,012表示(12)8,-020表示(-20)8。(3)十六进制整数:

例如,0x20表示十六进制的(20)16,同理0x2A3B表示十六进制数(2A3B)16整型常量默认为int型2.4.1整型常量实型常量的表示形式(1)十进制小数表示形式

如.56、3.1415926、-96.25f、20.(2)指数形式

例如,314.15926e-2、0.031415926E2。注意:e4,2E4.5,.e8都是不合法的表示形式。浮点型常量默认为double型2.4.2实型常量C语言中用单引号括起来的单个字符为字符常量。如‘A’,‘9’等。ASCII码

b7b6b5b4b3b2b1b001000001附录B是常用字符的ASCII码表2.4.3字符常量小写字母‘a’的ASCII码为97大写字母‘A’的ASCII码为65大写字母与其对应的小写字母的ASCII码相差32。将一个大写字母的ASCII码加上32可以将它转换成对应的小写字母;数字字符‘0’的ASCII码为48。

2.4.3字符常量字符含义字符含义‘\n’换行(Newline)‘\a’响铃报警提示音(AlertorBell)‘\r’回车(不换行)(CarriageReturn)‘\”’一个双引号(DoubleQuotationMark)‘\0’空字符,通常用作字符串结束标志‘\’’单引号(SingleQuotationMark)‘\t’水平制表(HorizontalTabulation)‘\\’一个反斜线(Backslash)‘\v’垂直制表(VerticalTabulation)‘\?’问号(QuestionMark)‘\b’退格(Backspace)‘\ddd’1到3位八进制ASCII码值所代表的字符‘\f’走纸换页(FormFeed)‘\xhh’1到2位十六进制ASCII码值所代表的字符转义字符‘\n’:换行‘\t’:水平制表‘\b’:退格‘\ddd’‘\xhh’3.下列转义字符中错误的是()。'\000''\r''\x111''\2'ABCD提交单选题5分例如:printf(“Hesaid\”Ilikeclanguageverymuch.\”\n”);输出结果为:Hesaid”Ilikeclanguageverymuch.”转义字符用双引号括起来的串如:"Helloworld!","a","中国","3.14159"等。

2.4.4字符串常量可用#define宏定义宏常量例如,若有定义:#definePI3.1415926则area=PI*10.2*10.2;等价于area=3.1415926*10.2*10.2;

注意:后面不需加;号2.4.5宏常量变量2.5变量的本质是内存或CPU中的寄存器,其值可以改变。使用变量前要需根据存储的数据类型与数据范围选择相应的变量类型。2.5变量例如:intlength;floatarea,volume;charanswer,selection;ANSIC变量使用基本原则变量必须先声明,后使用;所有变量必须在第一条可执行语句前声明;声明的顺序无关紧要;一条声明语句可声明若干个同类型的变量。2.5.1变量的声明每一条完整的声明语句都要以分号结尾;在同一个函数中,不能声明同名的多个变量。变量的命名规则同用户自定义标识符的命名规则,同时遵循见名知意的原则。

2.5.1变量的声明新定义的变量其值为不确定数据。inta,b;charc;floatarea;2.5.2变量初始化inta=20,b=30;charc=‘A’;floatarea;2.5.2变量初始化新定义的变量其值为不确定数据。简单赋值语句语法:

变量=

表达式;Don’tforgetthesemicolon!!Everyassignmentexpressionhasavalue2.5.3变量的访问与使用例如:a=b; 30b=0; c=c+1;0662.5.3变量的访问与使用对变量进行赋值时,赋值语句右边的表达式类型应该与赋值语句左边的变量类型相容。ValidExample: InvalidExample:

intx; charc; x=20; c=“Hello”;2.5.3变量的访问与使用多重赋值语句语法:变量1=

变量2=

表达式;Don’tforgetthesemicolon!!右结合:从右向左赋值变量1=(变量2=表达式);2.5.3变量的访问与使用Example:inta,b;intc;a=b=c=0;b??a??

c??0002.5.3变量的访问与使用多重赋值语句显示变量的值printf(“a:%d\n”,a);a:30注意:%d仅用于int型变量,如果要显示字符型,可以用%c来代替%d。如果要显示float型变量,则需要用%f。默认情况下,%f会显示出小数点后6位数字。2.5.3变量的访问与使用4.下列选项中正确的变量声明与初始化语句是()。inta=b=10;chara='我';floata=10;doublea=∞;ABCD提交单选题5分5.下列数据中,不是C语言常量的是()。'\n'"a"e-2012ABCD提交单选题5分主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式运算符与表达式2.6算术运算符关系运算符逻辑运算符赋值运算符条件运算符逗号运算符指针运算符自增(自减)运算符求字节运算符和特殊运算符2.6运算符与表达式Example:x+y操作数(Operand)运算符(Operator)操作数(Operand)2.6运算符与表达式2.6.1算术运算符Addition(+)Subtraction(-)Multiplication(*)Division(/)Modulus(%)(x+y)/2-(a*b-(a+b))/(x-y)(x+y)/2-(a*b-a-b)/(x-y)2.6.1算术运算符除法/Division浮点数除法(FloatingDivision)xoryorbotharefloats整数除法(IntegerDivision)xandyareintegersExample:x/y除法/DivisionExample:anintegeraninteger

theresultisalsoaninteger11/2=5除法/DivisionExample:andoubleaninteger

theresultisalsoandouble11.0/2=5.5求余%(Modulus)操作数必须为整数Example:11%3=2anintegeranintegertheresultistheremainderof11/3113392remainderresult求余(Modulus)余数符号与被除数同号Example:-26%-8=-2anintegeraninteger-26-83-24-2remainderresulttheresultistheremainderof-26/-8求余(Modulus)Example:15%-4=3anintegeraninteger15-4-3123remainderresulttheresultistheremainderof15/-4余数符号与被除数同号#include<stdio.h>intmain(){inta=17,integerResult;floatb=17.0,floatResult;integerResult=a/2;printf("integerResult:%d\n",integerResult);floatResult=b/2;printf("floatResult:%f\n",floatResult);printf("Remainderof(7+79)and24is:%d",(7+79)%24);return0;}integerResult:8floatResult:8.500000Remainderof(7+79)and24is:14【例2.3】写出下面程序的输出结果。如何分离个位、十位、百位数字?个位:153%10

=3十位:153/10%10=5百位:153/100=1【例2.4】利用算术运算符求一个三位整数的百位数、十位数和个位数,并输出它们和与乘积。#include<stdio.h>intmain(){intx,b0,b1,b2,sum,product;x=153;b0=x%10;

//求个位数b1=x/10%10;

//求十位数b2=x/100;

//求百位数sum=b0+b1+b2;product=b0*b1*b2;printf("b2=%d\tb1=%d\tb0=%d\n",b2,b1,b0);printf("sum=%d\tproduct=%d\n",sum,product);return0;}b2=1b1=5b0=3sum=9product=157.设floatc,f;,将数学表达式c=(f-32)正确表示成C语言赋值表达式的是()。c=5*(f-32)/9c=5/9(f-32)c=5/9*(f-32)c=5/(9*(f-32))ABCD提交单选题5分2.6.2运算符的优先级与结合性当算术表达式包含两个或两个以上的算术运算符时

首先要确定运算顺序所有的运算符都有一个优先级

(OrderofPrecedence)

附录C——运算符的优先级与结合性不同优先级时的运算顺序:——从高到低

例如:*,/,%

优先级大于+、-相同优先级时的运算顺序:——左结合为从左到右,右结合为从右到左例如:算术运算为左结合,赋值运算为右结合2.6.2运算符的优先级与结合性除后置++、--运算符之外的一元运算符和三元运算符均为右结合;除赋值运算符之外的所有二元运算符均为左结合。自增和自减运算符(++和--)用作后缀运算符时(比如x++)具有较高的优先级。运算符的优先级不需要去死记硬背,编写程序时可以通过使用()来改变表达式的计算顺序。2.6.2运算符的优先级与结合性5+2+4*3-6=?例:算术表达式计算顺序71219-6=13=135+2+4*(3–6)=?利用()改变计算顺序:7-3=-5-12=-572.6.3关系运算符运算符意义范例结果<

小于10<90<=小于或等于8<=201>

大于10>81>=大于或等于8>=100==等于10==101!=不等于9!=90例如,表达式10+30<10+40等价于(10+30)<(10+40)。2.6.3关系运算符注意不要直接判断两个浮点数是否相等。注意区别C语言的关系表达式与数学中的关系表达式。在数学中10<x<20,表示x∈(10,20)在C语言中能用10<x<20表示x∈(10,20)吗?2.6.4复合赋值运算符Syntax:

变量x=变量x

运算符op

表达式;

变量x

运算符op=表达式;例如:

x=x+10;可写成:x+=10;2.6.4复合赋值运算符Example:num=num+2;num15

15+2

1717Example:num+=2;similarto

num=num+2shorthandassignmentoperator2.6.4复合赋值运算符运算符复合赋值运算例子计算过程+=num+=2;num=num+2;-=num-=2;num=num–2;*=num*=a+b;num=num*(a+b);/=num/=a-b;num=num/(a-b);%=num%=2;num=num%2;2.6.4复合赋值运算符例如,若有变量定义intx=10;则表达式: x*=2+3;等价于: x=x*(2+3); (x的结果为50)而不是: x=x*2+3;

(x的结果为23)例如,若有变量定义inta=10,b=20,c=30;表达式a+=b+=c;等价于a+=(b+=c); //执行完后a的值为60,b的值为50,c的值为30执行后,a,b,c的值分别是?2.6.4复合赋值运算符再如,若有变量定义inta=3;表达式 a+=a*=a-=1;的计算顺序为:a-=1; //a=2a*=a; //a=4a+=a;

//a=82.6.4复合赋值运算符8.设floatm=4.0,n=4.0;,使m为10.0的表达式是()。m-=n*2.5m/=n+9m*=n-6m+=n+2ABCD提交单选题5分2.6.5++和--运算符x++,x--,++x,--x++让参与运算的变量加1,--让参与运算的变量减1作为后缀(postfix)运算符时,先取x的值参与表达式计算,然后x自身加/减1y=x++;y=x;x=x+1;2.6.5++和--运算符x++,x--,++x,--x++让参与运算的变量加1,--让参与运算的变量减1作为前缀(prefix)运算符时,先将x的值加1,然后再取x的值参与表达式计算y=++x;x=x+1;y=x;Example:y=x++-2x10similartoy=x–2;x=x+1;后缀(Postfix)增1和减1运算符y??811Example:y=++x-2x10similartox=x+1;y=x–2;y??911前缀(Prefix)增1和减1运算符y=-x++; printf("x:%d,y:%d\n",x,y); x10similartoy=-(x++);后缀(Postfix)增1和减1运算符11y10-10x=x+1;printf(“x:%d,y:%d\n",x,y);x:11,y:-102.6.5++和--运算符良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次增1或者减1运算过多的增1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果9.若定义了inta,x,y;,则下列语句中不正确的是()。x=y=5;++x;x=y+=x*30;a=y+x=30;ABCD提交单选题5分表达式的类型转换2.72.7表达式的类型转换赋值表达式的类型转换char,shortintunsignedlongunsignedlonglonglonglongdoubledoublefloat2.7表达式的类型转换不当的赋值将导致溢出2.7表达式的类型转换例如,有变量定义:inta=2;longb=10;doublec=25;floatsum=0;sum=‘A'+2*a+b*c的计算过程:2.7表达式的类型转换强制类型转换

(类型说明符)表达式(float)(x+y) 将x+y的值转换成float类型。(int)a+b 将a的值取出转换为int型再与b相加。(double)b 取出变量b的值转换为double型#include<stdio.h>intmain(){constfloatpi=3.1415926;//定义const常量floatr=5.0;doublelength,area;length=2.0*pi*r; //计算圆的周长area=pi*r*r; //计算圆的面积printf("length=%f\n",length);//输出圆的周长printf("area=%f\n",area);//输出圆的面积retu

温馨提示

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

评论

0/150

提交评论