第三章程序组成与简单程序设计.ppt
《第三章程序组成与简单程序设计.ppt》由会员分享,可在线阅读,更多相关《第三章程序组成与简单程序设计.ppt(89页珍藏版)》请在三一办公上搜索。
1、教学大纲,第三章 程序组成与简单程序设计,前言:c语言中的词汇 3.2 程序处理对象 3.3 表达式和语句 3.4 输入/输出函数的使用 3.5 简单程序设计 3.6 本章小结 3.7 习题,前言,C语言的词法记号1、标识符 名字,可由用户定义2、关键字 每一个关键字都有特殊的含义3、运算符4、分隔符5、注释符/*/成对出现,关键字,关键字:C语言中具有特定意义的字符串,又称保留字,3.1 程序处理对象,3.1.1 字符 字符是构成程序设计语言的最小基本单位,C语言中的基本字符包括数字、英文字母和特殊符号三类:数字:0、1、2、3、4、5、6、7、8、9。英文字母:小写字母az、大写字母AZ。
2、特殊符号:空格、!、#、%、&、*、(、)、+、_、/、|、;、“、:、?、,、,、.、。如果在程序使用了其他字符,则编译时会出错。每个字符都对应一个事先定义的数值,附录1给出了计算机中常用字符的ASCII。,在第2章中曾提到过:算法处理的对象是数据,而数据是以某种特定形式存在的(如:整数、实数、字符等形式)。常量与变量的划分标准:根据数据在程序运行过程中是否发生变化。数据类型划分的依据:按数据的性质、表示形式、占据的存储空间大小及构造特点。,C 语言提供的数据类型,C语言的数据类型,基本数据类型,指针类型,空类型,结构类型,整型,实型,字符型,枚举,数组,结构体,共用体,3.1.2 常量,常
3、量:在程序运行过程中,其值不能被改变的量称为常量。常量区分为不同的类型:12,0,-3为整型常量;4.6、-1.23为实型常量;a,d为字符常量;“student”为字符串常量;#define PRICE 30 是定义了一个符号常量PRICE。,习惯上,符号常量名用大写,变量用小写,以示区别。使用符号常量的好处是:含义清楚见名知意;在需要改变一个常量时能做到“一改全改”。,3.1.3 变量,变量:在程序运行过程中,其值可以改变的量称为变量变量的基本要素:变量名:即每个变量的名字,遵循标识符的命名规则 变量值:在程序运行过程中,变量值存储在内存中使用要求:变量要“先定义,后使用”,1、标识符的命
4、名规则,标识符:程序中用户对变量、函数、常量、数组、指针所取的名字。规则:由AZ、az、09及下划线(_)组成第一个字符必须是字母或下划线不能是关键字严格区分大小写,以下是非法的标识符:(1)3x 以数字开头(2)a-bc 出现了-(3)if if是关键字,2、变量的数据类型,与常量类似,变量也有整型、实型、字符型等类型,变量的数据类型不同,它们在内存空间所占的字节数也不同。在C语言中,各数据类型分别有对应的关键字来说明。在32位系统中各种数据类型的关键字、在内在中所占有的字节数以及所能表示的数值范围如下表:,C语言的基本数据类型,数据类型,说明:,短整型、基本整型和长整型数据在VC中的长度和
5、所能表示的数值范围是一样的,没有什么区别;但它们在16位系统中是不同的;短整型数据为1个字节,基本整型数据为2个字节,而长整型数据为4个字节。,3.变量的定义与初始化,定义格式:存储类型 数据类型 变量名1,变量名2例如:普通整型(int a,s=0;)长整型(long int b,t=1;)短整型(short int c;)符号整型(unsigned int d;)单精度实型(float e;)双精度实型(double f;)字符型(char ch;),说明:,在定义变量时,可以同时定义多个相同类型的变量,各变量之间用逗号隔开;类型说明符与变量名之间至少要有一个空格;最后一个变量名后以分号“
6、;”结束。,变量的初始化:,一个变量一旦定义,系统就为其分配了一个存储空间,此时变量的值是未知的,而不是0;实际上所有未赋值的变量的值都是未知的。初始化分类:1、在定义时为变量初始化 格式:数据类型 变量名=初值1,变量名2=初值2;例如:int age=18,paper=3;,2、先定义,后赋初值 格式:存储类型 数据类型 变量名1,变量名2 变量名1=初值1;变量名2=初值2;例如:float x,y,z;x=3.2;y=3f;z=0.75;注意:在说明时不允许连续赋值,例如下面的初始化语句是错误的:int a=b=c=5;,main()int i,j;I=10;j=20;k=30;sum
7、=i+j;int sum;printf(“sum=%dn”,sum);,1、变量 k 未定义;2、变量 sum 是先使用,后定义的;3、I 变量没有定义,i没有赋初值。,查错,3.1.4 数组,提示:如何表示全班所有同学的数学成绩?如何表示全年每个月的收入?,什么是数组呢?,数组:是指把具有相同类型的若干变量有序地组织起来。,(1)具有相同的变量名,带有不同的下标,如a0、a1、a2(2)a称为数组名,a0、a1、a2称为数组元素(3)内存中占有连续的内存单元,数组的特点:,1、一维数组,(1)一维数组的定义 数据类型 数组名常量表达式,;说明:,“数据类型”是指数组元素的数据类型 数组同变量
8、一样,必须先定义,后使用。“常量表达式”必须用方括号括起来,指的是数组的元素个数(又称数组长度),它是一个整型值,但不能包含变量。数组元素的下标,是元素相对于数组起始地址的偏移量,所以从0开始顺序编号。,例1.int a7,int类型的数组a,最小下标为0,最大下标为6;数组长度为 7;在内存中占有连续的4*7=28个内存单元(字节)。,例2.#define n 5 float bn;,float 类型的数组b,最小下标为0,最大下标为4;数组长度为5;在内存中占有连续的 4*5=20 个内存单元(字节)。,n不能是变量,(2)一维数组元素的引用,数组必须先定义,然后使用。c语言规定只能逐个引
9、用数组元素而不能一次引用整个数组。下标:是元素相对于数组起始地址的偏移量,且从0开始,长度为n的数组,其元素下标的范围是0n-1。引用形式:数组名下标 其中,下标是任何非负整数,在c程序设计过程中,我充分考虑到下标是否越界问题,否则处理程序时可能会出错。,例如,定义一个共有8个元素的整型数组data:int data8;则内存为其分配了8个整数存储空间,且各元素连续存放,如下图所示:,数组中的每个元素相当于一个变量,可以对其赋值或参与各种运算,(3)一维数组的初始化,初始化的格式:数据类型 数组名常量表达式=初值表例如:float score3=1.1,3.4,9.2,ratio4=0.1,0
10、.2,length=2.3,3.8;初始化情况的说明:在定义数组时对数组元素赋以初值。例如:float score3=1.1,3.4,9.2;可以只给一部分元素赋值。例如:ratio4=0.1,0.2;在对全部数组元素赋初值时,可以不指定数组长度。例如:length=2.3,3.8;,在赋初值时,只能逐个元素进行赋值,ratio0=0.1,ratio1=0.2,ratio3=0,ratio4=0,数组length的长度是2,其等价定义是:int length2=2.3,3.8;,一维数组应用举例,有一个数列,其前两项为1,1,从第三项开始,每一项是前两之和(2,3,5,8,13,21),试打印
11、该数列的前40项。,算法思想 若用数组a来存放数列的值,则a0=1,a1=1,a i=ai-2+ai-1(i=3,4,,39),main()int i,a40;a1=1;a2=1;for(i=3;i=39;i+)ai=ai-2+ai-1;for(i=0;i=39;i+)printf(%6d,ai);if(i%10=0)printf(n);,数组元素的赋值,数组元素的输出,一维数组总结,(1)一维数组定义的方法及每一个参数的意义 int a10;float b20;(2)一维数组在内存中占有连续的单元 a数组占40个字节单元,b数组占80个字节单元(3)一维的输入和输出是在一重循环中实现的(4)
12、一维数组元素的引用是通过下标变量实现的,2、二维数组,数据类型 数组名 行常量表达式 列常量表达式,行数,元素个数=行数*列数,列数,注意:数组元素在内存中的排列顺序为“按行存放”,例 int a33;float b25;int c234;int a3,4;(),int a33,(1)二维数组的定义,(2)二维数组元素的引用,引用形式:数组名行下标表达式列下标表达式 其中,“行下标表达式”和“列下标表达式”都应是整型表达式或符号常量,其值都应在已定义数组大小的范围内。例如:int x32,则可用的行下标范围为02,列下标范围为01。,(3)二维数组的初始化,两种方式:按行赋初值,其格式:数据类
13、型 数组名行常量表达式列常量表达式第0行初值表,第1行初值表,最后1行初值表;,例如:(1)int a43=1,2,3,4,5,6,7,8,9,10,11,12(2)int a43=1,2,4,5,7,10(3)int a43=1,2,4,5,7,数组a43在内存中的分配情况,按二维数组在内存中的排列顺序给各元素赋初值,其格式:数据类型 数组名行常量表达式列常量表达式初值表;赋值规则:按二维数组在内存中的排列顺序,将初值表中的数据依次赋给各元素。如果对部分元素赋初值,则“行数”可以省略,即只能省略“行常量表达式”,而“列常量表达式”不可省略。,例如:int a 3=1,2,4,5,7,第一维也
14、可省略,数组a3在内存中的分配情况,main()int i,j,array45;/*定义1个2行3列的二维数组array*/for(i=0;irow;i+)/*外循环:控制二维数组的行*/for(j=0;jcol;j+)/*内循环:控制二维数组的列*/scanf(“%d”,二维数组的赋值和输出是在二重循环中实现的,3.1.5 字符串,一个数组的元素如果是字符型,则可称为字符数组,字符数组也可以进行初始化。例如:char a10,b23;char c5=I,a,m,h,a,p,p,y;char d32=,*,*,*;,在C语言当中,字符串的处理可用字符数组来完成,可对其进行初始化。初始化形式:c
15、har c=“I am happy”;与 char c11=“I am happy”;等价 char c=“I am happy”;,在附录5中详细介绍了字符串常量的概念。C语言规定以转义字符”0”作为字符串结束标志,字符串长度是结束符”0”之前的实际字符,因此要正确地处理字符串,其最小长度必须等于字符串长度加1。字符串名称(字符数组的名称)是存放字符串内存空间的首地址。对于字符串的处理系统自带了一些库函数,附录8中列出了常用库函数的说明。,char c10=“china”;,在c语言的字符集中,还有一种特殊的字符转义字符,主要是为了表示一些不能用符号表示的控制符。转义字符是用反斜杠“”开头的
16、,常用的转义字符如下表示:,3.1.6 指针,1、地址与指针内存单元、地址 按字节编址的计算机:存储器中的一个字节称为一个单元,一个内存单元就有一个地址编号,即内存地址指针 在程序设计中,通常把内存单元的编号(即地址)称为指针。,在c语言中,表示变量的地址(即指针)有两种情况:,若变量是一个基本类型(int,float,char),C语言可用地址运算符,&a=2A00,&b=2A02,若变量是一维数组,则数组名就是地址。如果字符串常量,这时仅需直接写出字符串的名称,不必加地址运算符。,Int a10,其中a就是地址。,字符串名称是变量的地址,2、指针变量,实例:,钥匙,物品,取到物品,抽屉,储
17、物柜,拿钥匙,(a)取钥匙开柜子取物,2600,37,求值:*ptr,指针ptr的存储单元(2002):,求i的地址 ptr=&i,变量i的存储单元(2600):,(b)取地址求单元中的数值,指针变量 是指存放另一个变量的地址(如ptr=&a)的变量,其在内存中也有一个地址。变量的访问形式,直接访问形式:通过变量名来访问,如a=34;间接访问形式:通过变量的地址来访问*(,&:表示取变量的地址*:表示取变量的内容,指针变量的定义形式:*;说明:“指针变量名”是存放指定数据类型变量的地址变量,又称为指向数据类型的指针变量,简称指针;“*”表示要说明的是一个指针变量。,例如:int*ptr;/*p
18、tr是指向一个存放整型变量的地址*/,注意:一个指针变量只指向某一类型的变量,不能时而指向一个浮点变量,时而指向一个字符型变量。,指针变量的赋值,方法一:在指针变量定义时赋初值 int a=50,*p1=,方法二:在程序中对指针变量赋值 int a,*p1;p=,不能写成*p=&a,注意:不允许把一个常数赋予指针变量,下面的赋值是错误的:int*p;p=1000;,3.1.7 其他数据类型,在C语言中,除了前面所介绍的数据类型外,还有其他的数据类型,如结构与联合、文件等,将在第7、8章进行介绍。对于枚举、类型定义、位运算等,在附录9、10中做了介绍。,3.2 表达式和语句,在C语言中,程序的主
19、体是函数,函数是由语句构成,而语句是由表达式与语句结束符组成的。,3.2.1 运算符与表达式 c语言有丰富的运算符和表达式,在具体应用用时,所考虑的问题:运算符和表达式所存在的优先级和结合性问题。,常见的运算符,1、算术运算符,算术运算:+(加)、-(减)、*(乘)、/(除)、%(取模)、+(增1运算符)、-(减1运算符)。,(1)、“+”和“-”运算既可以作双目运算,也可以作单目运算,单目运算时其优先级较高5*2 等价于 5*(-2),(2)、“*”运算符不能丢失x*y不能写成xy。,(3)除法运算符“/”两个整数相除,其商为整数,小数部分被舍弃,若操作数中有一个为实型,则商为双精度型。例如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 章程 组成 简单 程序设计
链接地址:https://www.31ppt.com/p-5009606.html