第一节 数组的定义,初始化和引用-【单招零距离】计算机专业综合(下)

2025-04-23
| 2份
| 8页
| 77人阅读
| 0人下载

内容正文:

总复习方案·第六章数组 第六章数 组 大纲要求 1.掌握一维数组和多维数组的定义、初始化和引用。 2.掌握字符串与字符数组。 3.掌握数组元素的移动、插入、复制和删除等基本算法。 4.掌握选择排序法、冒泡排序法、插入排序法等排序方法。 5.掌握顺序查找和折半查找的基本算法。 6.掌握字符串与整数、字符串的子串等算法。 第一节数组的定义、初始化和引用 知识体系 C务⊙ 数组的定义:一维和二维数组的定义 数组元素的引用:一维和二维数组元素的引用 数组的基本概念 初始化:一维和二维数组的初始化 数组元素输入输出:一维和二维数组元素的输入输出 知识梳理 C⑤ 一、数组的定义 数组是指一组同类型数据组成的序列,用一个统一的数组名标识这一组数据,用下标来指 示数组中元素的序号,同一数组中的所有元素必须属于同一数据类型。 1.数组定义:分为一维数组定义、二维数组定义及字符数组的定义 2.inta[10],b[2][20];一维数组的数组名是: ,二维数组的数组名是 3.char x3][80];其定义的数组名是: ,数据类型是 ,是 维数组。 二、数组元素的引用 l.一维数组元素的表示形式为:数组名[下标]。若定义:inta[20];其数组元素下标的下 限为 ,上标的上限为 。其有 个存储单元。 2.二维数组元素的表示形式为:数组名[行下标][列下标]。若有定义:double x[3][5]; 则X数组中行下标的上限为 ,列下标的上限为 3.下标表示了元素在数组中的顺序号。其中的下标只能为整型常量或整型表达式。下 标从 开始计算。在C语言中,二维数组的元素在内存中的存放顺序是 一个二维数组可以看成若干个 数组。 ·125· 单招零距离·计算机专业综合·下册 三、数组的初始化 1.一维数组的初始化。若定义inta[10]={1,2,3,4,5};则表示只给下标 到 赋的初值分别是 ,其余的下标赋的初值全为 。若定义为:intx[]={1,2,3, 4,5};则共有 个存储单元。 2.二维数组的初始化。若定义inta[3][4幻={1,2,3,4,5,6,7,8,9,10,11,12};也可以写 成:inta[门[4]={1,2,3,4,5,6,7,8,9,10,11,12};这就是说:对二维数组初始化时对第1维长 度 :但对第2维长度 3.一维数组和二维数组初始化均可以对部分元素赋初值。若定义:ita[3][4]={1}, {2},{3}};则a[0][0]= a[1][0]= ;a[2][0]= ;其它的元素的初 值均为 4.二维数组初始化时,可以通过列数来计算行数。若定义了intb[][3]=(1,2,3,4,5,6, 7);则b数组第一维的长度是 四、数组元素输入输出 1.逐个元素的输入输出。 2.用循环语句依次输入输出各个数组元素。 典例精析 【例1】若定义:inta[3][4]={{1,2},{0},{4,6,8,10};则初始化后a[1][2]的值为 ,a[2][1]得到的值为 【分析】此题涉及到对二维数组空间的存储方式。它是按行存放的。所在要对应每一个 数据。 【答案】06 【例2】写出下列程序的运行结果。 #include<stdio.h int main() {inta[3][3]={1},{2},{3}}; intb[3][3]=(1,2,3}; printf("%d",a[1][o]+b[o][1]): printf("%d ",a[o][1]+b[1][o]); } 【分析】本题考察二维数组的赋值。重点理解二维数组元素的行、列之关系。 【答案】程序运行结果为:40 【例4】利用数组求Fibonacci数列的前20项,要求每行输出5项。 【分析】Fibonacci数列是这样一组无穷数列:前两个数是1、1,从第三个数起,每个数均 是前两个数之和。 【答案】 #include <stdio.h int main() int i; ·126· 总复习方案·第六章数组 int fib[20]=(1,1}; for(i=2;i<20;i++) fib[i]=fib[i-2]+fibCi-1]; for(i=0;i<20;i++) {if((i+1)%5==0) printf(" "); printf("%8d",fib[i]); 巩固练习 ©⊙ 1.写出下列程序的运行结果: #include <stdio.h int main() inti,a[5]; for(i=0;i<5;) a[i十+]=2*i+1; for(--i;i=0;i--) printf("%d\t",ai]); } 2.写出下列程序的运行结果: #include<stdio.h int main() {inta[5][5]={0},i,j for(i=1;i<5;i++) for(G=1;j<5;j++) a[i][G]=(i/j)*(j/i); for(i=1;i<5;i++) for(j=1;j<i;j+) printf("%2d",ai); printf(" "); } 3.写出下列程序的运行结果: #include<stdio.h int main() {inti,j,a[4][4]; for(i=0;i<4;i++) for(G=0;j<4;j++) ·127· 单招零距离·计算机专业综合·下册 a[]Gj]=1+i-j; for(i=0:i<4;i++) {forj=0;j<4;j++) if(a) printf("%3d",ai]); putchar( '); } 4.用随机函数产生[0,99]的数据赋值给数组inta[10]. #include <stdio.h #include #include int main() int i,a10]; for(i=0;i<10;i++) a[i]= for(i=0;i<10;i++) printf("%4d",ai]); } 5.顺序给数组a中各元素赋给下标位置值,并逆序输出各元素的值。 #include <stdio.h int main() int i,a[10]; /***米米*米米*BEGIN米****米米/ 拓展练习 1.下面程序执行后的输出结果是 include <stdio.h int main() {inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; ·128· 总复习方案·第六章数组 for(i=1;i<3:i++) for (j=0;j<i;j+) s+aCi]]; printf("%d",s); 2.下面程序执行后的输出结果是 include <stdio.h int main() {int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; for(i=0:i<4;i++) s+-aa[i][1]; printf("%d",s); } 3.以下程序的输出结果是 #include <stdio.h> int main() {intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0; for(i=0:i<3;i++) for(j=i;j<=i;j++) t=t+bli]b]]; printf("%d ",t); } 4.下列程序的功能是输入N个实数,然后依次输出前1个实数和、前2个实数和、·、前 N个实数和。填写程序中缺少的语句。 #include <stdio.h #define N 10 int main() float f[N],x=0.0;int i; for(i=0;i<N;i++) scanf("%f",&fi]); for(i=1;i<=N;i+++) printf("sum of NO %2d-%f ",i,x); } 5.请编程实现:给数组a的10个元素赋奇数值即{1,3,5,7,…,19},并逆序输出元素值。 #include <stdio.h int main() int i,a[10]; ·129· 单招零距离·计算机专业综合·下册 技能实践 C 1.程序填空题:下列程序运行之后输出结果是:1123581321……。 试填空: include <stdio.h int main() { int i,j a[0]=a[1]=1; printf("%d\t%d\t",a[o],a[1]); for(i=2;i<=15;i++) {a[i]= printf("%d\t",ai]);} 2.程序改错题:先从键盘输人一个3行3列矩阵的各个元素的值,然后输出主对角线元素 之和。 #include <stdio.h int main() { /*米并并米米关*米*米FOUND米米米米米米米*米米米 int a[3]3],sum; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j+) /*关米0米关关菜米类*FOUND米并*米米米米***/ scanf("%d,",a[]); for(i=0;i<3;i++) /关关米米米米关关关关关FOUND米关¥米米米米¥¥*关/ sum十=ai][3-i]; printf("sum=%d ",sum); ·130· 总复习方案·第六章数组 3.程序设计题:在一个二维数组(inta[5][5]:)中形成并按下列形式输出矩阵各元素的值 (不得用scanf函数输入数据) 10000 21000 32100 43210 54321 #include <stdio.h> int main() {inta[5][5]; /*关米米米米关关**并BEGIN黄米米光关关米***米 第二节 数组的极值、统计、求和、逆置 知识体系 Y⊙ 极值:是指求出数组元素中的最大值、最小值等值 统计:是指按指定元素的值的统计元素的个数 数组的基本算法 求和:是指按指定的要求求和及平均值 逆置:是指数组元素的数据首尾对调 知识梳理 ⊙Y 一、数组元素中的最大值和最小值 最大值和最小值的求解方法:采用穷举法,用第一个元素与数组中(一维数组或二维数组) 的各元素进行逐一比较,找出满足条件的元素即可。 二、数组元素的统计 数组元素的统计,是指按指定的要求来统计元素的个数。通常使用a[x]=a[x]+1;或写 成a[x]十+;语句。其中x一定要与统计的数有一定的联系。 三、数组元素求和、求平均值 数组元素的求和:是指按指定的要求求出元素的和及平均值。注意:求和的初值应为0。 ·131·第六章 数  组 第一节  数组的定义、初始化和引用 【知识梳理】 一、数组定义 2.a  b 3.x 字符型  二 二、数组元素的引用 1.0 19 20 2.2 4 3.0 按行存放 一维 三、数组初始化 1.0 4 1-5 0 5 2.可以不指定 不能省略 3.1 2 3 0 4.3 【巩固练习】  1.9 7 5 3 1  2.1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1  3.1 2 1 3 2 1 4 3 2 1  4.(1)stdlib.h  (2)time.h  (3)srand((unsigned)time(NULL))  (4)rand()%100  5.for(i=0;i<10;i++)   a[i]=i; for(i=9;i>=0;i--)   printf("%d",a[i]);  或 for(i=0;i<10;i++)   a[i]=i; for(i=0;i<10;i++)   printf("%d",a[9-i]); 【拓展练习】  1.18  2.19  3.3  4.x=x+f[i-1]  5.for(i=0;i<10;)   a[i++]=2∗i+1; for(i=0;i<=9;i++)   printf("%d",a[9-i]); 【技能实践】  1.inta[16] a[i-1]+a[i-2]  2.sum 改为sum=0 scanf("%d,",a[i][j])改为scanf("%d,",&a [i][j]); sum+=a[i][3-i];改为sum+=a[i][i]  3.inti,j,t=0; for(i=0;i<5;i++)   for(j=0;j<5;j++) if(i>=j)a[i][j]=i-j+1; elsea[i][j]=0; for(i=0;i<5;i++) { for(j=0;j<5;j++)   printf("%d\t",a[i][j]); printf(" "); } 第二节 数组的极值、统计、求和、逆置 【巩固练习】  1.56 99 77 45 67 average=68  2.max=56min=33  注意:是求半个数组的最大值,求后半个数组的最 小值.  3.p=172p=38p=54  4.012 012 012  5.inta[7]=0,i,x; srand((unsigned)time(NULL)); for(i=1;i<=1000;i++) { x=rand()%6+1; a[x]++; } for(i=1;i<=6;i++)   printf(“%d面出现的次数为%d ”,i,a [i]); 􀅰22􀅰 单招零距离􀅰计算机专业综合􀅰下册

资源预览图

第一节 数组的定义,初始化和引用-【单招零距离】计算机专业综合(下)
1
第一节 数组的定义,初始化和引用-【单招零距离】计算机专业综合(下)
2
第一节 数组的定义,初始化和引用-【单招零距离】计算机专业综合(下)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。