第9章:C语言等级考试一维数组_第1页
第9章:C语言等级考试一维数组_第2页
第9章:C语言等级考试一维数组_第3页
第9章:C语言等级考试一维数组_第4页
第9章:C语言等级考试一维数组_第5页
已阅读5页,还剩32页未读, 继续免费阅读

下载本文档

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

文档简介

1、第第9章章 数数 组组 p-106讨论讨论:为什么要使用数组?为什么要使用数组?成批的数据时,成批的数据时,最好使用数组最好使用数组9.1 一维数组的定义和数组元素的引用一维数组的定义和数组元素的引用 p-1069.1 一维数组的定义和一维数组元素的引用一维数组的定义和一维数组元素的引用 9.1.1 一维数组的定义一维数组的定义 定义格式:定义格式: 类型名类型名 数组名数组名 整型常量表达式整型常量表达式 ; 例如:例如:int a10; float y 3+2 ; float z x ;a0a1a2a3a4a5a6a7a8a9101 102103 104105 106 107 108 10

2、9 10101011 10121013 10141015 10161017 10181019 10209.1.2 一维数组元素的引用一维数组元素的引用 p-107引用格式如下引用格式如下:数组名数组名 下标表达下标表达 int a5= 1,3,5,7,9 ;printf( “%d”,a4 ); printf(“%d”,a5) ;注意注意1:下标表达式不能越界。下标表达式不能越界。注意注意2:区分:区分:int a5; 与与 a5;9.1.3 9.1.3 一维数组的初始化一维数组的初始化( (给数组元素赋初值给数组元素赋初值)p-107p-107数组和变量一样都可以在定义的同时赋初值。例如: i

3、nt a8= 0,1,2,3,4,5,6,7 ;int a8= 0,1,2,3,4,5,6,7 ,9;int a8= 0,1,2 ;int a8= 0;int a8= ;int a8=5;main() int a8; a8= 0,1,2,3,4 ;main() int a8= 0,1,2,3,4 ;9.1.4 通过赋初值定义数组的大小通过赋初值定义数组的大小 p-108int a ;float f ;int a5;int a = 1,3,5,7,9 ;一维数组元素的整体输入、输出一维数组元素的整体输入、输出例:main( )int a5,i; for(i=0;i5;i+) scanf(“ %d

4、”,&ai ); for(i=0;i5;i+) printf(“ %3d”,ai ) ; a0 a1 a2 a3 a4 编程求一维数组元素之和。编程求一维数组元素之和。main( )int a5 , i , sum=0; for(i=0;i5;i+) scanf(“ %d”,&ai ); for(i=0;i5;i+) printf(“ %3d”,ai ) ; for(i=0;i5;i+) sum+=ai; printf(“sum=%d”,sum); a0 a1 a2 a3 a4 给一维数组元素赋予有规律的数据给一维数组元素赋予有规律的数据main( )int a5,i; for

5、(i=0;i5;i+) a i = for(i=0;i5;i+) printf(“ %3d”,ai ) ; a0 a1 a2 a3 a4 9.1.5 一维数组的定义和引用举例一维数组的定义和引用举例 p-108例例9.1 9.1 编写程序,定义一个含有编写程序,定义一个含有3030个元个元素的素的 int int 类型数组。依次给数组元素类型数组。依次给数组元素赋奇数赋奇数1 1、3 3、5 5、;然后按每行十个;然后按每行十个数顺序输出,最后再按每行十个数逆序数顺序输出,最后再按每行十个数逆序输出。输出。main() int s30,i; for(i=0;i30;i+) si=2*i+1;

6、for(i=0;i=0; i-) printf(“%4d”,si); if(i%10=0) printf(n); 9.2 一维数组和指针一维数组和指针 p-109p-109注意注意1:数组名即该数组所占一串连续存储单元的首地址。数组名即该数组所占一串连续存储单元的首地址。例例:int a5; 故:故:a=&a0注意注意2:数组名是地址常量,不可以重新被赋值。数组名是地址常量,不可以重新被赋值。 注意以下表达式注意以下表达式: a+1 、a+ 、 a=a+1 、a=a+213579 a0 a1 a2 a3 a4 重点:三组等价式重点:三组等价式1、a = &a02、a0 = *a

7、 = *(a+0) 3、ai=*(a+i)例:例:a3=*(a+3)=p3=*(p+3)如有以下定义如有以下定义:int a5, *p ; 且有语句且有语句:p=a;=*p =*(p+0) =p0=pi=*(p+i)13579 a0 a1 a2 a3 a4p如果指针得到不是数组的首地址,要另行考虑如果指针得到不是数组的首地址,要另行考虑如有以下定义如有以下定义:int a5, *p ; 且有语句且有语句:p=&a2;注意注意:p0= p1=13579 a0 a1 a2 a3 a4 p9.3 函数之间对一维数组和数组元素的引用函数之间对一维数组和数组元素的引用 p-111形参形参= =实

8、参实参变量变量= =表达式表达式指针指针= =地址地址指针指针= =一维数组名一维数组名可以写可以写三种形式三种形式一维数组名作为实参,形参的三种形式一维数组名作为实参,形参的三种形式main( ) int x20,i; fun(x); 对应的函数的首部可写成对应的函数的首部可写成:1、fun( int *a ) 2、fun( int a ) 3、fun( int a20 ) 9.4 一维数组应用举例一维数组应用举例 p-116例例9.5 将数组中的数按颠倒的顺序重新存放。在操作时,将数组中的数按颠倒的顺序重新存放。在操作时,只能借助一个临时存储单元而不得另外开辟数组。只能借助一个临时存储单元

9、而不得另外开辟数组。13579 a0 a1 a2 a3 a497531 a0 a1 a2 a3 a4处理后处理后:main( ) int a 6 = 1,3,5,7,9,11 ; fun(a,6); for(i=0;i6;i+)printf(“%3d”,ai); void fun(int *p,int n) int i,j,t ; for(i=0,j=n-1; ij; i+,j-) t=pi ; pi=pj ; pj=t; 例 9.7 已知存放在a数组中的数不相重,在a数组中查找和x值相同的元素的位置。若找到,输出该值和该值在a数组中的位置;若没找到,输出相应的信息。 p-118main( )

10、int a6=1,3,5,7,9,11,x,p;scanf(“%d”,&x);p=fun(a,6,x);if(p!=-1)printf(“%d,找到了,位置是找到了,位置是%d”,x,p);else printf (“没有找到没有找到”);int fun(int *a, int n, int x)int i; for(i=0;in;i+) if(x=a i ) return i;return -1;例例9.8 用比较法对数组中的数进行排序用比较法对数组中的数进行排序( (按由小到大顺序按由小到大顺序) ) p-121main( )int a6= 5,7,4,2,8,6 ,i;fsort

11、(a,6);for(i=0;i6;i+) printf(“%3d”,a i );a0 a1 a2 a3 a4 a5 5 7 4 2 8 6void fsort(int *a, int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1; ja j ) t=ai;ai=aj; aj=t; 例9.8 w数组中存放n个数据,编写函数删除下标为k元素中的值。P-11921222324252627282930w0w1w2w3w4w5w6w7w8w9int fdel(int *w ,int n, int k) int i; for(i=k;in-1;i+) wi=wi+1;

12、n-; return n;例9.8 w 数组中存放n个数据,编写函数删除下标为为k元素中的值。P-11921222324252627282930W0w1w2w3w4w5w6w7w8w9main( ) int w10= 21,22,23,24,25,26,27,28,29,30 ,k,n; do scanf(“%d”,&k); while(k9); n=fdel(w,10,k); for(i=0;in;i+) printf(“%d”,wi );一、一、选择题选择题 p-1339.1 若已定义若已定义 int a =0,1,2,3,4,5,6,7,8,9,*p=a,i;其中其中0i9,则对

13、则对a数组元素引用不正确的是数组元素引用不正确的是A)ap-a B)*(&a i ) C)p i D)*(*(a+i) )9.2 以下程序段给数组所有元素输入数据,应在下划线处填入的是以下程序段给数组所有元素输入数据,应在下划线处填入的是A)a+(i+) B)&ai+1 C)a+i D)&a +imain( ) int a10,i=0;while(i10) scanf(“%d”,_); 9.3 以下程序的输出结果是以下程序的输出结果是 A)3 B)4 C)1 D)2main( ) int a10=1,2,3,4,5,6,7,8,9,10,*p=a;printf(%dn,

14、*(p+2); 9.4 以下程序的输出结果是以下程序的输出结果是 A)不确定的值不确定的值 B)3 C)2 D)1 p-134main( ) int n 2 = 0 ,i,j,k=2; for(i=0;ik;i+) for(j=0;jk;j+) nj=ni+1; printf(%dn,n k );9.5 以下程序的输出结果是以下程序的输出结果是 A) 17 B)18 C)19 D)20 p-134main ( ) int a =2,4,6,8,10,y=1,x,*p=&a1; for(x=0;x3;x+) y+=*(p+x);printf(“%dn”,y); 9.6 以下程序的输出结果

15、是以下程序的输出结果是 A)6 B)8 C)4 D)2main( ) int a = 2,4,6,8 ,* *p=a,i;for(i=0;i4;i+) a i =* *p+;printf( %dn,a 2 );9.7 以下程序的输出结果是以下程序的输出结果是 A)720 B)120 C)24 D)6 p-135f (int b ,int n) int i,r=1; for(i=0;i=n;i+) r=r*bi; return r;main( ) int x,a =2,3,4,5,6,7,8,9; x=f(a,3); printf(“%dn”,x);9.8 以下程序中若第一个以下程序中若第一个p

16、rintf语句输出语句输出194,194,则第二个则第二个printf f语句的语句的输出结果是输出结果是 A)212 B)204 C)1a4 D)1a6 p-135main() int a =1,2,3,4,5,6,7,8,9,0,*p=a; printf(%xn,p); printf(%xn,p+9); 9.8 分析1234567890a0a1a2a3a4a5a6a7a8a9101 102103 104 105 106107 108109 110111 112113 114115 116117 118 119 1209.9 以下程序输出结果是以下程序输出结果是 p-135 fun(int

17、*s,int n1,int n2) int i=n1,j=n2,t; while(ij) t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;i+;j-; main() int a10= 1,2,3,4,5,6,7,8,9,0 ,i,*p=a; fun(p,0,3); fun(p,4,9); fun(p,0,9) for(i=0;i10;i+) printf(%d,*(a+i); fun(int *s,int n1,int n2) int i=n1,j=n2,t; while( ij ) t=s i ;s i =s j ;s j =t;i+;j-; main() int a10= 1,2 ,3 ,4,5,6,7,8, 9 ,0 ,i,*p=a; fun(p,0,3); fun(p,4,9); fun(p,0,9) for(i=0;i10;i+) printf(%d,*(a+i); 9.10 以下程序的输出结果是以下程序的输出结果是 p-136 A)4 4 B)2 2 C)2 4 D)4 6main( ) int a5=

温馨提示

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

评论

0/150

提交评论