版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1C语言期末复习概要一、C程序的组成与实现第1页/共96页C程序与源文件一个C程序由一个或多个源文件组成。一个源文件可以供多个C程序使用。源文件是一个程序的基本编译单位。一个源文件中包括:预处理指令全局声明函数定义第2页/共96页C程序与函数一个源文件主要由一个或多个函数组成。一个函数可以供多个源文件使用。一个C程序只能有一个主函数。函数是一个C程序的基本组成单位。一个函数包括:函数首部函数体第3页/共96页函数的结构类型标识符函数名([形式参数表列]) { [声明部分] [语句部分] }第4页/共96页函数首部类型标识符 函数的类型,也是函数返回值的类型。函数名 函数的标示符,也是函数的入口地址。([形式参数表列])
此处为形式参数,接收实际参数的单向、值传递。参数可以没有,但无论有无参数,括号均不能省略。第5页/共96页函数体函数体由花括号限定。里面可以包括声明部分和语句部分,也可以什么都没有,但花括号不能省,即空函数。声明部分定义新变量或声明已有变量和函数。语句部分执行操作,共9类语句。声明部分和语句部分可以没有,但如果有,一定要声明在前,语句在后,即变量和函数必须:先声明,再使用。第6页/共96页声明部分声明包括定义,但并非所有的声明都是定义。需要建立存储空间的。
“定义性声明”,为叙述方便,简称“定义”。2.
不需要建立存储空间的。
“引用性声明”,为叙述方便,简称“声明”。第7页/共96页语句部分1.表达式语句2.函数调用语句3.控制语句4.复合语句5.空语句6.return语句7.break语句8.continue语句9.goto语句第8页/共96页C程序的实现第9页/共96页二、操作数、运算符和表达式第10页/共96页常量在程序运行过程中,其值不能被改变的量称为常量。从字面形式即可判别的常量称为字面常量。如:56、12.3、‘a’、“helloworld!”。用一个标识符代表一个常量,称为符号常量。如:#definePI3.1416。
第11页/共96页变量变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值,在程序运行期间,这些值是可以改变的。变量名是映射一个特定存储地址的标示符。变量类型决定存储单元大小与数据存储形式。针对变量的操作是通过变量名找到对应地址,按变量类型在相应长度内按指定形式写入或读取的数据。第12页/共96页标识符用来对变量、符号常量、函数、数组、类型等命名的有效字符序列统称为标识符。标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。标识符不能是关键字(附录C)。标识符区分大小写,习惯上变量名使用小写字母,符号常量名使用大写字母。标识符的命名应尽量做到见名知意。第13页/共96页整型数据int4字节。不带小数点的数值是整型数据。十进制:123、-31八进制:0123、-037十六进制:0x12、-0x1f第14页/共96页字符型数据char1字节。字符数据是用单撇号括起来的一个字符。如‘a’、‘8’、‘?’
都是字符常量。除以上形式的字符数据外,还有一种特殊形式的字符数据,就是以转义字符“\”开始的字符序列。如“\n”。字符型变量在内存中以ASCII码形式存储,与整数的存储形式类似。两种数据可以通用。第15页/共96页浮点型数据float4字节。浮点型数据用来表示有小数点的实数。十进制小数形式。它由数字和小数点组成。如0.123、123.、123.0、0.0、.5。指数形式。 如1.2e3、12E-4
字母e或E之前必须有数字,且e后面的指数必须为整数。第16页/共96页运算符(),[] (,从左至右)!,-,++,--,*,& (一元,从右至左)*,/,% (二元,从左至右)+,- (二元,从左至右)<,<=,>,>= (二元,从左至右)==,!= (二元,从左至右)&& (二元,从左至右)|| (二元,从左至右)?: (三元,从右至坐)=,+=,-=,*=,/=,%= (二元,从右至左)
, (
,从左至右)第17页/共96页三、选择结构第18页/共96页单分支if(表达式)
语句1第19页/共96页双分支if(表达式)
语句1 else
语句2第20页/共96页多分支if(表达式1)语句1 elseif(表达式2)语句2 elseif(表达式3)语句3
…… elseif(表达式n-1)语句n-1 else语句n第21页/共96页分支的嵌套if() if()语句1 else语句2 else if()语句3 else语句4第22页/共96页if语句的表达式if语句须对“表达式”求解,根据结果的真假选择相应的语句执行。表达式通常为逻辑表达式或关系表达式,也可以是其他表达式、常量或变量。表达式结果为0,则条件为假;表达式结果非0,则条件为真。第23页/共96页if语句的内嵌语句if…else是一个完整的语句,else是if语句的一部分,但else前后的内嵌语句都要加分号。在if和else后面有且只有一条内嵌语句,如要包含多条语句,需用花括号将几条语句括起来成为一个复合语句。第24页/共96页else与if的配对else不能单独使用,并且总是与上面的最近的未配对的if进行配对。如果if与else的数目不一样,可用花括号来确定配对关系。第25页/共96页四、循环结构第26页/共96页四个要素“起点”:循环控制变量在进入循环体前必须先赋初值。“终点”:表达式可以是任意类型。结果只有0(假)和非0(真)两种情况。“步长”:循环体中应有使循环趋于结束的语句。“循环”:如果包含一个以上的语句,应该用花括号限定,以复合语句形式出现。第27页/共96页while语句“先判断,再执行”一般形式为:
while(表达式)
语句1第28页/共96页do…while语句“先执行,再判断”一般形式为:
do
语句1while(表达式);第29页/共96页for语句一般形式为:
for(表达式1;表达式2;表达式3)
语句1相当于:
for(初始条件;!终止条件;步长变化)
循环语句 第30页/共96页三种循环的比较使用while和do-while循环,循环变量的初始化应在进入while和do-while语句之前完成;在for循环中可由表达式1实现。使用while和do-while循环,循环体内应包含使循环趋于结束的语句;在for循环中可由表达式3实现。使用while和do-while循环,while后面的括号内应说明循环结束的条件;在for循环中可由表达式2说明。第31页/共96页三种循环的特点一般情况下,3种循环可以互相代替。while语句更适合处理“当”型循环。do-while语句更适合处理“直到”型循环。for语句书写灵活,功能最强,适合处理各种循环问题。只要遵循for语句的求值顺序,参数和语句可任意省略或写入无关的内容,循环功能的实现不受影响。第32页/共96页循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。3种循环(while循环、do…while循环和for循环)可以相互嵌套。第33页/共96页break语句使用break语句可以使流程跳出switch结构,继续执行switch语句下面的一个语句。使用break语句可以跳出所在的循环体,即提前结束循环,接着执行循环体下面的语句。第34页/共96页continue语句使用continue语句可以结束所在循环体的本次循环,即跳过循环体中下面尚未执行的语句,直接执行下一次循环的条件判断。第35页/共96页continue、break和goto的比较continue语句只结束本次循环;break语句则结束整个循环。goto语句从深度循环的嵌套中一次跳出多层循环。第36页/共96页五、输入与输出第37页/共96页C语言的输入与输出输入输出是以计算机为主体而言的。从计算机向输出设备输出数据称为输出。从输入设备向计算机输入数据称为输入。C语言本身不提供输入输出语句。输入和输出操作是由C函数库中的函数来实现的。使用“标准输入输出函数”的源程序文件在引用这些函数前必须:#include<stdio.h>。第38页/共96页printf()输出若干个任意类型的数据。函数形式:
printf(格式控制,输出表列)格式控制是用双撇号限定的字符串,包括:格式说明。由“%”和格式字符组成。普通字符。普通字符即需要原样输出的字符。输出表列是需要按指定格式输出的若干数据。可以是变量,也可以是表达式。由逗号隔开。第39页/共96页scanf()输入若干个任意类型的数据。函数形式:
scanf(格式控制,地址表列)“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。第40页/共96页putchar()输出一个字符。函数形式:
putchar(c)参数c可以是常量也可以是变量;可以是字符型数据也可以是整型数据。第41页/共96页getchar()输入一个字符。函数形式:
getchar()参数是从输入设备得到的字符。第42页/共96页puts()以第一个‘\0’做结束标志,将一个字符串输出到终端,并将‘\0’转换成‘\n’输出。函数形式:
puts(字符数组名)第43页/共96页gets()以‘enter’作为结束标志,输入一个字符串到字符数组。函数形式:
gets(字符数组名)第44页/共96页strlen函数检测字符串的长度。函数形式:
strlen(字符数组名)函数值返回值为被测字符串的实际长度(不包括’\0’在内)。第45页/共96页格式符%d: 十进制整数。%f: 十进制实数。%c: 单个字符。%s: 一个字符串。第46页/共96页修饰符-:输出的数字或字符在域内向左靠拢。m:数据最小宽度n:输出的小数位数;第47页/共96页六、数组第48页/共96页数组的概念数组是具有同一类型的有序数据的集合。C语言规定只能逐个引用数组元素而不能一次引用整个数组。必须先定义数组,然后引用数组元素。数组中各元素类型相同,与数组类型一致。每个元素由统一的数组名和惟一的下标确定。下标从‘0’开始,必须为整型常量或表达式。第49页/共96页数组的本质数组中的所有元素在内存中都是连续字节存放的,即保存在一块连续的内存区中。数组中各元素所占内存的大小为该元素所属基本类型的大小。数组所占内存的大小为一个元素所占内存的大小乘以元素个数。第50页/共96页数组的定义定义一维数组的一般格式为:类型说明符数组名[常量表达式];例如:
inta[10];第51页/共96页数组的初始化定义时给所有元素赋值(1):
inta[3]={1,2,3};定义时给所有元素赋值(2):
inta[]={1,2,3};定义时给部分元素赋值:
inta[3]={1,2};第52页/共96页字符数组的定义用来存放字符型数据的数组是字符数组。字符数组中每个元素存放一个字符。定义字符数组的一般格式为:
char数组名[常量表达式]例如:charc[10];(数组长度10字节) 第53页/共96页使用字符对数组初始化对字符数组初始化时可将逐个字符赋给数组中各元素。例如:charc[5]={‘H’,‘e’,‘l’,‘l’,‘o’};字符数组长度与初值个数相同时,可省略数组长度。如果初值个数小于数组长度,其余的元素自动赋为空字符(即’\0’)。字符数组长度小于初值个数时,系统报错。第54页/共96页使用字符串对数组初始化charc[]={“Iamhappy”};花括号可省。省略数组长度,系统自动添加‘\0’作结束符。数组长度大于字符串常量的字符数个数时,多出的元素自动赋为空字符(即‘\0’)。数组长度小于字符串常量的字符数个数时,多出的字符不被存储。组长度等于字符串常量的字符个数时,本应自动添加的“\0”将不被存储。第55页/共96页字符数组与字符串字符数组是元素为字符变量的数组。字符串则是以‘\0’为结束字符的字符数组。字符数组是定长的,由下标控制访问。字符串是可变长的,因此必须用‘\0’来标记字符串的结束。第56页/共96页%c与%s用%c输入输出逐个字符。用%s输入输出整个字符串。用%c输出字符,长度由循环控制变量决定。用%s输出字符串,到(不包括)’\0’结束。用%c输入字符,输入项是元素的地址。用%s输入字符串,输入项是数组名。用%c输出字符,输出项是元素。用%s输出字符串,输出项是数组名。第57页/共96页指针第58页/共96页相关概念地址是指内存中每个字节的具体编号。变量的地址是指特定存储单元的首字节编号。变量名是表示特定变量地址的识标符。指针就是地址。变量的指针即是变量的地址。指针变量则是专门用来存放地址的变量。第59页/共96页指针变量的定义定义指针变量的一般形式为:
基类型*指针变量名;使用指针变量存放内存中任意一个地址是没有意义且危险的。通常指针变量用来存放特定的某一变量的地址,使指针变量指向该特定变量。第60页/共96页指针变量与变量若:inta=1;p=&a;(设a的地址为2000)*p 表示a,1。&*p 表示p、&a,2000。*&a 表示a、*p,1。++a 表示2。(仅是a自增)++P 表示2004。*p++ 表示先得到a,再使p更新为2004。(*p)++表示a++(先用a,再a自增),2。第61页/共96页指针变量与数组p==a==&a[0];*p==a[0]p+i==a+i==&a[i]*(p+i)==*(a+i)==a[i]第62页/共96页指针变量与数组元素*(a+i)或*(p+i)若指针p指向a数组的第i个元素,则:*(p++)=a[i++];*(p--)=a[i--] *(++p)=a[++i];*(--p)=a[--i]第63页/共96页指针变量与字符串C语言将字符串常量按字符数组存放在内存中,该数组没有名字,不能用数组名引用,只能通过指针变量引用。例如:char*string=“happy!”;(初始化)指针变量string存放的是字符串首字节地址,而不是整个字符串。第64页/共96页指针变量与字符数组定义:
chara[]=“hello”; char*p=“hello”;
chara[];a[]=“hello”; char*p;p=“hello”;输入:
scanf(“%s”,a); scanf(“%s”,*p);
scanf(“%s”,&a[0]); scanf(“%s”,p);输出:
printf(“%s”,a); printf(“%s”,*p);
printf(“%s”,&a[0]);
printf(“%s”,p);第65页/共96页指针变量与字符数组名字符指针是变量,字符数组名是常量。
chara[]=“hello”; char*p=“hello”; a=a+i; p=p+i;
*a++; *p++; *(a+i); *(p+i);第66页/共96页函数第67页/共96页函数的执行程序执行从主函数开始,在主函数中结束的。主函数只能被系统调用,主函数执行完后,流程返回操作系统。主函数可以调用其他函数,其他函数可以相互调用。被调函数执行完后,流程返回主调函数的调用结束处。第68页/共96页函数的调用函数语句 print_start();
被调函数只完成一定的操作,无返回值。函数表达式 c=max(a,b);
被调函数的返回值参加表达式的运算。函数参数 c=max(max(a,b),c);
被调函数的返回值作为另一被调函数的其中一个实参。第69页/共96页函数的返回值return语句将被调函数的返回值返回到主调函数的调用处。一个函数可以包含多条return语句。但一条return语句只能返回一个值。返回值类型应与函数类型一致。如不一致,返回值自动进行类型转换。函数定义为void(空类型),被调用时不返回任何值,函数体内不得出现return语句。第70页/共96页函数的定义与声明函数的定义 对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。函数的声明 把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。第71页/共96页对被调函数的声明被调用的函数必须是已经存在的函数。如调用库函数,应用#include命令将所需头文件“包含”到本文件中去。如调用自定义函数,如被调函数的定义在主调函数之后,应该在主调函数中对被调用的函数作声明。对函数的定义出现在主调函数之前,则调用前可以不必加以声明。第72页/共96页函数的参数在定义函数时函数名后括号中的参数为“形式参数”(简称“形参”)。在主调函数中调用一个函数,该函数名后括号中的参数为“实际参数”(简称“实参”)。实参向形参的数据传递是“单向的”、“值传递”。形参与实参的类型必须相同。实参必须是确定的值,形参必须是变量。第73页/共96页函数参数的传递实参(数值) 常量、基本类型变量、数组元素形参(数值) 基本类型变量实参(地址) 变量地址、数组名、指针变量形参(地址) 数组(数组名实际为指针变量)、指针变量第74页/共96页八、变量的作用域和生存期第75页/共96页作用域
作用域局部变量全局变量自动变量静态局部变量寄存器变量静态外部变量外部变量第76页/共96页生存期生存期动态存储静态存储自动变量寄存器变量静态局部变量外部变量形式参数静态外部变量第77页/共96页存放位置存放位置静态存储区动态存储区静态局部变量静态外部变量自动变量和形式参数寄存器变量外部变量CPU寄存器第78页/共96页总结变量存储类别函数内函数外作用域存在性作用域存在性自动变量和寄存器变量√√××静态局部变量√√×√静态外部变量√√√(本文件内)√外部变量√√√√第79页/共96页指针第80页/共96页相关概念地址是指内存中每个字节的具体编号。变量的地址是指特定存储单元的首字节编号。变量名是表示特定变量地址的识标符。指针就是地址。变量的指针即是变量的地址。指针变量则是专门用来存放地址的变量。第81页/共96页指针变量的定义定义指针变量的一般形式为:
基类型*指针变量名;使用指针变量存放内存中任意一个地址是没有意义且危险的。通常指针变量用来存放特定的某一变量的地址,使指针变量指向该特定变量。第82页/共96页指针变量与变量若:inta=1;p=&a;(设a的地址为2000)*p 表示a,1。&*p 表示p、&a,2000。*&a 表示a、*p,1。++a 表示2。++P 表示2004。*p++ 表示先得到a,再使p更新为2004。(*p)++表示a++,2。第83页/共96页指针变量与数组p==a==&a[0];*p==a[0]p+i==a+i==&a[i]*(p+i)==*(a+i)==a[i]第84页/共96页指针变量与数组元素*(a+i)或*(p+i)若指针p指向a数组的第i个元素,则:*(p++)=a[i++];*(p--)=a[i--] *(++p)=a[++i];*(--p)=a[--i]第85页/共96页指针变量与字符串C语言将字符串常量按字符数组存放在内存中,该数组没有名字,不能用数组名引用,只能通过指针变量引用。例如:char*string=“happy!”;指针变量string存放的是字符串首字节地址,而不是整个字符串。第86页/共96页指针变量与字符数组定义:
chara[]=“hello”; char*p=“hello”;
chara[];a[]=“hello”; char*p;p=“hello”;输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/SXJP 066-2023冷鲜猪肉
- T/SZBX 106-2022农家乐餐饮服务规范
- T/EPIAJL 3-2019 T/LEPA 1-2019超期服役火电机组寿命评估技术细则
- T/CI 1259-2025填料硫酸钙 (MR硫酸钙)
- T/CAAM 0004-2025频谱热疗房
- T/COEMA 25-2026激光安全员岗位规范
- 2025~2026学年河南省安阳市滑县人教版六年级上册12月月考数学试卷【附答案】
- 2025~2026学年安徽合肥市庐江县苏教版第二册四年级数册末质量检测试卷(A卷)【附答案】
- 2025-2026学年湖北省宜都市初中历史九年级期末下册通关重点试题(附答案)
- 2025-2026学年四川省攀枝花市初中历史九年级期末下册自我评估黑金试卷(附答案)
- 2026年网信办网络舆情管理岗笔试真题(含答案)
- 2026“外研社·国才杯”“理解当代中国”外语能力国际传播综合能力赛项真题及答案解析(10月11日上午场次)
- 2026年七年级数学竞赛试题及答案
- 河南2027届高三年级过程性作业评价(青桐鸣)联考数学+答案
- 2024 人身保险伤残评定及代码
- 九年级上册英语完形填空100篇(含答案解析)
- 2026全国《安全生产法及重大事故隐患判定》竞赛知识考试题库与答案
- 教育评价学教学课件
- 老年患者呼吸困难护理
- 2026年物流师职业能力等级认证考试(中级)考前冲刺试题及答案
- 2026年高考高校招收华侨港澳台生化学试卷试题(含答案详解)
评论
0/150
提交评论