C语言_第2章C语言程序设计基础ppt课件.ppt

C语言_第2章C语言程序设计基础ppt课件.ppt

ID:59422176

大小:651.50 KB

页数:69页

时间:2020-09-19

上传者:U-5097
C语言_第2章C语言程序设计基础ppt课件.ppt_第1页
C语言_第2章C语言程序设计基础ppt课件.ppt_第2页
C语言_第2章C语言程序设计基础ppt课件.ppt_第3页
C语言_第2章C语言程序设计基础ppt课件.ppt_第4页
C语言_第2章C语言程序设计基础ppt课件.ppt_第5页
资源描述:

《C语言_第2章C语言程序设计基础ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

2021/7/30C语言1C语言与程序设计 2021/7/30C语言2第二章C语言程序设计基础2.1C语言的基本符号与数据类型2.2常量2.3变量2.4运算符与表达式2.5数据的输入/输出 2.1C语言的基本符号与数据类型3C语言使用的全部字符是ASCII码字符集:前32个及第127个为控制字符-完成规定的功能操作序号从32到126是文字字符,它们用于显示和打印:48~57数字:0、1、2…65~90大写英文字母:A、B、C…97~122小写英文字母:a、b、c…其他可打印的字符:!、@、#…空白字符:空格符、换行符、制表符(跳格)等2.1.1C语言的基本符号 4专用符号:+<=&&&!=等关键字(32个):auto、break、case等分隔符:主要有空格、逗号和分号标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。标识符的规定:以字母或下划线“_”开头,包含字母、数字和下划线的一个连续序列,其中不得有空白字符;标识符对大小写敏感不能与关键字同名。 532关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile 6例2.1以下四组用户定义标识符中,全部合法一组是()intk-2_001sizeofIf_maxy-m-dDatetxtREALDr.Tom3COM_mainencludesin_2010 2.1.2C语言的数据类型7指定数据的取值范围、可施加的运算指明数据的存放方式及所占内存的大小(字节数) 表2.3C语言数据类型8 2021/7/30C语言9第二章C语言程序设计基础2.1C语言的基本符号与数据类型2.2常量2.3变量2.4运算符与表达式2.5数据的输入/输出 常量:程序运行时其值不能改变的量(即常数)102.2常量 整型常量11三种形式:十进制整数:由数字0~9和正负号表示.如386,-567,65535,2010八进制整数:由数字0开头,后跟数字0~7表示.如016,0102,0177777十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x2A,0XA0,0XFFFF整型常量的类根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint型常量 实型常量12表示形式:小数形式:(必须有小数点)如-1.85.426728.0.3450.0指数形式:(aEn或aen)(e或E之前必须有数字;指数必须为整数)如1.234e+123.7e-278E3实型常量的类型默认double型在实型常量后加字母f或F,认为它是float型 符号常量13符号常量:用标识符代表常量定义格式:#define符号常量常量一般用大写字母是宏定义预处理命令,不是C语句作用:增加程序的易读性;提高程序的通用性和可维护性例如:#definePI3.14159#defineNUM35#defineNAME“Liuyu” 字符常量14定义:用单引号括起来的单个普通字符或转义字符.字符常量的值:该字符的ASCII码值转义字符:反斜线后面跟一个字符或一个代码值表示转义字符及其含义: 字符串常量15定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘’作为字符串结束标志“hello”“”“CHINA”“CProgram”“1020376”“******”“” 16字符常量与字符串常量不同: 2021/7/30C语言17第二章C语言程序设计基础2.1C语言的基本符号与数据类型2.2常量2.3变量2.4运算符与表达式2.5数据的输入/输出 2.3变量一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。注:区分变量名和变量值这两个不同的概念。18变量名实际上是一个符号地址,在对程序编译连接时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。定义:即其值可以变化的量 变量的定义和初始化变量定义的一般格式:数据类型变量1[,变量2,…,变量n];变量初始化:定义时赋初值数据类型变量1=常量1[,变量2=常量2,…,变量n=常量n];19inta;intm,n;floatx,y,z;charch;inta=1;intm=3,n=2;floatx=0.3,y=.36,z=123;charch=‘a’;先定义后使用 20例2.2输入任意两个整数,输出它们的和、差、积。#includevoidmain(){inta,b;printf("Inputa,b=");scanf("%d,%d",&a,&b);printf("%d+%d=%d ",a,b,a+b);printf("%d-%d=%d ",a,b,a-b);printf("%d*%d=%d ",a,b,a*b);} 整型变量整型数据在内存中的存放形式数据在内存中是以二进制形式存放的,比如:21 22实际上,数值是以补码表示的。一个正数的补码和其原码的形式相同。下图就是用补码形式表示的。如果数值是负的,在内存中如何用补码形式表示呢?求负数补码的方法是:将该数的绝对值的二进制形式,按位取反再加1。 实型变量在内存中的存放形式:常用的微机系统中一个实型数据(float)在内存占4个字节(32位)。与整型数据的存储方式不同,实型数据是按照指数形式存储的。例如:123.5678在内在中存储为:23 24例2.4通过库函数sizeof获得float、double和longdouble三种数据类型所占的字节数。#includesvoidmain(){printf("float=%d ",sizeof(float));printf("double=%d ",sizeof(double));printf("longdouble=%d ",sizeof(longdouble));} 实型数据的舍入误差:由于实型变量是用有限的存储单元存储的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去。由此可能会产生一些误差。单精度保证7位有效数学;双精度15位25不要试图用一个实数去精确表示一个大整数一般不要进行“相等”判断,而是判断两数差的绝对值小于某一个很小的数时则认为两者相等避免直接将一个很大的实数与一个很小的实数相加或相减,否则会“丢失”这个很小的实数根据实际要求选择单精度或双精度。 26例2.5实数的误差。#includesvoidmain(){floata;a=123456.789e5;printf("a=%f ",a);} 字符变量字符型变量用来存放字符常量,且只能存放一个字符将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。27例如:字符‘a’的ASCII代码为97,‘b’为98,在内存中变量c1、c2的值,见右图(a)所示;实际上是以二进制形式存放的,见右图(b)所示。 字符变量举例在C语言中没有专门的字符串变量,字符串常量如果要存放在字符串变量中是通过字符数组的方式实现的(见第四章)。28charc1,c2,c3,c4,c5,c6;c1=’a’;c2=”a”;c3=’abc’;c4=’107’;c5=’6’;c6=97; 29例2.6字符型变量和整型变量可以相互赋值。#includesmain(){intk;charch;k='b';ch=66;printf(“%d%c ”,k,k);printf(“%d%c ”,ch,ch);} 2021/7/30C语言30第二章C语言程序设计基础2.1C语言的基本符号与数据类型2.2常量2.3变量2.4运算符与表达式2.5数据的输入/输出 31C运算符算术运算符:(+-*/%++--)关系运算符:(<<===>>=!=)逻辑运算符:((!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)注意:优先级结合性2.4运算符与表达式 基本的算术运算符:+(加法运算符,或正值运算符。如:3+5、+3)-(需要说明的是:两个整数减法运算符,或负值运算符。如:5-2、-3)*(乘法运算符。如:3*5)/(除法运算符。如:5/3)%(模运算符,或称求余运算符,%两侧均应为整型数据,如:7%4的值为3)除法运算符“/”的运算结果与运算对象有关。当除数和被除数均为整数时,除的结果也是整数;如果除数或被除数中有一个为负值,则舍入的方向是不固定的。多数机器采取“向零取整”的方法,如:-5/3=-1,取整后向零靠拢。32 算术表达式和运算符的优先级与结合性:算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子。运算对象包括常量、变量、函数等。例如,a-b*c是一个合法的C算术表达式。33 C规定了各种运算符的优先级,上述表达式中,乘号优先于减号,因此,相当于a-(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如:a-b+c,则按规定的“结合方向”处理。C规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。34 自增、自减运算符:作用是使变量的值增1或减1。++i;--i;(在使用i之前,先使i的值加(减)1)i++;i--;(在使用i之后,使i的值加(减)1)如果i的原值等于3,则执行下面的赋值语句:j=++i;j的值为4j=i++;j的值为335 自增、自减运算符:注意:自增运算符(++)和自减运算符(--),只能用于变量,而不能用于常量或表达式。如5++或(a+b)++都是不合法的。++和--结合方向是“自右至左”。需知:符号运算符和“++”运算符同优先级,其结合方向也为“自右至左”。例:-(i++)是先用i的原值3加上负号输出-3,再对i加1,不要认为先加完1后再加负号,输出-4,这是不对的。36 37#includevoidmain(){inti=3;printf("%d ",i++);printf("%d ",i);i=3;printf("%d ",++i);printf("%d ",i);}运行结果:3444例2.7分析下面程序的运行结果 38#includevoidmain(){inti=5;printf("%d ",(i++)+(i++)+(i++));printf("%d ",i);i=5;printf("%d ",(++i)+(++i)+(++i));printf("%d ",i);}运行结果:158228例2.8分析下面程序的运行结果 关系运算符和表达式关系运算符种类:<<===>=>!=结合方向:自左向右优先级别:低于算术运算符,高于赋值运算符39<<=>>===!=优先级相同(高)优先级相同(低)例x>a+b等价于x>(a+b)x=a=b等价于x=(a==b)x==yc+da>b==c>dx!=’d’(x=2)>=(b=a) 41例2.9以下选项中,当x为大于1的奇数时,值为0的表达式是()。x%2==1x/2x%2!=0x%2==0 逻辑运算符和逻辑表达式逻辑运算符种类:!&&||逻辑运算真值表:42aba&&ba||b!a11110100100101100001 逻辑运算符和逻辑表达式43!(2)&&(11)||(12)高低优先级:结合方向:!:从右向左&&:从左向右||:从左向右例2.10已知字母A的ASCII码值为65,若变量k为char型,以下不能正确判断出k值为大写字母的表达式是()。k>='A'&&k<='Z'k>='A'||k<='Z'k+32>='a'&&k+32<='z'k>='A'&&k<91 赋值运算符由赋值运算符(=)将一个变量和一个表达式连接起来的式子称为“赋值表达式”。它的一般形式为:变量标识符=表达式作用:将一个数据(常量或表达式)赋给一个变量如:a=5;x=3*a+244复合赋值运算符种类:+=-=*=/=%=《=》=&=^=|=含义:exp1op=exp2exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3 45例2.11分析下面程序的运行结果#includevoidmain(){intn=2;n+=n-=n*n;printf("n=%d ",n);}运行结果:n=-4 表达式中数据类型的转换C语言规定:相同类型的数据可以直接进行运算,其运算结果还是原来的数据类型;而不同类型的数据运算,则需先将这些数据转换成同一类型,然后再进行运算。转换的方法有两种:自动转换(隐式转换)强制转换。46 自动转换(隐式转换)由编译系统自动完成,遵循以下规则:参与运算的数据类型不同时,则先转换成同一类型,然后再进行运算转换按数据长度增加的方向进行,以保证精度不至于降低所有的实数运算都是以双精度(double型)进行的char型和short型参与运算时必须先转换成int型如果赋值号两边的数据类型不同,赋值号“=”右边表达式值的类型将转换为左边变量的类型。47intx;floaty=5.718;x=y;x=5,数据丢失,慎用! 强制转换其一般形式为:(类型名)(表达式)如:(int)3.5%2;(float)5/7;(double)6表达式应该用括号括起来。如果写成:(int)x+y则只将x转换成整型,然后与y相加。在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。48例如intn;floatx=5.85;n=(int)x%3; 2021/7/30C语言49第二章C语言程序设计基础2.1C语言的基本符号与数据类型2.2常量2.3变量2.4运算符与表达式2.5数据的输入/输出 2.5数据的输入/输出输出:从计算机向外部输出设备输出数据;输入:从外部向输入设备输入数据;C语言本身不提供输入输出语句,输入输出操作是由C语言的库函数来实现的。在使用C语言库函数时,要用预处理命令“#include”将有关的“头文件”包括到用户源文件中。例如,调用标准输入输出库函数时,文件开头应用以下命令:#include或#include“stdio.h”50 四个函数:字符输出函数:putchar()字符输入函数:getchar()格式输出函数:printf()格式输入函数:scanf()51 字符输出函数:putchar()作用:向终端输出一个字符。例如:putchar(c);c可以是字符型变量或整型变量、相应常量或者转义字符;52chara=’A’;intk=65;putchar(a);putchar(‘A’);putchar(k);putchar(65);putchar(‘101’);以上都输出大写字母A 字符输入函数:getchar()作用:从终端(或系统隐含指定的输入设备)输入一个字符。getchar函数没有参数。函数的值就是从输入设备得到的字符。例2.12输入并输出一个字符。53#includemain(){charc;c=getchar();putchar(c);}注意:getchar()只能接受一个字符。getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。putchar(getchar()); 格式输出函数:printf()作用:向终端输出若干个任意类型的数据。一般格式为:printf(格式控制,输出表列)“格式控制”:是用双引号括起来的字符串,也称“转换控制字符串”,它包含:格式说明:由“%”和格式字符组成,如%8.3f等。普通字符:即需要原样输出的字符。转义字符:按转义字符的含义输出。例如,‘ ’表示换行,‘b’表示退格输出表列”:需要输出的一些数据,可以是表达式。54格式控制输出表列例:printf(“x+y=%10.4f,x-y=%8.2f ”,x+y,x-y); 格式输出函数:printf()由于printf是函数,因此,“格式控制”字符串和“输出表列”实际上都是函数的参数。printf(参数1,参数2,参数3……参数n)printf函数的功能是将参数2~参数n按参数1给定的格式输出。55格式字符:对不同类型的数据用不同的格式字符。常用的有以下几种格式字符(9个):d或i、o、x或X、u、c、s、f、e或E、g或G另外,在”%”和格式字符之间可以有修饰符:-、+、#、l或L、m、.n、m.n 56格式字符说明d,i以带符号的十进制形式输出整数(正数不输出符号)o以八进制无符号形式输出整数(不输出前导符0)x,X以十六进制无符号形式输出整数(不输出前导符),用x则输出十六进制数的a~f时以小写形式输出。用X时则以大写字母输出。u以无符号十进制形式输出整数。c以字符形式输出,只输出一个字符。s输出字符串f以小数形式输出单、双精度数,隐含输出六位小数。printf格式字符e,E以指数形式输出实数,数字部分小数位数为6位,用e时指数以“e”表示(如1.2e+02),用E时指数以“E”表示(如1.2E+02)。g,G选用%f或%e格式输出宽度较短的一种格式,不输出无意义的0,用G时,若以指数形式输出,则指数以大写字母。 格式修饰符57修饰符说明-输出默认为右对齐,加“-”后改为左对齐+正数输出带正号#输出八进制数时前面加数字0,输出十六进制时前面加0x数字指定数据输出的宽度(即位数).数字指定小数点之后显示的位数(默认为6位小数);对于s格式,则指定输出的字符个数l或L输出是长整型数(long)或长双精度型(longdouble)浮点数 58例2.13使用不同格式字符的输出。#includevoidmain(){inta=88,b=89;printf("%d%d ",a,b);printf("%d,%d ",a,b);printf("%c,%c ",a,b);printf("a=%d,b=%d ",a,b);}运行结果:888988,89X,YA=88,b=89 59例2.14不同类型数据在不同格式字符控制下的输出。#includevoidmain(){inta=15;doublef=123.456;printf("%d,%6d,%o,%x ",a,a,a,a);printf("%f,%10f,%10.2f,%-10.2f,%.2f ",f,f,f,f,f);printf("%8s,%3s,%7.2s,%.4s,%-5.3s,%.4s ","CHINA","CHINA","CHINA","CHINA","CHINA");} 60例2.15printf语句的输出列表中输出项求值顺序分析。#includevoidmain(){inti=2;printf("%d,%d ",i,++i);i=2;printf("%d,%d ",++i,i);}运行结果:3,33,2Why? 61例2.16对有多个输出项的printf语句的输出结果进行分析。#includevoidmain(){inti=8;printf(“%d,%d,%d,%d,%d,%d “,++i,--i,i++,i--,-i++,-i--);printf("%d ",i);}运行结果:8,7,8,8,-8,-88 格式输入函数:scanf()一般形式:scanf(格式控制,地址表列)“格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。62例如scanf("%d,%d",&x,&y);分析:&x、&y中的“&”是“地址运算符”,&x是指x在内存中的地址。上面scanf函数的作用是:按照x、y的内存的地址将x、y的值存进去。 63 scanf()函数的格式修饰符64 例2.18不同类型数据在不同格式字符控制下的输入#includevoidmain(){inta,b,x,y;charc1,c2;scanf("%2d%3d",&a,&b);scanf("%d,%*d,%d",&x,&y);scanf("%3c%3c",&c1,&c2);printf("a=%d,b=%d ",a,b);printf("x=%d,y=%d ",x,y);printf("c1=%c,c2=%c ",c1,c2);}65运行结果:12345↙123,45,567↙abcdef↙a=12,b=345x=123,y=567c1=,c2=c 66例2.19有以下程序#includevoidmain(){inti;floaty;scanf("%2d%f",&i,&y);printf("%.1f ",y);}在键盘上输入“555667777”,输出的y值为()A.55566.0B.566.0C.7777.0D.5667777.0 67例2.20指出程序中的错误。#includevoidmain(){inta;floatx;scanf("Inputdata:%d ",&a);scanf("%5.2f ",x);printf("%d,%f ",a,x);} 服务理念中的“点点”◆理解多一点真情浓一点◆学习勤一点品质高一点◆理由少一点效率高一点◆处理问题灵活点工作过程用心点◆对待同事宽容点互相协作快乐点 放映结束!敬请各位的批评指导!谢谢观看

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭