




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲:鲁法明fm_lu163课程相关计算机学科中心课程计算机学科中心课程多编程多编程(手写手写),多调试,多调试(上机上机) 1.1 1.1 适用范围及特点适用范围及特点JavaC语言语言面向对象,平台无关,安面向对象,平台无关,安全稳定,多线程。适合开全稳定,多线程。适合开发大型应用程序,尤其是发大型应用程序,尤其是Internet应用开发应用开发最初用于编写操作系统,最初用于编写操作系统,简洁灵活功能强简洁灵活功能强,尤其适,尤其适用于系统软件及对硬件进用于系统软件及对硬件进行操作的场合行操作的场合纯面向对象纯面向对象(类,继承)类,继承),多多线程线程(分析问题(分析问题,设计类设计类,
2、通过继通过继承和接口等有效实现类)承和接口等有效实现类)面向过程面向过程,逐个函数逐条语逐个函数逐条语句执行。句执行。(确定(确定解题步骤解题步骤,逐条步骤逐条步骤编码编码)1.2 C1.2 C程序概述程序概述void main( ) /*程序入口,主函数 */ printf(“Hello World! ); /*调用规范输出函数输出*/lC C程序由函数构成程序由函数构成,main,main函数是程序入口函数是程序入口l函数包括函数首部和函数体两部分函数包括函数首部和函数体两部分l函数体以函数体以作为开场和终了的标志作为开场和终了的标志l输入输出用库函数实现输入输出用库函数实现, ,需包含相
3、应头文件需包含相应头文件l语句以分号终了语句以分号终了, ,文件包含等除外文件包含等除外, ,换行无关换行无关l程序中可用程序中可用/ /* * */ /加注释,单行亦可用加注释,单行亦可用/#include/*规范输入输出头文件,类似import*/例例1.1 输出输出HelloWorld. 例例1.2 1.2 令令a=123,b=456,a=123,b=456,求两整数之和求两整数之和# includevoid main( ) int a,b,sum; a=123;b=456; sum=a+b; printf(“变量sum值为%d,sum); /*格式控制符%d,%c,%f*/l函数体分声
4、明部分和执行部分函数体分声明部分和执行部分l变量必需先定义后运用变量必需先定义后运用l定义变量实践就是在内存空闲区域中分配存定义变量实践就是在内存空闲区域中分配存储单元储单元, ,对变量名赋值或取值就是对该存储单对变量名赋值或取值就是对该存储单元进展读写元进展读写, ,存储单元地址经过存储单元地址经过&x&x获得获得, ,如输如输入语句入语句scanf(“%dscanf(“%d,&i); scanf(“%f,&i); scanf(“%f,&x);,&x);例例1.31.3输入输入2 2个数输出大者个数输出大者, ,定义定义maxmax函数求大者函
5、数求大者# includevoid main( ) int a,b,c; scanf(“%d,%d,&a,&b); c=max(a,b); /*调用子函数*/ printf(“max=%dn,c);/回车nl函数分函数分mainmain函数、库函数和自定义函数函数、库函数和自定义函数l函数首部包括前往值类型函数首部包括前往值类型 函数名函数名 参数及其类型参数及其类型l假设函数的详细定义出如今运用语句之后,那么必需假设函数的详细定义出如今运用语句之后,那么必需l在运用前进展声明在运用前进展声明int max(int x, int y)/*形参*/ int z; if(xy)z=
6、x; /* 分支语句*/ else z=y; return(z);int max(int x,int y);/*函数声明*/C C程序构造小结:程序构造小结:#include #define void main( ) /函数次序可调 子函数声明与变量定义 执行语句组 前往值类型 函数名1(参数表) 变量定义与函数声明 执行语句组 .前往值类型 函数名n(参数表) 变量定义与函数声明 执行语句组 构造:由假设干函数(main函数、库函数、自定义函数)组成,main函数是程序入口。 函数包括函数首部和函数体两部分,函数体包括声明部分和执行部分,声明部分包括变量定义和函数的声明,执行部分包括各类语句
7、。函数不能嵌套定义,函数与变量不能重名找出以下源程序中存在的找出以下源程序中存在的9处错误:处错误:int max( x, y) int z; if(xy)z=x; else z=y; return(z);void main scanf(“%d,%d, a, b); /*读入两整数,用逗号分隔 c=max(a,b); printf(“max=%cn,c) #include; int a,b,c;*/& & ( )能否需求进展函数声明能否需求进展函数声明int max(int x,int y);%d1、变量未定义或函数运用前未声明,短少头文件、变量未定义或函数运用前未声明,短少头
8、文件2、丢分号和、丢分号和&,输入时的分隔符与格式控制部分的分隔符不一致输入时的分隔符与格式控制部分的分隔符不一致,中英文标点符号有误中英文标点符号有误,大小写有误大小写有误,格式控制符与变量类型不一致格式控制符与变量类型不一致3、运算符运用有误、运算符运用有误,如如float a; a=1/2;int int1.3 1.3 语法对照语法对照数据类型数据类型分类分类JavaC基本数基本数据类型据类型boolean,byte short int long short,int,long,如如int ifloat doublefloat,double如如float xcharchar如如ch
9、ar c=w数组数组int a; a=new int3;char b;b=new char3kint a=new int2;a0=new int6;a1=new intk;int a3;/长度长度不省不省char b34;/需常数需常数short a3=3,2,5;int b2=1,2,3各维长度固定不变各维长度固定不变类类vs结构体结构体class Student int number; char name;Student s1=new Student();s1.number=0;Java中默认值中默认值0struct Student int number; char name20;;/注意
10、分号注意分号struct Student s;s.number=0;默认随机默认随机其它其它对象或数组名为引用型对象或数组名为引用型,值为对值为对象的内存地址象的内存地址s1=new Student();指针类型指针类型,存放变量地址存放变量地址如如int i;int *p; p=&i;符号常符号常量量/自定自定义类型义类型C中可用符号常量中可用符号常量#define PI 3.14,也可使用自定义类型,也可使用自定义类型,即为已有类型起别名即为已有类型起别名,如如typedef int ElemType;typedef struct student StuType; StuType
11、s;1.3 1.3 语法对照语法对照运算符运算符分类分类javaC算术算术+ - * / % + -比较比较 = = !=(C中成立返回非零值中成立返回非零值,不成立返回不成立返回0)逻辑逻辑& | ! (C中非零代表中非零代表ture, 0代表代表false)赋值赋值= += *=及其它扩展及其它扩展,如如sum+=i;等同等同sum=sum+i;类型类型转换转换int x;float y;y=13.56;x=(int)y;其它其它C中无中无instanceof运算符运算符,有有sizeof运算符运算符,如如sizeof(int),或或sizeof(x)1.3 1.3 语法对照语法对
12、照控制构造控制构造分类分类javaC选选择择结结构构if(con)s1;if(con)s1;else s2;if(con)else if(con1)else if(con2) else if(con3)else/使用时注意缩进与花括号对齐使用时注意缩进与花括号对齐循循环环结结构构for(i=1;i=6;i+=2) printf(“%dn”,i);for(int i=0;i0) sum+=i; -i;其它其它break退出当前循环退出当前循环,continue跳到下一次循环跳到下一次循环1.3 1.3 语法对照语法对照函数,值传送参数函数,值传送参数函数示例函数示例,f(n)求求n!说明说明lo
13、ng f(short n) long result; for(int i=1;i=n;+i) result*=i; n=0; return result;C语言中参数语言中参数传递采用值传递采用值传递方式,传递方式,形参与实参形参与实参是两个不同是两个不同的变量的变量,仅,仅起到传值的起到传值的作用,即使作用,即使两者名字相两者名字相同也是如此,同也是如此,各自在自己各自在自己的范围内起的范围内起作用作用void main() int m,n=5; m=f(n); printf(“%d %d”,m,n);void swap(int x, int y) void main() int temp;
14、 int x=3,y=5; temp=x; x=y; y=temp; swap(x,y); printf(“%d,%d”,x,y); printf(“%d,%d”,x,y); 1.3 1.3 语法对照语法对照函数,参数援用传送函数,参数援用传送函数示例函数示例说明说明#includevoid main() void swap(int &x, int &y);/函数声明函数声明 int a=3,b=5; swap(a,b); printf(“%d,%d”,a,b); C+中允许按引中允许按引用方式传递参数,用方式传递参数,此时形参是实参此时形参是实参变量的一个变量的一个别名别名,
15、两者是同一变量。两者是同一变量。只需在函数头的只需在函数头的形参变量前加形参变量前加&即可声明该参数即可声明该参数按引用方式传递。按引用方式传递。通常在用参数被通常在用参数被改变且带回结果改变且带回结果的情况下使用引的情况下使用引用用.如数组排序如数组排序void swap(short &x, short &y) short temp; temp=x; x=y; y=temp;1.4 1.4 指针与链表指针与链表p谭浩强谭浩强-C程序设计程序设计(第第3版版)-第十章指针第十章指针根本概念根本概念指针的定义及用法指针的定义及用法指针在数组访问中的运用指针在数组访问中的运
16、用利用指针创建动态数组利用指针创建动态数组利用指针创建和操作链表利用指针创建和操作链表内存区的每一个字节有一个编号,该编号称为内存单元的地址或指针。假设在程序中定义一个变量,在编译时会给其分配假设干内存单元,其中第一个存储单元的编号称为该变量的地址或指针int i; short j,k;scanf(“%d %d,&j,&k)i=j+k; printf(“%d,k);直接访问直接访问:经过变量名存取值的经过变量名存取值的方式方式间接访问间接访问:将变量的地址存放在将变量的地址存放在另一变量另一变量(p)中中,经过经过p访问变量访问变量 short *p p=&j; sca
17、nf(“%d,p) p=&k;scanf(“%d,p)地址地址 指针指针 变量的地址变量的地址 指针变量指针变量某些变量专门用以存放别的变量的地址某些变量专门用以存放别的变量的地址,称这类变量为指称这类变量为指针变量,该类变量的类型称为指针类型针变量,该类变量的类型称为指针类型定义格式:基类型定义格式:基类型 *指针变量名指针变量名如:如:short j; short *p; p=&j; scanf(“%d,&j); scanf(“%d,p) printf(“%d,j); printf(“%d,*p);(1)经过指针对变量进展读写时如何知道需求读写的字节数?在定经过指针
18、对变量进展读写时如何知道需求读写的字节数?在定义指针变量时必需指定基类型,且变量的类型和指针的基类型要义指针变量时必需指定基类型,且变量的类型和指针的基类型要一致!一致!(2)指针类型与整数类型不同指针类型与整数类型不同.只能将变量的地址赋给一个指针变量只能将变量的地址赋给一个指针变量,而不能将一个常数赋给一个指针变量而不能将一个常数赋给一个指针变量(零除外零除外,代表代表NULL空地址空地址)。此外,指针变量加减此外,指针变量加减1,那么指针指向的单元变动并非,那么指针指向的单元变动并非1,而是基,而是基类型所占字节数,即以类型所占字节数,即以sizeof(基类型基类型)为一个挪动单位为一个
19、挪动单位(3)指针运算符指针运算符*在定义变量时用于指明所定义变量是指针类型,在定义变量时用于指明所定义变量是指针类型,在普通语句中用于取指针变量所指向存储单元的值在普通语句中用于取指针变量所指向存储单元的值.如如printf(“%d,*p);指针变量的定义与用法指针变量的定义与用法回想回想lC程序由函数构成,包括程序由函数构成,包括main函数、库函数函数、库函数和自定义函数和自定义函数.函数不能嵌套定义函数不能嵌套定义,假设先运用假设先运用后实现,那么需声明,库函数的声明在头文后实现,那么需声明,库函数的声明在头文件中件中lC言语中数组在定义时必需同时指定大小,而言语中数组在定义时必需同时
20、指定大小,而且大小必需为常数,不能为变量且大小必需为常数,不能为变量lC言语中函数参数传送为值传送,言语中函数参数传送为值传送,C+中新加中新加援用传送援用传送lC言语中无言语中无boolean类型类型,0代表假代表假,非零代表真非零代表真lC言语中有指针类型言语中有指针类型,指针变用以存储其它变指针变用以存储其它变量的地址量的地址,基类型决议能存储何类变量的地址基类型决议能存储何类变量的地址.lint i; int *p; p=&i; lscanf(“%d,p);printf (“%d,*p); C言语中言语中,一维数组的数组名是指向数组首元素的指针常一维数组的数组名是指向数组首元素
21、的指针常量,该指针常量的基类型与数组元素的类型一样,指针量,该指针常量的基类型与数组元素的类型一样,指针常量的值是数组的起始地址。可经过数组名用下标法访常量的值是数组的起始地址。可经过数组名用下标法访问数组元素,假设将该指针常量赋值给一个相应类型的问数组元素,假设将该指针常量赋值给一个相应类型的指针变量,那么也可借助指针变量用指针法访问数组元指针变量,那么也可借助指针变量用指针法访问数组元素素指针法访问数组指针法访问数组 如:如: int a10; int *p=a ; /*也可用也可用 int *p=&a0;*/(1)下标法下标法 for(i=0;i10;i+)scanf(“%d,&
22、amp;ai);/*同同 p+i*/ for(i=0;i10;i+)printf(“%d, ai); /*同同*(p+i)*/(2) 指针法指针法 for(p=a;pa+10;+p) scanf(“%d, p); for(p=a;pa+10;+p)printf(“%d,*p); 阐明:指针加阐明:指针加1或减或减1那么指针指向的单元挪动并非那么指针指向的单元挪动并非1,而是根据基类型所占字节数挪动。指针法速度比下标法快而是根据基类型所占字节数挪动。指针法速度比下标法快利用指针创建动态数组利用指针创建动态数组u静态数组静态数组void main() int a10;/a为指针常量为指针常量 fo
23、r(int i=0;i10;+i) scanf(“%d,&ai); for(int i=0;i10;+i) printf(“%dn,ai);void main() int a10; int *p; for(p=a;pa+10;+p) scanf(“%d,p); for(p=0;pa+10;+p) printf(“%dn,*p);u动态数组动态数组void main() int *a;/a为指针变量为指针变量,可类似数组名可类似数组名用用 a=(int *)malloc(10*sizeof(int); for(int i=0;i10;+i) scanf(“%d,&ai); for
24、(int i=0;i10;+i) printf(“%dn,ai);void main() int *a; a=(int *)malloc(10*sizeof(int); int *p; for(p=a;pa+10;+p) scanf(“%d,p); for(p=0;pa+10;+p) printf(“%dn,*p);/此程序中此程序中p可换作可换作a,但但a最好不变最好不变动态存储分配函数动态存储分配函数 #include void * malloc(unsigned size); void free(void *p); p孙承爱孙承爱-程序设计根底程序设计根底( (基于基于C C言语言语)-
25、)-链表链表引言:数组元素依次存储在一片延续的内存单元中,这为成批数引言:数组元素依次存储在一片延续的内存单元中,这为成批数据存储带来两方面问题:其一,个数不确定时需定义一个最大长据存储带来两方面问题:其一,个数不确定时需定义一个最大长度;其二,向数组添加或删除一个数据时,需求挪动大量元素。度;其二,向数组添加或删除一个数据时,需求挪动大量元素。链表:一种动态地进展存储分配的数据构造,不需求事先确定最链表:一种动态地进展存储分配的数据构造,不需求事先确定最大长度,在插入或者删除一个元素时也不会引起大量数据的挪动大长度,在插入或者删除一个元素时也不会引起大量数据的挪动要求:掌握链表的根本构造、构
26、造定义与链表的创建与输出要求:掌握链表的根本构造、构造定义与链表的创建与输出10011numnam ezhangsan592scorenext10012lisi58110013w angw u656图 10.9 单 链 表 示 例 链表构造:链表构造:【构造】 “首结点+“尾结点+中间结点,每个结点包括两部分:一部分是用户需求用的实践数据,称为数据域;另一部分是下一个结点的地址,称为指针域。头指针head指向链表的首结点,首结点与中间结点的指针域指向后继结点,表尾结点的指针域存放空地址常表示为NULL,是值为0的符号常量,编程时需先定义。【阐明】【阐明】1链表中各元素在内存中的存储单元通常不延
27、续链表中各元素在内存中的存储单元通常不延续 2头指针至关重要,可标识或者代表整个单链表,头指针至关重要,可标识或者代表整个单链表,声明一个链表实践就是声明一个基类型为结点类型的头指针声明一个链表实践就是声明一个基类型为结点类型的头指针struct LNode /struct LNode /单链表结点构造定义单链表结点构造定义 char data; / char data; /数据域数据域 struct LNode struct LNode * * next;/ next;/指针域指针域 ; ;Strcut LNode node1,node2;/Strcut LNode node1,node2;
28、/定义两个结点定义两个结点struct LNodestruct LNode* * La,Lb; / La,Lb; /定义两个链表定义两个链表/或或typedef struct LNode LNodetypedef struct LNode LNode/typedef struct LNode/typedef struct LNode* * LinkList; LinkList;/LNode node1,node2; LinkList La,Lb; /LNode node1,node2; LinkList La,Lb; /元素类型定义元素类型定义typedef char ElemType; typedef char ElemType; /-/-链表定义链表定义- - typedef struct LNodetypedef struct LNode ElemType data; / ElemType data; /数据域数据域 struct LNode struct LNode * * next; / next; /指针域指针域LNode,LNode,* * LinkList; LinkList;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建福州古厝集团有限公司招聘6人笔试参考题库附带答案详解
- 2025浙江松阳县新华书店有限公司招聘见习生1人笔试参考题库附带答案详解
- 2025年度湖南省交通规划勘察设计院有限公司社会招聘15人笔试参考题库附带答案详解
- 2025年华电煤业集团有限公司校园招聘笔试参考题库附带答案详解
- 2025年上半年安徽黄山市徽城投资集团限公司招聘7人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽马鞍山博望区政府部门招聘派遣制人员5人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽阜阳市城乡建设局招聘1人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽芜湖三山区市容局招考协管员8人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽省宣城市直事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽池州市东至县事业单位公开招聘工作人员46人易考易错模拟试题(共500题)试卷后附参考答案
- 男护士的职业生涯规划书
- 2025年黑龙江旅游职业技术学院单招职业技能测试题库含答案
- 工艺技术人员工作总结
- DB61T-农产品区域公用品牌管理规范
- 中央2025年中国民航大学劳动合同制人员招聘7人笔试历年参考题库附带答案详解
- 高一生活指南模板
- 广州电视塔钢结构施工方案
- 【9物一模】2024年安徽省合肥市庐阳中学九年级中考一模物理试卷
- 护理安全警示教育ppt
- 老年人医养结合服务记录表单
- DSA室的手术配合教学课件
评论
0/150
提交评论