资源描述:
《第7讲 数组、结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章数组、结构本章内容数组的概念与用法结构的概念与用法1.数组的定义和使用当我们需要处理100个人甚至更多人的年龄时,在程序中该如何来表示这100个甚至更多的数据?定义100个变量吗?intx1,x2,x3,…,x100;要是1000个人,10000个人呢?1.数组的定义和使用什么是数组如何定义数组如何给数组赋值如何遍历与访问数组中的内容数组的用途多维数组1.1什么是数组数组是一组类型相同的变量的集合。数组中的每个元素的数据类型是相同的。数组的元素顺序地存储在连续的内存空间中。当要处理很多类型
2、相同的数据时,可利用数组以避免在程序中定义大量的变量。1.2数组的定义数组定义方法如下:数据类型数组名[数组元素个数]={数组元素初值};一些定义数组的例子:intscore[5];charcards[4]={‘a’,‘0’,‘r’,‘W’};floatpoint[2]={2.56,23.43};doubledistances[4];必须是整数常量可以省略数组元素一个数组由多个变量组成,每个变量称为数组元素。一个数组元素可以通过“数组名[下标]”形式来访问。例如:score[0],score[1]
3、,score[2]等等。这组变量在内存中是连续存放的,它们的下标从0开始计数。在数组中(设N是数组的元素总数)第一个数组元素的下标是0,最后一个数组元素的下标是N-100000score[0]score[1]score[2]score[3]score[4]intscore[5];主存储器cards[0]‘a’‘0’‘r’‘W’cards[1]cards[2]cards[3]数组在内存中的布局charcards[4]={‘a’,‘0’,‘r’,‘W’};数组在内存中的布局主存储器point[0]……
4、2.56point[1]23.43主存储器distances[0]0.0distances[1]0.00.00.0distances[2]distances[3]floatpoint[2]={2.56,23.43};doubledistances[4];1.3数组元素的赋值与访问数组元素可以在定义时给定初始值,也可以在程序中给数组元素赋值。在给数组元素赋值时,可以把数组元素看作单个变量,例如:score[0]=67;score[3]=89;distance[2]=356.24;cards[0]='
5、b';访问数组元素时不要越界!intnumber[10];number[10]=56;——下标越界对于数组number,合法的访问范围是:number[0],number[1],……,number[9]当引用number[10]时,对于C语言来说,这是合法的,但是它所引用的却是number数组之外的其他内存区域,其内的值是未知的;如果对其进行修改的话,还可能影响整个程序的正确性。567890123410(?)?numbernumber[10]1.4数组的遍历可以用一个循环语句给数组的所有元素赋值,
6、或顺序访问它的每个元素。例如:inti;intstudent[100];intodd=0,even=0;for(i=0;i<100;i++){scanf(“%d”,&student[i]);}for(i=0;i<100;i++){if((student[i]%2)==0){even++;}else{odd++;}}输入100个整数,统计其中的偶数个数和奇数个数。1.5数组的应用当程序要处理一组类型相同、含义类似的数据时应该使用数组例10.1程序阅读理解#includeintmai
7、n(){intu[4],a,b,c,x,y,z;scanf(“%d%d%d%d”,&u[0],&u[1],&u[2],&u[3]);a=u[0]+u[1]+u[2]+u[3]-5;b=u[0]*(u[1]-u[2]/u[3]+8);c=u[0]*u[1]/u[2]*u[3];x=(a+b+2)*3-u[(c+3)%4];y=(c*100-13)/a/(u[b%3]*5);if((x+y)%2==0){z=(a+b+c+x+y)/2;}z=(a+b+c-x-y)*2;printf(“%d”,x+
8、y-z);return0;}例10.2给定一个正整数n(n>2),求出所有小于n的质数。#include#defineNUMBER100intmain(){intprime[NUMBER];inti,j,k;prime[0]=2;for(i=3,j=1;ii){prime[j]=i;j++