C语言第六章-数组.ppt

上传人:小飞机 文档编号:5426495 上传时间:2023-07-05 格式:PPT 页数:27 大小:510KB
返回 下载 相关 举报
C语言第六章-数组.ppt_第1页
第1页 / 共27页
C语言第六章-数组.ppt_第2页
第2页 / 共27页
C语言第六章-数组.ppt_第3页
第3页 / 共27页
C语言第六章-数组.ppt_第4页
第4页 / 共27页
C语言第六章-数组.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《C语言第六章-数组.ppt》由会员分享,可在线阅读,更多相关《C语言第六章-数组.ppt(27页珍藏版)》请在三一办公上搜索。

1、类型说明符 数组名常量;,内存映象:编译时分配一片连续的内存空间,数组名为该空间的首地址常量地址。,例如:int a6;,一.一维数组定义,数组是具有一定顺序的若干同数据类型变量的集合体。数组要有名称,要有规模。,a=&a0,数组元素变量表示形式:数组名下标其中:下标可以是整型常量或整型表达式,二.一维数组的引用,只能逐个引用数组元素变量,不能一次引用整个数组,例:int a10;printf(“%d”,a);,例:a0=a5+a7-a2*3;/*常量做下标*/ai=ai+1;/*表达式做下标*/,数组必须先定义,后使用,例1:读程序。main()int i,a10;for(i=0;i=0;i

2、-)printf(“%d”,ai);,9 8 7 6 5 4 3 2 1 0,例2:读程序,写结果。main()int i,a10,k=0;for(i=0;i10;i+)ai=i;for(i=1;i4;i+)k+=ai+i;printf(“%d”,k);,定义数组的同时,给数组元素变量赋初值。例:int a5=2,4,6,8,10;,(1)初始数据多于数组规模时语法错误。例:int a5=2,4,6,8,10,12;()(2)初始数据少于数组元素个数时,多出的数组元素赋零值。例1:int a5=2,4,6;例2:int a10=;区别于:int a10;(3)对 中的数字可以省,数组元素个数由

3、初始值个数决定。int b=8,21,13,7;,注:,三.一维数组初始化,#include void main(void)int a10,k,sum=0;for(k=0;k10;k+)scanf(“%d”,&ak);for(k=0;k10;k+)sum+=ak;printf(“Average is%f n”,sum/10.0);,92 85 68 75 54 88 98 45 61 79,例1:读入10个学生的成绩存于数组,求平均成绩。,四.一维数组的应用,for(i=0,j=n-1;ij;i+,j-)t=ai;ai=aj;aj=t;,分析:1.a0 与a9交换,a1 交换 a8,依此类推。

4、,例2:读入10个整数存于数组并输出;将数组中的元素颠倒顺序排放后再输出。,2.如何控制循环?,或:n=10;for(i=0;in/2;i+)t=ai;ai=an-i-1;an-i-1=t;,只需循环到一半.,#include main()int i,j,a10,t;for(i=0;i=9;i+)scanf(“%d”,&ai);for(i=0;i=9;i+)printf(“%d,”,ai);for(i=0,j=9;ij;i+,j-)t=ai;ai=aj;aj=t;for(i=0;i=9;i+)printf(“%d,”,ai);,#include main()int i;long f 20=1,

5、1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%4=0)printf(n);printf(%12ld,fi);,例3:用数组求Fibonacci数列前20个数,步骤:1.输入:用for循环输入10个整数存于数组2.处理:(a)先令max=min=a0(b)依次用ai和max,min比较(循环)若maxai,令min=ai 3.输出:max和min,例4:读10个整数存入数组,找出其中最大值和最小值。,#include void main(void)int a10,max,min,i;printf(“输入10个整数:n);for(i=0;iai

6、)min=ai;printf(“最大值为:%dn”,max);printf(“最小值为:%dn”,min);,例5:读入10个整数给数组,找出10个数中最大值所在的位置。#include main()int a10,i,k;for(i=0;iak)k=i;for(i=0;i=9;i+)printf(“%dt”,ai);printf(“max=%d,locate=%dn”,ak,k);,排序过程:(对n个整数排序)比较第一个数与第二个数,把较大的数放后面;然后比较第二个数与第三个数,仍把较大的数放后面;依次类推,直至第n-1个数和第n个数比较完为止结果最大的数被安置在最后的位置上,这就完成了第一

7、趟冒泡排序。对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置。重复上述过程,共经过n-1趟冒泡排序后,排序结束。,例6:用起泡法对8个整数按从小到大的顺序排序.,第1趟排序(k=1):从第1个元素开始两两比较,最大的数被放在最后for(i=0;iai+1)temp=ai;ai=ai+1;ai+1=temp;第一次循环后,a7是最大的。,第2趟排序(k=2):for(i=0;iai+1)temp=ai;ai=ai+1;ai+1=temp;,i=8-1-1;,i=8-1-2;,在第k 趟排序比较时:i=8-1-k,8个数组元素排序:,#include main()/*对1

8、0个整数排序*/int a10=9,8,5,4,2,0,6,1,3,7,i,k;for(k=1;kai+1)temp=ai;ai=ai+1;ai+1=temp;for(i=0;i10;i+)printf(“%3d”,ai);,例7:100名同学被学校食堂邀请来为某一种食品打分,分数分为从1到10的10个等级(1分最低分,10表示最高分),统计调查结果并输出。分析:(1)需要10个计数器用于统计:int count11=0;(2)循环100次(i从1100),第i次读一个整数n作为第i个同学打的分数,之后将该分数对应下标的数组元素加1。,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1

9、,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,c1 c2 c3 c10,main()int count11=0;int i,n;for(i=1;i=100;i+)scanf(“%d”,&n);countn+;for(i=1;i=10;i+)printf(“%d:%dn”,i,counti);,问:如何实现读入一串大写字符,以字符?结束,统计每个字母出现的次数。,int count26=0;,int n;char ch;,while(ch=getchar()!=?),n=ch-A;,for(ch=A;ch=Z;ch+)printf(“%c:%dn”,ch,countch-A)

10、;,在数学中我们常常会用到矩阵,它的结构如下:怎样用一种数据结构来表示矩阵呢?,6.2 多维数组,思考问题?,2.二维数组元素变量的引用:数组名行表达式列表达式,1.定义方式:数据类型 数组名整型常量1整型常量2;例:float f34;int myarray59;,一.二维数组的定义和引用,行数,列数,元素个数=行数*列数,下标从0开始,下标从0开始,内存映象:编译时为二维数组分配一片连续的内存空间,一行一行地存储所有的数组元素,数组名为该空间的首地址地址常量。,例 int a34;,a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23,a与&a00

11、相同,二.二维数组元素的存放顺序,三.二维数组的初始化,按元素排列顺序初始化,分行初始化,k=1;for(i=0;i4;i+)for(j=0;j4;j+)aij=k+;,四.二维数组程序举例,(3)由循环变量自动赋值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16,如何读入6个数据?,例1:在程序中使数组获得值的方法。(1)初始化数组:int a23=1,2,3,4,5,6;(2)用scanf语句由用户输入 int a23 for(i=0;i2;i+)for(j=0;j3;j+)scanf(“%d”,&aij);,缺点:数据相对固定,缺点:当数组规模较大时,需要读

12、入的数据会很多,例1:在一个二维数组中,找出最大的元素值以及最大元素的行下标和列下标,并输出该数组,#inlcude main()int a32,row,col,i,j;for(i=0;i3;i+)for(j=0;j2;j+)scanf(“%d”,例2:输出一个二维数组。int a23=1,2,3,4,5,6;for(i=0;i2;i+)for(j=0;j3;j+)printf(“%5d”,aij);printf(“n”);,例3:将二维数组行列元素互换后存到另一个数组中。,int a23=1,2,3,4,5,6;int b32,i,j;for(i=0;i2;i+)for(j=0;j3;j+)

13、bji=aij;,例4:求NN阶矩阵的主对角线元素之和,#include#define N 3main()int aNN,sum=0,i,j;for(i=0;iN;i+)for(j=0;jN;j+)scanf(“%d”,用户名:wu2010c 密 码:201012345,第1章到第5章单选题和填空题答案下载地址:,1.编程:读入10个字符,将它们按降序的顺序用冒泡法排序后输出。2.编程:为比赛选手评分。读入 10 名评委的给分,从中扣除一个最高分,扣除一个最低分,输出这个选手的最后得分(打分采用百分制)。3.编程:输入一个5位自然数,输出该自然数的各位数字组成的最大数。例如,输入 15937,则输出为 97531。,第六章上机补充题,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号