欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:6504132       资源大小:462.50KB        全文页数:81页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第2章 C语言基础,C 语言程序设计,2,本章主要内容,本章介绍C语言的基础,包括:C语言使用的合法字符?单词?字符集标识符:单词的组成原则,程序处理的对象是数据数据类型:数据的存储、参与的运算数据表现形式:变量和常量数据操作:运算符和表达式C语言的语句类型,3,例如:,【例2.1】计算圆的面积,半径为 5 cm。程序如下:,main()float r,area;r=5;area=3.14*r*r;printf(%fn,area);,运算结果是输出圆的面积:78.500000,程序中用到的数据:r、area、5、3.14对数据进行的运算:*、=数据的名称是标识符,例jc2_1,4,分析:,计算机操作处理时,要表示各种处理的对象出现在程序的符号和字符可以使用英文字母吗?可以使用中文字符吗?合法的字符集合半径用 r表示,面积 用 area 表示。对象可以取什么样的名称?标识符:可以用作各种对象的名字,涉及C语言最基本组成,5,分析:,计算机操作处理时,首先要解决数据的存放:事先要在内存中给半径 r 和运算结果 area 开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值?数据 5 和 3.14 与 r、area 不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理?对整数 5 和小数3.14,计算机存放时是否有区别?,涉及数据类型的基本知识,6,2.1 C程序的符号系统,主要内容:基本字符标识符,7,2.1.1 基本字符,大写英文字母:A B C X Y Z 小写英文字母:a b c x y z 数字:0 1 2 9 空白符:空格符、换行符、制表符 特殊字符:+-*/()_=!#%.,;:“|&?$,8,2.1.2 标识符,由字母、下划线和数字组成的字符序列用于程序中的变量、符号常量、数组、函数、数据类型等操作对象的名字,1系统定义标识符具有固定名字和特定含义的标识符分为关键字和预定义标识符 2用户定义标识符 用于对用户使用的变量、数组、函数等操作对象进行命名,9,关键字,数据类型:int、char、float、double、short、long、void、signed、unsigned、enum、struct、union、const、typedef、volatile 存储类别:auto、static、register、extern 语句命令字:break、case、continue、default、do、else、for、goto、if、return、switch、while 运算符:sizeof,10,预定义标识符,系统标准库函数scanf、printf、putchar、getchar、strcpy、strcmp、sqrt等编译预备处理命令include、define等,11,对标识符的规定,用户定义标识符必须以字母或下划线“_”开头不能含有除字母、数字和下划线“_”外的其他字符标识符中大小写字母含义不同关键字必须用小写字母。不允许使用关键字为变量、数组、函数等操作对象命名预定义标识符允许用户对它们重新定义,当重新定义后将改变它们原来的含义,12,正确区分标识符,正确区分哪些是合法标识符,哪些是不合法标识符。其中合法标识符中哪些是关键字,哪些是预定义标识符,哪些是用户定义标识符。Abc define 2x double studentm+y a#b-4 _1 Whileint let x%y name do wtm Ctrl swicth include,13,2.2 C语言的数据类型,C数据类型,本章讨论基本类型数据,14,2.2.1 整型数据,1整型数据的类型基本整型数据 int,分配 4 Byte短整型数据 short int,分配 2 Byte长整型数据 long int,分配 4 Byte整型数据均以二进制补码形式存储,问题:为什么要采用补码?如何表示?,15,计算机中正、负数的表示,例如:109(1101101)2要区别:109 和 109 方法是:将符号也数码化即:正的符号 用 0 表示 负的符号 用 1 表示,计算机中的数表示方法是:符号位二进制数值(以 8bit 为例)109 110 1101 0110 1101109 110 1101 1110 1101,16,问题:计算机计算复杂化,例如计算:(-19)+(+22)1001 0011+0001 0110,解决的方法是:使用补码的表示方法能将减法一律转换为加法。,需要判断符号是否相同:如果相同,结果符号不变,并进行绝对值相加如果不同,结果取绝对值大的数的符号,并进行绝对值相减,17,整型数据的类型及规定(注:此结果是在VC+环境中运行,win-tc中结果 不一样),方括号表示可选项short 分配2 Byte,int、long分配4 Byte,18,说明1.有符号和无符号整型数据,有符号的整型数据 signed short无符号的整型数据 unsigned short区别是将最高位看作符号位还是数据位,例如:1111 1111 1010 1000作为有符号数使用时,最高为符号位为负数,值是:-88(再求一次补)作为无符号数使用时,最高为数据位为无符号的数,值是:65448,19,例如:,main()unsigned short int m;m=65448;printf(m=%dn,m);printf(m=%un,m);,输出结果:m=-88m=65448 注:这是在 win-tc下运行的结果,VC+下均为65448,因为VC+下unsigned int与int都是占4个字节,按有符号数输出,按无符号数输出,20,说明2:整数溢出问题:超出范围,系统为short 型数分配的存储空间为:16 bit(2Byte),=215-1=32767,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,问题:上数再加1是多少?,=-215=-32768,表示范围:-32768 32767,使用中注意数的范围,有符号short型整数的最大值,有符号short型整数的最小值,21,例如:,void main()short int a,b;a=32767;b=a+1;printf(“a=%dnb=%dn“,a,b);,输出结果:a=m=,32767,-32768,22,2.2.2 实型数据,1实型数据的类型 单精度实型数据 float,分配4 Byte双精度实型数据double,分配 8 Byte2实型数据的存储,单精度实型,指数部分,小数部分,小数的符号位,指数的符号位,23,实型数据的类型及规定,C标准并未具体规定各种实型数据所占字节数,也不规定具体小数和指数部分的位数。一般而言,小数部分位数多,数据表示的有效数字多,精度就高;而指数部分位数多,则表示的数据范围更大。,有效数字的意义?,24,例如:,void main()float x=12345.54321;double y=445566778899.987654321;printf(x=%fny=%fn,x,y);,输出结果:x=y=,有效数字的具体含义,12345.542969,445566778899.987670,25,2.1.3 字符型数据,字符型数据char,分配 1 Byte 字符型数据是指字母、数字、各种符号等用ASCII值表示的字符例如 a 是一个char类型数据,称作字符常量,存储:,0 1 1 0 0 0 0 1,最高位为0,将a 转为ASCII,26,2.1.4 空类型(void),通常与指针或函数结合使用eg.void main(),27,2.3 常量、变量,主要内容:常量变量,28,2.3.1 常量,在运行程序的过程中值保持不变的量1整型常量 十进制:09八进制:07,以 0开头十六进制:09,AF/af,以 0 x或 0X 开头,例如:100-8 0+123010 024 0100 0730 x38 0 x10 0X10 0XFF 0 x0a,29,1.整型常量,注意:十六进制常量中可以使用大写字母AF,也可以使用小写字母af。八进制常量中不能出现数字 8 或 9例如:018、0921非法,可以表示成8进制,10进制和16进制,30,说明.整型常量的类型,根据值大小默认类型。int a=5;long a=5;short b=32768;,31,说明.整型常量的类型,整型常量后面加l或L,则认为是long int型 例如:123L、0L、432l、0 x100l整型常量后面加u或U,则认为是unsigned型 例如:15u、234u、017u、0123u 0 xFu、0 xACu 15Lu、543Lu,32,2.实型常量,十进制形式 1.0 1.+12.0-12.0 0.0指数形式 1e3 1.8e-3-123E-6-.1E-3,指数只能是整数,而尾数则可以是整数也可以是小数,无论指数或尾数均不能省略例如:1e、E.5、E-3 非法实型常量的类型:默认为double型,后面加F(或f),则强调表示该数是float类型例如:3.5f、1e2F,33,3.字符型常量,可视字符常量 单引号括起来的单个可视字符例如:a、A、+、3、等 转义字符常量单引号括起来的 与可视字符组合,例如:,#includevoid main()int a,b,c;a=1;b=2;c=3;printf(%dnt%d%dn%d%dtb%dn,a,b,c,a,b,c);,35,4.字符串常量,用双引号括起的一个字符序列例如:ABC、123、a、nt nGood morning字符串常量的长度:所包含的字符个数 字符串常量的存储方式:,所占存储单元数:串长度1例如:,字符串结束标记,36,说明 字符串常量与字符常量,37,5.符号常量,以标识符来代表的常量事先编译预处理命令define定义编译时先由系统替换为它所代表的常量,再进行编译例如:,#define LEN 2.5main()float a,b;a=2*3.14*LEN;b=3.14*LEN*LEN;printf(a=%f,b=%fn,a,b);,编译前系统进行替换,38,5.符号常量,main()float a,b;a=2*3.14*2.5;b=3.14*2.5*2.5;printf(a=%f,b=%fn,a,b);,define是编译预处理命令,必须以“#”开头编译预处理命令在后续章节会继续讨论。,替换为,39,2.3.2 变量,1.变量的有关概念在程序运行过程中,其值改变的数据,称为变量,变量用标识符表示,称为变量名。变量必须“先定义后使用”系统为变量分配存储单元,存储变量的值。编写程序时通过变量名来存、取变量值。,例如:有变量a它的值是510,40,2.变量定义,变量定义的一般格式:数据类型说明符 变量列表;例如:int i,j;long k,m;float x,y;char ch1,ch2;,变量名:必须使用合法的标识符作变量名不能使用关键字为变量命名,多个变量之间用,分隔变量必须先定义后使用,41,说明:变量定义注意事项,多个变量之间用,分隔变量必须先定义后使用,int i,j;i=j=1;int i,int j;int a;b=10;,42,3.变量的初始化:,允许在说明变量的时候对变量赋初值。例如:int a=5,b=10+2;double x=23.568,y;char ch1=a,ch2=66,ch3=142;表示定义变量并对变量存储单元赋值。错误的初始化:int a=3+b,b=5;float m=n=23.16;,43,2.4 运算符和表达式,主要内容:算术运算符和算术表达式赋值运算符和赋值表达式关系运算符和关系表达式逻辑运算符和逻辑表达式位运算符和位运算表达式条件运算符和条件表达式逗号运算符和逗号表达式其他运算符及其运算,44,运算符的有关概念,作用:对运算对象完成规定的操作运算类型:按运算对象分:单目、双目、三目按功能分:算术、赋值、关系、逻辑条件、逗号、位、其他,45,运算符的优先级和结合性,优先级指各种运算符号的运算优先顺序例如:算术运算优先于关系运算 算术运算中先*/后+-,结合性指运算符号和运算对象的结合方向分为:从左向右(左结合)和从右向左(右结合)例如:算术运算符为左结合 a-b+4 赋值运算符为右结合 a=b=5(C语言规定见教材 附录),46,本章涉及的运算符,+-*/%+-+-=+=-=*=/=%=&=|=?:,&sizeof(数据类型标识符),47,表达式的有关概念,什么是表达式由运算符将运算对象连接成的式子,它描述了一个具体的求值运算过程。计算表达式的值按照运算符的运算规则求值求值时注意运算符的优先级和结合性表达式值的类型自动转换强制转换,48,算术运算,算术运算符的优先级,没有乘方运算符,要计算a3要写作 a*a*a 的连乘,或用标准库函数 pow(a,3)“/”的运算对象可为各种类型数据,但是当进行两个整型数据相除时,运算结果也是整型数据“%”要求运算对象必须是整型数据,功能是求两数相除的余数,余数的符号与被除数的符号相同。,例ex2_8,49,自增自减运算,+-是单目运算符有前缀和后缀两种形式 前缀形式:先自增(自减)再引用;后缀形式:先引用再自增(自减);功能:前缀形式+a 等价于 a=a+1-a 等价于 a=a 1 后缀形式 a+等价于 a=a+1 a-等价于 a=a 1,表达式的值会不同,50,例如:,当 a5 时+a 表达式的值为 6,且 a6 a+表达式的值为5,且 a6 b=+a 等价于 a=a+1;b=a 表达式的值为6,且 a=6,b=6 b=a+等价于 b=a;a=a+1 表达式的值为5,且 a=6,b=5,#includemain()int i=8;printf(%dn,+i);printf(%dn,-i);printf(%dn,i+);printf(%dn,i-);printf(%dn,-i+);printf(%dn,-i-);,例ex2_9,52,说明:,+和-的运算对象只能是变量(或运算结果是变量的表达式),不能是常量(或运算结果是数值的表达式)。例如:5+、(a+2)+不合法。具有右结合性,结合方向为从右到左。例如:a+等价于-(a+)如果有多个运算符连续出现时,C系统尽可能多的从左到右将字符组合成一个运算符例如:i+j 等价于(i+)+j-i+-j 等价于-(i+)+(-j),53,赋值运算,赋值运算符(右结合)=+=-=*=/=%=&=|=赋值表达式将表达式的值存入变量对应的内存单元中m=12b=(+a)-2 m%=3+n 等价于 m=m%(3+n)x*=(x=5),54,说明:,赋值号左边必须是变量,右边可以是C语言任意合法的表达式例如:n=t+210 等价于:a=(b=(b*c)10),55,赋值表达式的转换规则,实型 赋给 整型变量整数部分赋给整型变量,舍去小数部分int x;x=6.89;后 x=整型 赋给 实型 例如:float x;x=6;后 x=赋值号与数学中的等号含义不同例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a,6,6.0,根据左值确定表达式的类型,右边精度高,会丢失一部分数据,56,关系运算,关系运算符(左结合)=c 等价于 a=(b=c)与(a=b)=c 不等价关系运算符优先于赋值,低于算术,57,说明:,关系运算的结果应该是逻辑值。C语言用数值用 1 表示逻辑真,0 表示逻辑假例如:75 的值是 1,57 的值是 0 ab的值是 0,ab 的值是1即关系表达式的值:0 或1 关系运算符两边的运算对象的数据类型不同时,系统自动转换成相同数据类型后再进行运算(转换规则后面介绍),58,说明:,关系表达式中含有多个关系运算符时,注意与数学式的区别例如:6x0数学式:表示x的值在0到6之间关系表达式:表示6与x的比较结果(0或1)再与0比较 实型数可进行大于或小于比较,但通常不进行=或!=的关系运算float x,y;x=y=1.25;fabs(x-y)1e-5,59,逻辑运算符,逻辑运算符&|!逻辑运算符的运算规则,60,逻辑表达式,逻辑表达式用逻辑运算符将运算对象连接成的式子 例如:0&b a&b|c&d a|b-5|c/4!x+y=z 逻辑运算符的优先级 和结合性:!是单目运算符,右结合,高于算术&和|是双目运算符,左结合,高于赋值运算符,低于关系运算符,61,逻辑运算规则,从左到右依次进行逻辑计算运算对象为非0表示逻辑真运算对象为 0 表示逻辑假逻辑运算的结果为 0 或 1例如设:a=15,b=0,c=-2 a&b&c 结果为0 a|b|c 结果为1(a+c)|b&c 结果为1,62,逻辑运算规则(续),运算按照从左至右的顺序进行,一旦能够确定逻辑表达式的值,就立即结束运算逻辑运算的短路性质例如设:a=1,b=0,c=-2a&b&c,(a+)|+b&-c,为 0,运算终止,表达式值为 0,为非0,运算终止,表达式值为 1且a为2,b为0,c为-2(b,c保持原值),63,关系与逻辑运算符的应用,表示数学公式abc 判断a,b,c三条线段能否组成一个三角形 a,b不同时为负,a+bc&a+cb&b+ca,a=0|b=0!(a=0)|(a=0&b=0&b=0),ab&bc,64,位运算,有兴趣自学不要求,65,条件运算符和条件表达式,条件运算符:?:条件表达式的一般形式 表达式1?表达式2:表达式3例如:m=10&b-20?a:b x=3+a5?100:200,C语言中唯一的三目运算符,要正确区分用?和:分隔的表达式涉及条件运算符的优先级与结合性,66,条件运算符优先级,条件运算符优先级高于赋值、逗号运算符,低于其他运算符 例如:m=10&b-20?a:b x=3+a5?100:200,等价于:(mn)?(x):(a+3),等价于:(a+=10&b-20)?a:b,等价于:x=(3+a5)?100:200),67,条件运算符的结合性,条件运算符具有右结合性当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。,例如:wx?x+w:xy?x:y 与 wx?x+w:(xy?x:y)等价 与(wx?x+w:xy)?x:y 不等价,68,逗号表达式运算,逗号表达式的一般形式 表达式1,表达式2,表达式n 逗号表达式的值从左向右,依次对表达式求值,最后得到表达式n 的值就是逗号表达式的值,例如:a=5,a+,a*3 表达式值为 18,且a=6 t=1,t+5,t+表达式值为 1,且t=2 x=(a=3*5,a*4)赋值表达式的值为60,且x=60,a=15,#include stdio.hmain()int a=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf(y=%dnx=%dn,y,x);,例ex2_11,70,取地址运算符&,为单目运算符运算对象只能是变量 运算结果是变量的存储地址 例如有定义:int a,student;char ch;可以对变量a、ch、student 进行,71,长度运算符 sizeof,为单目运算符运算对象只能是变量名或数据类型标识符 运算结果为该变量或该数据类型的长度,main()int a=5;double x;printf(%d%d,sizeof(int),sizeof(a);printf(%d%d,sizeof(double),sizeof(x);printf(%d%dn,sizeof(float),sizeof(char);,输出结果:4 4 8 8 4 1,72,2.5 数据类型转换,25+48.5*A-3.56e+3 是合法的表达式吗?是不同类型的操作数,表达式如何计算?类型转换自动类型转换,强制类型转换,73,自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象类型转换,2.5.1 数据类型的自动转换,转换原则:,例如有定义:int a;char ch;表达式:a-ch*2+35La-ch*2+35.,74,赋值运算中的类型转换,=小数部分自动补0,=自动舍去实型表达式的小数部分(注意不进行四舍五入)=自动截取表达式值的低字节赋值,舍去高字节=自动给高字节补0 或补1,75,2.5.2 数据类型的强制转换,强制转换的一般形式(类型名)表达式例如:(int)(b+3*x)%3 1/(float)a+6,注意:(float)22/5 与(float)(22/5)不同错误的类型转换:(int)b=a+5 b=int(3*a),表达式没有用()括起来,类型名没有用()括起来,76/41,2.6 C语言的语句类型,主要内容:说明性语句表达式语句控制语句复合语句,77/41,1 说明性语句,对程序中使用的变量、数组、函数等操作对象进行定义、声明的描述语句只起说明作用,不产生可执行的机器指令代码。例如:int a,b;float function(int,int);,C程序由函数组成。函数的格式:函数名(参数表)说明部分;执行部分;,数据类型说明语句,可执行语句,78/41,表达式后面加一个分号,构成表达式语句x=3;y=y+5;x=a-b,2 表达式语句,注意:分号是语句必不可少的一部分 单独的一个分号“;”构成一个空语句例如:;(空语句,是最简单的C语句),79/41,3 控制语句,1选择分支控制语句 if()else switch()2循环控制语句 for()while()do while()3其他控制语句 break、continue、gotoreturn,80/41,4 复合语句,用一对花括号“”括起来的若干条语句 花括号中可以是说明语句、表达式语句、控制语句,也可以是复合语句,例如:if(ab)max=a;min=b;for(n=1;n=100)printf(“dn”,p);break;,81/41,4 复合语句(续),复合语句中如果有说明性语句,应该写在可执行语句的前面,例如:main()int a,b;a=b=100;float c=10.23;printf(%fn,c);printf(%d%dn,a,b);,要特别注意:花括号的配对花括号的位置,C语言学习的难点之一,

    注意事项

    本文(C语言程序设计第2章C语言基础.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开