您好,欢迎访问三七文档
南昌大学计算中心C语言程序设计南昌大学计算中心第2章C程序设计的初步知识2.1简单C语言程序的构成和格式例:求圆面积和周长的程序。#includestdio.h#definePI3.14main(){floata,b,r;scanf(“%f”,&r);/*请用户输入半径*/a=2*PI*r;b=PI*r*r;printf(“a=%f,b=%f\n”,a,b);/*输出结果*/}南昌大学计算中心由上例总结出C程序结构:1、C程序是由函数构成的。2、一个C程序有且只有一个main函数,即主函数。3、C程序总是从main函数开始执行,结束于main函数。4、函数由函数首部(函数名、参数)和函数体(从{到}结束)组成,函数内有语句(后面有分号)。5、程序中可有注释(不会执行),注释部分用/*和*/括起来。6、C程序书写格式很自由。南昌大学计算中心2.2标识符、常量和变量2.2.1标识符标识符:由字母、下划线和数字组成的字符序列,且第一个字符必须是字母或下划线。标识符的分类:1、关键字:已被C语言赋予固定含义的标识符。书写时必须用小写。2、预定义标识符:被C语言预先定义的特定标识符。允许用户对它们重新定义。3、用户标识符:由用户根据需要定义的标识符。区分大小写。南昌大学计算中心2.2.2常量常量:程序运行过程中,其值不能被改变的量。2.2.3符号常量符号常量:用一个符号名代表一个常量。定义符号常量:使用事先编译预处理命令define定义。格式:#define标识符常量编译时先由系统替换为它所代表的常量,再进行编译。南昌大学计算中心练习:下列程序的执行结果是____。#includestdio.h#definesum10+20main(){intb=0,c=0;b=5;c=sum*b;printf(%d,c);}A)100B)110C)70D)150√南昌大学计算中心练习:下列程序的执行结果是____。#includestdio.h#definesum(10+20)main(){intb=0,c=0;b=5;c=sum*b;printf(%d,c);}A)100B)110C)70D)150√南昌大学计算中心2.2.4变量变量:程序运行过程中,其值可以改变的量。变量应遵循“先定义后使用”的原则。变量定义示意:.......125a变量a的存储单元南昌大学计算中心2.3整型数据2.3.1整型常量十进制:由数字0~9组成。八进制:由数字0~7组成,必须以0开头。十六进制:由数字0~9以及A~F(不区分大小写)构成,必须以0x或0X开头。2.3.2整型变量包括基本型、短整型、长整型和无符号型四种。如:inta;/*定义基本型整型变量a*/如:inta=3;/*定义基本型整型变量a,同时赋整数3*/注意:VC6.0为一个基本型整型变量开辟4个字节的内存单元,如上例中的变量a。南昌大学计算中心2.3.3整型数据的分类1、基本型(int):占4个字节。2、短整型(shortint):占2个字节。3、长整型(longint):占4个字节。4、无符号型(unsigned):unsignedint:占4个字节;unsignedshort:占2个字节;unsignedlong:占4个字节。无符号型必为非负数。注意:整型常量一般默认为基本型,但可用U或L(或小写)加在常量后面以改变其类型。如:137L、0L、729U、0xffL南昌大学计算中心2.3.4整数在内存中的存储形式(二进制形式,最高位为符号位)1、正整数:“原码”形式存放。如:shortinta=5;上述语句指在内存中开辟一个2个字节的单元,单元名为a,并存放整数5的二进制代码。代码为:0000000000000101最高位为0,表示正整数因此:short型整数最大值为32767,即0111111111111111。南昌大学计算中心2、负整数:“补码”形式存放。如:shortinta=-5;上述语句指在内存中开辟一个2个字节的单元,单元名为a,并存放整数-5的二进制代码。代码为:1111111111111011,此为补码形式。得到补码的方法:(1)求原码的反码:把原码除符号位之外的二进制码按位取反。如:-5的原码:1000000000000101-5的反码:1111111111111010(2)把所得的反码加1,即为补码。如:-5的反码:1111111111111010加1后,补码:1111111111111011南昌大学计算中心由补码还原成十进制负整数的方法:(1)把补码的除符号位之外的各位取反。如:-5的补码:1111111111111011取反后:1000000000000100(2)把所得的二进制数转换成十进制负整数。如:上例中的:1000000000000100转换后得:-4(3)对所得十进制数再减1。如:上例中的-4:-4-1得-5南昌大学计算中心3、无符号整数:为非负数,最高位不为符号位。如:unsignedshorta=5;上述语句指在内存中开辟一个2个字节的单元,单元名为a,并存放整数5的二进制代码。代码为:0000000000000101,此为原码形式。不是符号位再如:unsignedshorta=65535;上述语句指在内存中开辟一个2个字节的单元,单元名为a,并存放整数65535的二进制代码。代码为:1111111111111111,此为原码形式。不是符号位南昌大学计算中心练习:已知shortx=0xabcde;则x的结果是____。A)赋值非法B)不确定C)abcdD)bcde√南昌大学计算中心练习:若定义了shorta=32768;执行语句printf(“a=%d”,a);后的输出结果是____。A)a=-32768B)a=-1C)a=32768D)数据类型不一致,出错√南昌大学计算中心练习:设shorti=65539;执行语句printf(“%d”,i);后的输出结果是____。A)-3B)3C)65539D)数据不确定√南昌大学计算中心2.4实型数据2.4.1实型常量(或称实数、浮点数)十进制小数形式:由数字0~9和小数点组成。小数点不可省略。如:6.55、0.0、0.39、.39、40.指数形式:由尾数加阶码标志e或E以及阶码组成。其一般形式为aEn(a为尾数,n为阶码)其值为a×10n。阶码必须是整数,E前面必须要有数字。如:3.5×106可以表示为3.5E62.8×10-2可以表示为2.8E-2南昌大学计算中心2.4.2实型变量单精度型:用float定义,分配4个字节存储空间。双精度型:用double定义,分配8个字节存储空间。2.5算术表达式2.5.1基本的算术运算符+、-、*、/、%属于双目运算符(运算符需要两个运算对象)。%的运算对象只能是整数,结果正负号同被除数。若两边运算数类型一致,所得结果类型与运算数类型一致。如:1.7+2.3结果为4.0,不是42.5/0.5结果为5.0,不是53/6结果为0,不是0.5或两边运算数类型不一致,系统将自动进行类型转换,使得两边运算数类型一致,转换规律见附录5。南昌大学计算中心2.5.2运算符的优先级、结合性和算术表达式1、算术运算符的优先级()+-++--*/%+-同级同级同级单目双目高低2、算术运算符和圆括号的结合性算术运算符的结合性是从左到右(除了表示正负号的+、-是从右到左)。若有圆括号则优先进行圆括号中的运算。南昌大学计算中心3、算术表达式把算术运算符和运算数连接起来的表达式称为算术表达式。表达式都有运算结果,即表达式值。2.5.3强制类型转换表达式(类型符)(表达式)即强行把表达式值转换成所需类型。如:(float)(5/3)(int)(a)或(int)a南昌大学计算中心练习:下面程序的输出结果是____。main(){intx;x=-3+4*5-6;printf(“%d”,x);x=3+4%5-6;printf(“%d”,x);x=-3*4%-6/5;printf(“%d”,x);x=(7+6)%5/2;printf(“%d”,x);}A)11101B)11–321C)12–321D)11121√南昌大学计算中心练习:若有如下定义:inta=2,b=3;floatx=3.5,y=2.5;则表达式:(float)(a+b)/2+(int)x%(int)y的值是_____。A.2.500000B.3.500000C.4.500000D.5.000000√南昌大学计算中心2.6赋值表达式2.6.1赋值运算符和赋值表达式赋值运算符:=赋值表达式格式:变量名=表达式作用是把右侧表达式的值赋给左边的变量,整个表达式的值就是左侧变量的值。“=”是双目运算符,右结合性,优先级仅高于逗号运算符。如:a=5a=b=8/3南昌大学计算中心2.6.2复合赋值表达式C语言提供了10种复合的赋值运算符,它们是+=,-=,*=,/=,%=,=,=,&=,^=,|=其中前5个是复合的算术赋值运算符,后5个是复合的位运算赋值运算符。复合的赋值运算符是双目运算符,优先级和赋值运算符相同,也是右结合性的。变量复合赋值运算符表达式它等效于变量=变量算术运算符表达式例如:a+=5等价于a=a+5x*=y+7等价于x=x*(y+7)南昌大学计算中心练习:设有以下定义,则能使值为3的表达式是____。intk=7,x=12;A)x%=(k%=5)B)x%=(k-k%5)C)x%=kD)(x%=k)-(k%=5)√南昌大学计算中心练习:下面程序的输出结果是_____。main(){inta=0;a+=(a=8);printf(“%d\n”,a);}16南昌大学计算中心练习:下面程序的输出结果是_____。main(){intx=2,y=0,z;x*=3+2;printf(“%d”,x);x*=y=z=4;printf(“%d”,x);}A)840B)1040C)10,4D)8,4√南昌大学计算中心2.6.3赋值运算中的类型转换当赋值表达式中左右两边类型不一致时,会遵循自动转换规则:右侧表达式的值按左侧变量的类型进行转换。如:假设变量a为整型a=3.5的结果为3,即变量a的内容为3注意整型之间的转换,参见书上。南昌大学计算中心2.7自加、自减运算和逗号运算符2.7.1自加运算符“++”和自减运算符“--”是单目运算符,与变量结合,作用是使变量值增1或减1。有前缀和后缀两种形式:前缀形式:先自增(自减)再引用;后缀形式:先引用再自增(自减);如:假设变量a为5a++则a为6,表达式值为5++a则a为6,表达式值为6具有右结合性,结合方向为从右到左。如:–a++等价于-(a++)南昌大学计算中心练习:设有intx=11;则表达式(x++*1/3)的值是____。A)3B)4C)11D)12√南昌大学计算中心练习:下面程序的输出结果是____。main(){intm=12,n=34;printf(“%d%d”,m++,++n);printf(“%d%d\n”,n++,++m);}A)12353514B)12353513C)12343514D)12343513√南昌大学计算中心练习:下面程序的输出结果是____。main(){inti,j;i=16;j=(i++)+i;printf(“%d”,j);i=15;printf(“%d%d”,++i,i);}A)321615B)331515C)341516D)341615√南昌大学计算中心2.7.2逗号运算符和逗号表达式逗号“,”也是一种运算符,优先级别最低。逗号表达式:表达式1,表达式2,……,表达式n从左向右,依次对表达式求值,最后得到表达式n的值就是逗号表达式的值。如:a=8,a++,a%5表达式的值为4,且a为9b=5,b+2,b++表达式的值为5,且b为6y=(c=2*3,c*6)赋值表达式的值为36,且y为36,c为6南昌大学计算中心练习:设以下变量均为int类型,表达式的值不为7的是____。A)(x=y=6,x+y
本文标题:C语言课件第2章
链接地址:https://www.777doc.com/doc-5184027 .html