C与Java对照总结PPT课件_第1页
C与Java对照总结PPT课件_第2页
C与Java对照总结PPT课件_第3页
C与Java对照总结PPT课件_第4页
C与Java对照总结PPT课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、主讲:鲁法明第1页/共26页课程相关计算机学科计算机学科核心核心课程课程多编程多编程(手写手写),多调试,多调试(上机上机) 第2页/共26页第3页/共26页1.1 适用范围及特点JavaC语言语言面向对象,平台无关,安面向对象,平台无关,安全稳定,多线程。适合开全稳定,多线程。适合开发大型应用程序,尤其是发大型应用程序,尤其是Internet应用开发应用开发最初用于编写操作系统,最初用于编写操作系统,简洁灵活功能强简洁灵活功能强,尤其适,尤其适用于系统软件及对硬件进用于系统软件及对硬件进行操作的场合行操作的场合纯面向对象纯面向对象(类,继承)类,继承),多多线程线程(分析问题(分析问题,设计

2、类设计类,通过继通过继承和接口等有效实现类)承和接口等有效实现类)面向过程面向过程,逐个函数逐条语逐个函数逐条语句执行。句执行。(确定(确定解题步骤解题步骤,逐条步骤逐条步骤编码编码)第4页/共26页1.2 C程序概述void main( ) /*程序入口,主函数 */ printf(“Hello World! ”); /*调用标准输出函数输出*/lC程序由函数构成,main函数是程序入口l函数包括函数首部和函数体两部分l函数体以作为开始和结束的标志l输入输出用库函数实现,需包含相应头文件l语句以分号结束,文件包含等除外,换行无关l程序中可用/*/加注释,单行亦可用/#include/*标准输

3、入输出头文件,类似import*/例1.1 输出HelloWorld. 第5页/共26页例1.2 令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函数体分声明部分和执行部分l变量必须先定义后使用l定义变量实际就是在内存空闲区域中分配存储单元,对变量名赋值或取值就是对该存储单元进行读写,存储单元地址通过&x获得,如输入语句scanf(“%d”,&i); scanf(“%f”,&x);第

4、6页/共26页例输入2个数输出大者,定义max函数求大者# includevoid main( ) int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); /*调用子函数*/ printf(“max=%dn”,c);/回车nl函数分main函数、库函数和自定义函数l函数首部包括返回值类型 函数名 参数及其类型l若函数的具体定义出现在使用语句之后,则必须在使用前进行声明int max(int x, int y)/*形参*/ int z; if(xy)z=x; /* 分支语句*/ else z=y; return(z);int max(int x,

5、int y);/*函数声明*/第7页/共26页C程序结构小结:#include #define void main( ) /函数次序可调 子函数声明与变量定义 执行语句组 返回值类型 函数名1(参数表) 变量定义与函数声明 执行语句组 .返回值类型 函数名n(参数表) 变量定义与函数声明 执行语句组 结构:由若干函数(main函数、库函数、自定义函数)组成,main函数是程序入口。 函数包括函数首部和函数体两部分,函数体包括声明部分和执行部分,声明部分包括变量定义和函数的声明,执行部分包括各类语句。函数不能嵌套定义,函数与变量不能重名第8页/共26页找出以下源程序中存在的找出以下源程序中存在的

6、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、变量未定义或函数使用前未声明,缺少头文件2、丢分号和&,输入时的分隔符与格式控制部分的分隔符不一致,中英文标点符号有误,大小写有误,格式控制符与变量类型不一致3、运算符

7、使用有误,如float a; a=1/2;int int第9页/共26页1.3 语法对照数据类型分类分类JavaC基本数基本数据类型据类型boolean,byte short int long short,int,long,如如int ifloat doublefloat,double如如float xcharchar如如char 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

8、 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;;/注意分号注意分号struct Student s;s.number=0;默认随机默认随机其它其它对象或数组名为引用型对象或数组名为引用型,值为对值为对象的内存地址象的内存地址s1=new Student();指针类型指针类型,存放变量地址存放变量地址如如int i;int *

9、p; p=&i;符号常符号常量量/自定自定义类型义类型C中可用符号常量中可用符号常量#define PI 3.14,也可使用自定义类型,也可使用自定义类型,即为已有类型起别名即为已有类型起别名,如如typedef int ElemType;typedef struct student StuType; StuType s;第10页/共26页1.3 语法对照运算符分类分类javaC算术算术+ - * / % + -比较比较 = = !=(C中成立返回非零值中成立返回非零值,不成立返回不成立返回0)逻辑逻辑& | ! (C中非零代表中非零代表ture, 0代表代表false)赋值赋

10、值= += *=及其它扩展及其它扩展,如如sum+=i;等同等同sum=sum+i;类型类型转换转换int x;float y;y=13.56;x=(int)y;其它其它C中无中无instanceof运算符运算符,有有sizeof运算符运算符,如如sizeof(int),或或sizeof(x)第11页/共26页1.3 语法对照控制结构分类分类javaC选选择择结结构构if(con)s1;if(con)s1;else s2;if(con)else if(con1)else if(con2) else if(con3)else/使用时注意缩进与花括号对齐使用时注意缩进与花括号对齐循循环环结结构构f

11、or(i=1;i=6;i+=2) printf(“%dn”,i);for(int i=0;i0) sum+=i; -i;其它其它break退出当前循环退出当前循环,continue跳到下一次循环跳到下一次循环第12页/共26页1.3 语法对照函数,值传递参数函数示例函数示例,f(n)求求n!说明说明long f(short n) long result; for(int i=1;i=n;+i) result*=i; n=0; return result;C语言中参数语言中参数传递采用值传递采用值传递方式,传递方式,形参与实参形参与实参是两个不同是两个不同的变量的变量,仅,仅起到传值的起到传值的

12、作用,即使作用,即使两者名字相两者名字相同也是如此,同也是如此,各自在自己各自在自己的范围内起的范围内起作用作用void main() int m,n=5; m=f(n); printf(“%d %d”,m,n);void swap(int x, int y) void main() int temp; int x=3,y=5; temp=x; x=y; y=temp; swap(x,y); printf(“%d,%d”,x,y); printf(“%d,%d”,x,y); 第13页/共26页1.3 语法对照函数,参数引用传递函数示例函数示例说明说明#includevoid main() vo

13、id swap(int &x, int &y);/函数声明函数声明 int a=3,b=5; swap(a,b); printf(“%d,%d”,a,b); C+中允许按引中允许按引用方式传递参数,用方式传递参数,此时形参是实参此时形参是实参变量的一个变量的一个别名别名,两者是同一变量。两者是同一变量。只需在函数头的只需在函数头的形参变量前加形参变量前加&即可声明该参数即可声明该参数按引用方式传递。按引用方式传递。通常在用参数被通常在用参数被改变且带回结果改变且带回结果的情况下使用引的情况下使用引用用.如数组排序如数组排序void swap(short &x,

14、short &y) short temp; temp=x; x=y; y=temp;第14页/共26页1.4 指针与链表p 谭浩强-C程序设计(第3版)-第十章指针基本概念指针的定义及用法指针在数组访问中的应用利用指针创建动态数组利用指针创建和操作链表第15页/共26页内存区的每一个字节有一个编号,该编号称为内存单元的地址或指针。若在程序中定义一个变量,在编译时会给其分配若干内存单元,其中第一个存储单元的编号称为该变量的地址或指针int i; short j,k;scanf(“%d %d”,&j,&k)i=j+k; printf(“%d”,k);直接访问:通过变量名存取

15、值的方式间接访问:将变量的地址存放在另一变量(p)中,通过p访问变量 short *p p=&j; scanf(“%d”,p) p=&k;scanf(“%d”,p)地址地址 指针指针 变量的地址变量的地址 指针变量指针变量某些变量专门用以存放别的变量的地址,称这类变量为指针变量,该类变量的类型称为指针类型第16页/共26页定义格式:基类型 *指针变量名如:short j; short *p; p=&j; scanf(“%d”,&j); scanf(“%d”,p) printf(“%d”,j); printf(“%d”,*p);(1)通过指针对变量进行读写时如何知

16、道需要读写的字节数?在定义指针变量时必须指定基类型,且变量的类型和指针的基类型要一致!(2)指针类型与整数类型不同.只能将变量的地址赋给一个指针变量,而不能将一个常数赋给一个指针变量(零除外,代表NULL空地址)。此外,指针变量加减1,则指针指向的单元变动并非1,而是基类型所占字节数,即以sizeof(基类型)为一个移动单位(3)指针运算符*在定义变量时用于指明所定义变量是指针类型,在普通语句中用于取指针变量所指向存储单元的值.如printf(“%d”,*p);指针变量的定义与用法第17页/共26页回顾 C程序由函数构成,包括main函数、库函数和自定义函数.函数不能嵌套定义,若先使用后实现,

17、则需声明,库函数的声明在头文件中 C语言中数组在定义时必须同时指定大小,而且大小必须为常数,不能为变量 C语言中函数参数传递为值传递,C+中新加引用传递 C语言中无boolean类型,0代表假,非零代表真 C语言中有指针类型,指针变用以存储其它变量的地址,基类型决定能存储何类变量的地址. int i; int *p; p=&i; scanf(“%d”,p);printf (“%d”,*p); 第18页/共26页C语言中,一维数组的数组名是指向数组首元素的指针常量,该指针常量的基类型与数组元素的类型相同,指针常量的值是数组的起始地址。可通过数组名用下标法访问数组元素,如果将该指针常量赋值

18、给一个相应类型的指针变量,则也可借助指针变量用指针法访问数组元素指针法访问数组 如: int a10; int *p=a ; /*也可用 int *p=&a0;*/(1)下标法 for(i=0;i10;i+)scanf(“%d”,&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,而是根据基类型所占字节数移动。指针法

19、速度比下标法快第19页/共26页利用指针创建动态数组u静态数组void main() int a10;/a为指针常量 for(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*siz

20、eof(int); for(int i=0;i10;+i) scanf(“%d”,&ai); for(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);

21、 第20页/共26页p孙承爱-程序设计基础(基于C语言)-链表引言:数组元素依次存储在一片连续的内存单元中,这为成批数据存储带来两方面问题:其一,个数不确定时需定义一个最大长度;其二,向数组增加或删除一个数据时,需要移动大量元素。链表:一种动态地进行存储分配的数据结构,不需要事先确定最大长度,在插入或者删除一个元素时也不会引起大量数据的移动要求:掌握链表的基本结构、结构定义与链表的创建与输出10011numnamezhangsan592scorenext10012lisi58110013wangwu656图10.9 单链表示例第21页/共26页 链表结构:【结构】 “首”结点+“尾”结点+中间结点,每个结点包括两部分:一部分是用户需要用的实际数据,称为数据域;另一部分是下一个结点的地址,称为指针域。头指针head指向链表的首结点,首结点与中间结点的指针域指向后继结点,表尾结点的指针域存放空地址(常表示为NULL,是值为0的符号常量,编程时需先定义)。【说明】(1)链表中各元素在内存中的存储单元通常不连续 (2)头指针至关重要,可标识或者代表整个单链表,声明一个链表实际就是声明一个基类型为结点类型的头指针第22页/共26页struct LNode /单链表结点结构定义 char data; /数据域 struct LNode * next;/指针域 ;St

温馨提示

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

最新文档

评论

0/150

提交评论