c语言知识点串讲.ppt_第1页
c语言知识点串讲.ppt_第2页
c语言知识点串讲.ppt_第3页
c语言知识点串讲.ppt_第4页
c语言知识点串讲.ppt_第5页
免费预览已结束,剩余73页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通院科协C语言串讲,主讲人:高尚华,没错,划重点!,其他内容不幸被考到不要骂我,1.2C语言简介C程序的格式,总结:1、一个C源程序由函数组成,这使得程序容易实现模块化。其中有且仅有一个main()主函数,它是程序的入口,与main函数的位置无关;2、分号“;”是C语句的一部分,每一条语句均以分号结束,即使是程序中最后一条语句也应包含分号;5、程序的注释部分应该在/*/之间,/和*之间不允许有空格。,1.2C语言简介,标识符:C语言中的标识符用于给程序中的常量,变量,函数,文件指针和数据类型等命名。其构成规则如下:C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。大小写区分,主要内容,2.1常量与变量2.2基本数据类型2.3运算符与表达式2.5输入输出函数,C语言提供了以下一些数据类型。,数据类型,构造类型,指针类型,空类型(无值类型)void,2.0C的数据类型,2.1常量与变量,2.1.2变量变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值,在程序运行期间,这些值是可以改变的。变量名实际上是以一个名字对应代表一个地址。,2.2.4字符型数据,用一对单引号括起来的单个字符。(只能包含一个字符),转义字符(x只占一个字节)。如:n换行字符型变量用来存放字符常量,注意只能放一个字符。字符变量的定义形式如下:charc1,c2;对c1,c2赋值:c1a;c2b;,1、字符常量变量,4、字符串常量字符串常量是一对双撇号括起来的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,结论:不能把一个字符串常量赋给一个字符变量。,2.3运算符和表达式,2.3.1运算符简介1.语言的运算符有以下几类:算术运算符(+-*/%)关系运算符(!)逻辑运算符(!|),单目运算符都是自右向左结合的:*以下语句执行后x,y,z的值是()if(xy);z=x,x=y,y=z;,2.3.7自增、自减运算符(自右向左)作用是使变量的值增或减仅用于整型变量和指针变量如:,(在使用之前,先使的值加(减),(在使用之后,使的值加(减),+自增1,自减1,Ex:i=0;a=0;a=i+;a=+i;,综合实例:,若b为float型变量,且已赋值8.79452,能正确使b中的值保持两位小数,删去此后小数的语句是(c)b=b*100/100b=(int)b*100/100.0;b=(int)(b*100)/100.0b=int(b)*100/100.0,C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的例如:字符输入函数:getchar字符输出函数:putchar格式输入函数:scanf格式输出函数:printf字符串输入函数:gets字数穿输出函数:puts,2.5数据的输入输出,本章要点,选择结构各种语句结构和使用循环结构各种语句结构和使用,3.0顺序结构程序设计举例,C语言提供的选择结构有两种:if语句、switch语句。,3.1选择结构,3.3.1if语句,if语句:对所给条件进行判定,根据判定结果决定是否执行程序段。,语句形式:,if(表达式)语句;,语句执行流程:,语句形式:,switch(表达式)case常量1:语句1;case常量2:语句2;case常量3:语句3;.case常量n:语句n;default:语句n+1;,根据表达式的不同值,选择不同的程序分支,又称开关语句。,数值型枚举型字符型,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,3.1.5switch语句,if(表达式)语句1;else语句2;,表达式,语句1,真(非0),假(0),语句2,3.3.2if-else语句,if-else语句适合于解决双分支选择问题else与上边一个if配对,语句形式:,语句执行流程:,3.2循环结构,在C语言中有三种循环结构:while,do-while和for循环。构成有效循环的条件:循环体和循环结束条件。,3.2.1用while语句实现循环,while语句用来实现“当型”循环结构。一般形式:while(表达式)语句当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。,3.2.2用do-while语句实现循环,do-while语句的特点:先执行循环体,然后判断循环条件是否成立。一般形式:do循环体语句while(表达式);,执行过程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。,本行的分号不能缺省,inta=10;docout#;while(a-);,3.2.3for语句,一般形式:for(表达式1;表达式2;表达式3)语句表达式1:用于循环开始前为循环变量设置初始值。表达式2:控制循环执行的条件,决定循环次数表达式3:循环控制变量修改表达式。循环体语句:被重复执行的语句,每执行一次,表达式3就改变一次循环变量的值,直到表达式2条件不再满足。,for语句的执行过程:(1)先求解表达式1。(2)求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第(3)步。若为假(值为0),则结束循环,转到第(5)步。(3)求解表达式3。(4)转回上面第(2)步骤继续执行。(5)循环结束,执行for语句下面的一个语句。,本章要点,掌握一维的定义和引用方法、存储结构和初始化方法。掌握一维数组进行编程的技术。,1.问题的提出假设我们将26个数分别存放在26个变量中,要计算26个变量的和,如何做?将26个变量逐个加起来?能否使用循环语句?for(sum=0,i=0;i26;i+)sum=sum+i;正确吗?,4.1数组的概念,2.使用数组解决问题(掌握!)定义一个变量,包含26个数据,称为数组变量。main()inti,sum=0,a26;for(i=0;i26;i+)scanf(“%d”,C语言为这些数据,提供了一种构造数据类型:数组。所谓数组就是一组具有相同数据类型的数据的有序集合。这些数据被称为数组的元素。,4.2一维数组的定义和引用,4.2.1一维数组的定义1、定义一维数组的一般方式:类型说明符数组名常量表达式;,指明数组元素的数据类型,指明数组所含的元素个数,下标从0开始,常量表达式说明数组元素的个数,必须是大于0的整型常量表达式(包括常量和符号常量)。不允许是变量,不能进行动态定义。,4.2.2一维数组的初始化,1.定义时初始化,方法:将初值依次写在花括号内。,如:inta5=2,4,6,8,10;,说明:(1)只给数组中部分元素赋初值,其他元素按零处理。如:inta9=1,2;则a0=1,a1=2,a2a8值全为0。,(2)对数组元素全部置。inta5=0,0,0,0,0;或:inta5=0;,4.2.3引用一维数组元素,1.数组元素的表示形式:数组名下标,当数组的元素类型为字符型时,被称为字符数组。如:charc10;则c为字符数组。字符数组的定义、初始化和元素的引用与一般的数组相同。,4.4字符数组4.4.1字符数组的定义,4.4.4字符数组的输入输出,字符数组的输入输出可以有两种方法:逐个字符输入输出。用格式符“%c”输入或输出一个字符。将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。,假设有定义chara10;,1.用格式符“%c”逐个字符输入输出:,scanf(“%c”,/*每次输入输出一个字符*/,2.用格式符“%s”整个字符串输入输出:,例用%smain()charstr5;scanf(“%s”,str);printf(“%s”,str);,用字符数组名,不要加intlen,i,letter=0,digit=0,space=0,other=0;printf(pleaseinputastringn);gets(str);len=strlen(str);for(i=0;i=a,例4-10输入一行字符,统计其中英文字符、数字、空格及其他字符的个数。,主要内容(重、难点),5.1地址和指针的概念5.2变量的指针和指向变量的指针变量5.3通过指针引用数组5.4通过指针引用字符串,5.2变量的指针和指向变量的指针变量,5.2.1怎样定义指针变量,定义指针变量的一般形式为:基类型*指针变量名;,1)定义并初始化指针变量inti=3;int*p=,有关的两个运算符:取地址运算符。相当于x+。+(*p);相当于+x。,5.3通过指针引用数组,在C语言中,数组名代表该数组的首地址,即数组中第一个元素的地址,也称为该数组的指针。每一个数组元素也有一个地址,称为该元素的指针。,5.3.1数组元素的指针,例如:inta10;(定义a为包含10个整型数据的数组)int*p;(定义为指向整型变量的指针变量)p和p=int*p=a;for(;pa+10;p+)scanf(%d,p);printf(n);for(p=a;pa+10;p+)printf(%d,*p);,inta10,i,*p;p=a;for(i=0;i10;i+)scanf(%d,p+i);printf(n);for(i=0;i10;i+)printf(%d,*(p+i);,注意:a和a0具有不同含意。前者是一个地址常量,是存储单元a0的地址;而后者是一个变量名,代表一个存放数据的存储单元。p是地址变量,它可以指向任何地址变量,因此,可以对其进行加、减和赋值运算。p+;p=a;p=是非法的,5.4指针与字符串,当把一个字符串赋给一个字符指针变量时,是把该字符串的首地址赋给了指针变量。例如:char*str=“Hello!;,注意:1、数组名是地址常量,不能重新赋值。charstr=Hello!;或charstr20;str=“Hello!”;/把一个字符串赋给数组名是错误的。2、可将一个字符串常量赋值给一个字符指针变量。char*str=Hello!;或char*str;str=“Hello!”;,程序运行后,输出结果是_Voidmain()char*p=abcdefg;p+=3;printf(%sn,p);,本章要点,掌握函数的定义与应用。掌握函数的传值调用与传址调用方式。掌握主被调函数间的参数传递。,6.1.2函数的定义,1、定义函数的一般形式为:类型标识符函数名(形式参数表列)声明部分/*函数体变量说明语句*/语句部分/*函数体执行语句*/,函数的定义不能嵌套定义。,总结:函数的声明和调用-1,(1)如果被调用函数放在调用函数之前定义。例如:/*被调函数*/intfun1(inta2,intb2,intc2,.)main()fun1(a1,b1,c2,.);/*调用函数*/,函数的声明和调用-2,(2)在调用函数内声明。例如:main()intfun1(inta2,intb2,intc2,.);/*函数声明*/fun1(a1,b1,c2,.);/*函数调用*/intfun1(inta2,intb2,intc2,.)/*函数定义*/,函数的声明和调用-3,(3)如果文件开头对所调用的函数进行了声明,则各函数中不必对所调用函数再作声明。例如:intfun1(inta2,intb2,intc2,.);/*函数声明*/main()fun1(a1,b1,c2,.);/*函数调用*/intfun1(inta2,intb2,intc2,.)/*函数定义*/,6.2.4函数的返回值,函数的返回值是通过函数调用使主调函数得到的确定值。,注意:凡不加类型说明的函数,自动按整型处理。说明:1.函数的返回值是通过函数中的return语句获得的。return语句后面的括弧也可以不要例如:“return;”等价于“return();”,6.3函数的参数(掌握在程序中的应用),数据在函数间传递数的方式有三种:(1)值传递-通过数据传递(单向)(2)地址传递-通过地址传递(双向)(3)全局传递-通过全局变量传递,6.3.1传值调用,(1)传值调用时,系统将主调函数的实参值复制给对应的被调函数的形参。形参的变化不会影响到实参的值。(2)如果主调函数中传入的实参是:常量、普通变量、表达式或数组元素,那么,主调函数实参与被调函数的形参之间的参数传递是“值”传递,函数的调用类型为传值调用。,6.3.2传址调用,(1)传址调用时,系统先计算主调函数实参变量的地址,复制到被调函数形参指针的内存单元中,即使形参指针指向了实参变量。因此,形参的变化将影响到实参的值。(2)如果主调函数中传入的实参是:变量的地址或指针变量、数组名、字符串名等,那么,主调函数实参与被调函数形参之间的参数传递是“地址”传递,函数的调用类型为传址调用。,传址调用示例1(重点!),例:交换两个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论