计算机二级C语言考试C语言学习第5讲.ppt

上传人:牧羊曲112 文档编号:6606180 上传时间:2023-11-17 格式:PPT 页数:38 大小:778.50KB
返回 下载 相关 举报
计算机二级C语言考试C语言学习第5讲.ppt_第1页
第1页 / 共38页
计算机二级C语言考试C语言学习第5讲.ppt_第2页
第2页 / 共38页
计算机二级C语言考试C语言学习第5讲.ppt_第3页
第3页 / 共38页
计算机二级C语言考试C语言学习第5讲.ppt_第4页
第4页 / 共38页
计算机二级C语言考试C语言学习第5讲.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《计算机二级C语言考试C语言学习第5讲.ppt》由会员分享,可在线阅读,更多相关《计算机二级C语言考试C语言学习第5讲.ppt(38页珍藏版)》请在三一办公上搜索。

1、C语言程序设计,第五讲,第八章 数 组,构造数据类型之一数组:有序数据的集合,用数组名标识元素:属同一数据类型,用数组名和下标确定8.1 一维数组一维数组的定义定义方式:数据类型 数组名常量表达式;,合法标识符,表示元素个数下标从0开始,:数组运算符单目运算符优先级(1)左结合不能用(),例 int a6;,编译时分配连续内存内存字节数=数组维数*sizeof(元素数据类型),数组名表示内存首地址,是地址常量,一维数组的引用数组必须先定义,后使用只能逐个引用数组元素,不能一次引用整个数组数组元素表示形式:数组名下标其中:下标可以是常量或整型表达式,例 int i=15;int datai;(不

2、能用变量定义数组维数),例 int a10;printf(“%d”,a);()必须 for(j=0;j10;j+)printf(“%dt”,aj);(),例 int data5;data5=10;/C语言对数组不作越界检查,使用时要 注意,一维数组的初始化初始化方式,在定义数组时,为数组元素赋初值(在编译阶段使之得到初值),int a5=1,2,3,4,5;等价于:a0=1;a1=2;a2=3;a3=4;a4=5;,说明:数组不初始化,其元素值为随机数对static数组元素不赋初值,系统会自动赋以0值,当全部数组元素赋初值时,可不指定数组长度,如 int a5=6,2,3;等价于:a0=6;a

3、1=2;a2=3;a3=0;a4=0;如 int a3=6,2,3,5,1;(),static int a5;等价于:a0=0;a1=0;a2=0;a3=0;a4=0;,只给部分数组元素赋初值,int a=1,2,3,4,5,6;编译系统根据初值个数确定数组维数,程序举例,例1若要求定义具有10个int 型的元素一维数组a,则以下定义错误的是:A)#define N 10 int aN;B)#define n 5 int a2*n;C)int a5+5;D)int n=10,an;例2(08/9 21)若有定义语句:int m=5,4,3,2,1,i=4;则下面对m数组元素的引用中错误的是()

4、A)m-i B)m2*2 C)mm0 D)mmi例3(08/9)32)有如下程序:#include void fun(int a,int b)int t;t=a;a=b;b=t;main()int c10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;k10;i+=2)fun(ci,ci+1);for(i=0;k10;i+)printf(%d,ci);printf(n);程序的运行结果是 A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6,7,8,9,例4 08/4(3

5、1)有以下程序#include main()int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i;for(i=0;i12;i+)csi+;for(i=1;i5;i+)printf(%d,ci);printf(n);程序的运行结果是()。A)1 2 3 4 B)2 3 4 4C)4 3 3 2 D)1 1 2 3,8.2 二维数组及多维数组二维数组的定义定义方式:数据类型数组名常量表达式常量表达式;,数组元素的存放顺序原因:内存是一维的二维数组:按行序优先,例 int a34;float b25;int c234;int a3,4;(),行数,列数,元素个数=行数*列数,

6、二维数组理解,每个元素ai由包含4个元素的一维数组组成,二维数组a是由3个元素组成,二维数组元素的引用形式:数组名下标下标二维数组元素的初始化分行初始化:,按元素排列顺序初始化,例1则以下数组定义错误的是:_ A)int x3=0;B)int x23=1,2,3,4,5,6;C)int x3=1,2,3,4,5,6;D)int x23=1,2,3,4,5,6;,例2以下程序:main()int i,t3=9,8,7,6,5,4,3,2,1;for(i=0;i3;i+)printf(“%d”,t2-ii;程序执行后的输出结果是:_ A)7 5 3 B)3 5 7 C)3 6 9 D)7 5 1,

7、例3 08/4(26)若有定义:int a23;,以下选项中对a 数组元素正确引用的是()。A)a2!1 B)a23 C)a 03 D)a12!1例4 08/9 12以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。4 3 7 2 6 9 1 5 8 10#include main()int x44,n=0,i,j;for(j=0;j=j;【12】)n+;xij=【13】;for(i=0;i4;i+)for(j=0;j=i;j+)printf(%3d,xij);printf(n);,(29)有以下程序#includemain()int a5=1,2,3,4,5,b5=0,

8、2,1,3,0,i,s=0 for(i=0;i main()int b3 3=0,1,2,0,1,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+)t+=bibji;Printf(%dn,t);程序运行后的输出结果是A)1 B)3 C)4 D)9,2010年3月试题,第七章 指 针,C程序设计中使用指针可以:(了解)使程序简洁、紧凑、高效有效地表示复杂的数据结构动态分配内存得到多于一个的函数返回值,7.1 指针类型和指针变量,程序中:int i;float k;,内存中每个字节有一个编号-地址,i,k,编译或函数调用时为其分配内存单元,变量是对程序中数据

9、存储空间的抽象,7.1.1 地址和指针的概念,1、地址的概念,2、3、指针类型与指针变量指针类型:地址也是数,这类数据就是指针变量:专门存放地址的变量叫,2000,指针,指针变量,变量的内容,变量的地址,&与*运算符含义,含义:取变量的地址单目运算符优先级:2结合性:自右向左,含义:取指针所指向变量的内容单目运算符优先级:2结合性:自右向左,两者关系:互为逆运算理解,i_pointer-指针变量,它的内容是地址量*i_pointer-指针的目标变量,它的内容是数据&i_pointer-指针变量占用内存的地址,i_pointer&i&(*i_pointer)i*i_pointer*(&i),i_

10、pointer=&i=&(*i_pointer)i=*i_pointer=*(&i),直接访问与间接访问直接访问:按变量地址存取变量值间接访问:通过存放变量地址的变量去访问变量,例 i=3;-直接访问,3,例*i_pointer=20;-间接访问,20,例 k=i;-直接访问 k=*i_pointer;-间接访问,例 k=i;k=*i_pointer;,7.2 指针变量的定义一般形式:存储类型 数据类型*指针名;,合法标识符,指针变量本身的存储类型,指针的目标变量的数据类型,表示定义指针变量不是*运算符,例 int*p1,*p2;float*q;static char*name;,注意:1、i

11、nt*p1,*p2;与 int*p1,p2;2、指针变量名是p1,p2,不是*p1,*p23、指针变量只能指向定义时所规定类型的变量4、指针变量定义后,变量值不确定,应用前必须先赋值,指针变量的初始化和指针所指的变量一般形式:存储类型 数据类型*指针名=初始地址值;,赋给指针变量,不是赋给目标变量,例 int i;int*p=,变量必须已说明过类型应一致,例 int i;int*p=,用已初始化指针变量作初值,例 main()int i;static int*p=.(),不能用auto变量的地址去初始化static型指针,7.3 指针变量的使用,例 main()int i=10;int*p;*

12、p=i;printf(“%d”,*p);,危险!,注意:1、指针变量必须先赋值,再使用(没赋初值时为随机地址)2、不允许将地址赋给一般变量,也不许将数值赋给指针变量;3、级别相同才可相互赋值。,零指针与空类型指针零指针:(空指针)定义:指针变量值为零表示:int*p=0;,p指向地址为0的单元,系统保证该单元不作它用表示指针变量值没有意义,#define NULL 0int*p=NULL:,p=NULL与未对p赋值不同用途:避免指针变量的非法引用在程序中常作为状态比较,例 int*p;.while(p!=NULL).,void*类型指针表示:void*p;使用时要进行强制类型转换,例 char

13、*p1;void*p2;p1=(char*)p2;p2=(void*)p1;,表示不指定p是指向哪一种类型数据的指针变量,main()int a=7,b=8,*p,*q,*r;p=,例1、以下程序的运行结果是:_,考学结合例题:,2、设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是()A)float*p=1024;B)int*p=(float x);C)float p=,4、(05/9 28)设有定义:int n1=0,n2,*p=的输出结果是()。A)随机值 B)0 C)x的地址 D)p的地址,7.4 指针和函数 7.4.1 指针变量作函数参数7.4.2 返回指

14、针值的函数7.4.3 指向函数的指针变量,swap(int*p1,int*p2)int p;p=*p1;*p1=*p2;*p2=p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,5,9,2000,2002,5,9,COPY,5,例 将数从大到小输出,7.4.1 指针变量作为函数参数,swap(int*p1,int*p2)int p;p=*p1;*p1=*p2;*p2=p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,5,9,2000,2002,5,9,例 将数从大到小输出,运行结果:

15、9,5,地址传递,swap(int*p1,int*p2)int*p;*p=*p1;*p1=*p2;*p2=*p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,运行结果:9,9,编译警告!结果不对!,int x;int*p=,5,9,2000,2002,9,9,COPY,假设2000,例 将数从大到小输出,swap(int x,int y)int t;t=x;x=y;y=t;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,运行结果:5,9,值传递,5,9,2000,2002,COPY,5

16、,5,9,例 将数从大到小输出,运行结果:5,9,swap(int*p1,int*p2)int*p;p=p1;p1=p2;p2=p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,5,9,2000,2002,COPY,2000,地址传递,2000,2002,例 将数从大到小输出,Void f(int y,int*x)y=y+*x;*x=*x+y;main()int x=2,y=4;f(y,),例:以下程序的运行结果是:_,考学结合例题:,7.4.2 返回指针的函数(返回值为某指针类型的函数)函数定义形式:类型标识符*函数名(参数表);例 i

17、nt*f(int x,int y),例 写一个函数,求两个int型变量中居于较大值的变量的地址,2,3,2002,2000,*,例 写一个函数,求两个int型变量中居于较大值的变量的地址,2,3,3,2,*,例 写一个函数,求两个int型变量中居于较大值的变量的地址,不能返回形参或局部变量的地址,思考为什么?,200A,7.4.3 指向函数的指针 函数在编译时被分配的入口地址(程序段的存储地址)称为函数指针,用函数名表示。我们将这一地址存到一个指针变量里去,这个变量就是指向函数的指针变量。,函数指针变量赋值:如p=max;,函数返回值的数据类型,专门存放函数入口地址可指向返回值类型相同的不同函

18、数,指向函数的指针变量定义形式:数据类型(*指针变量名)();如 int(*p)();,函数指针变量指向的函数必须有函数说明,函数调用形式:c=max(a,b);c=(*p)(a,b);c=p(a,b);对函数指针变量pn,p+,p-无意义,()不能省int(*p)()与 int*p()不同,用函数指针变量作函数参数,例:用函数指针变量作参数,求最大值、最小值和两数之和,08/4(40)设有定义语句int(*f)(int);,则以下叙述正确的是()。A)f 是基类型为int 的指针变量B)f 是指向函数的指针变量,该函数具有一个int 类型的形态C)f 是指向int 类型一维数组的指针变量D)f 是函数名,该函数的返回值是其类型为int 类型的地址09/9(33)设有以下函数:void fun(int n,char*s)则下面对函数指针的定义和赋值均正确的是A)void(*pf)();pf=fun;B)void*pf();pf=fun;C)void*pf();*pf=fun;D)void(*pf)(int,char);pf=&fun;,考学结合例题:,1、有以下程序 main()int a=1,b=3,c=5;int*p1=,考学结合例题:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号