欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (高职)C语言程序设计模块四数组应用训练ppt课件.pptx

    • 资源ID:15330024       资源大小:2.85MB        全文页数:57页
    • 资源格式: PPTX        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (高职)C语言程序设计模块四数组应用训练ppt课件.pptx

    C语言程序设计模块四数组应用训练ppt课件模块四模块四 数组应用训练数组应用训练能力目标 熟练掌握一维数组的使用方法; 熟练掌握字符数组及字符串的使用方法; 理解二维数组的使用方法; 了解多维数组的使用方法。知识准备知识准备引例任务 输入输入5 5个数,求其平均值个数,求其平均值。方案探索方案探索 可以采用把输入的可以采用把输入的5 5个数据先保存起来,然后个数据先保存起来,然后对保存的数据求累加和,再求其平均值。用什么办法保对保存的数据求累加和,再求其平均值。用什么办法保存存5 5个数据呢?方法之一是定义个数据呢?方法之一是定义5 5个变量来保存个变量来保存5 5个数据,个数据,若若N N值比较大,此方法不可行。最佳方法是用定义的一个值比较大,此方法不可行。最佳方法是用定义的一个特殊变量来保存特殊变量来保存5 5个数据。个数据。#include void main() int i,a5; float s=0,ave; printf(请输入5个整型数据:n); for(i=0;i5;i+) scanf(%d,&ai); for(i=0;i5;i+) s+=ai; ave=s/5.0f; printf(平均值为:%4.2fn,ave);输出结果输出结果 请输入请输入5 5个整型数据:个整型数据:5 6 7 8 9 25 6 7 8 9 2平均值为:平均值为:7.007.00程序清单程序清单4.1 一维数组4.1.1 一维数组的定义 u 由一组类型相同的相关数据项构造而成的集合称为数组(Array),在内存中占据连续的存储空间。u 构成数组的数据项称为数组的元素(element of Array)。同一数组中的元素,具有相同的数据类型。做中学做中学4-1 4-1 由键盘输入一组数据,然后逆序输出。由键盘输入一组数据,然后逆序输出。算法设计算法设计 先输入一批数放在数组中,再通过循环控制把数组中的每一个元素倒序输出。#include void main() int i,a10; for(i=0;i=0;i-) printf(a%d=%d ,i,ai); /*逆向输出数组元素的值*/输出结果输出结果 1212 2424 5 5 1313 6767 a4=67a4=67 a3=13a3=13 a2=35a2=35 a1=24a1=24 a0=12a0=12程程序序清清单单知识点u 一维数组的语法格式:存储类型 数据类型 数组名数组长度v 存储类型是auto或static类型,缺省时系统默认为auto类型。若为auto类型,数组存放在动态存储区;若为static类型,数组存放在静态数据区。v 数据类型表示的是数组中各元素的数据类型,可以是任何基本类型和构造类型。但同一数组中的各元素必须属于同一数据类型。v 数组名的命名应该符合C语言中标识符命名规则。v 定义数组时,数组的长度是数组中元素的个数,只能用常量或符号常量表示,不能是变量或包含变量的表达式。 例如:int a7;u 数组元素的引用格式:数组名下标 数组元素: a0a1a2a3a4a5a6存储单元: -235-413246684-9336-545 它表示数组中的某个元素。下标是数组元素在数组中的排列序号,可以是整型常量、变量或表达式。如:a0=a1+3+a2*2+a9-3u 一维数组的初始化数组的初始化可以在定义时完成,也可以在数组定义之后对数组元素逐个赋值。v 在定义时进行初始化的格式: 数据类型 数组名 数组长度=数据1,数据2,数据n;v 花括弧中的数据应与定义的类型一致,否则系统会进行自动类型转换。v 可以只给数组的前面一部分元素赋值。 如:int a6=0,3,2;v 在对数组全部元素赋值时,可以省略数组的长度。 如:int a=0,3,2,6,-9,10,45,78;v 系统会根据花括弧中初值的个数自动定义a数组的长度为8。在定义b数组的同时完成了初始化,数组中的每个元素按照先后次序得到相应的赋值, 即:b0=1.0, b1=3.2, b2=6.0, b3=5.0。v 对于static类型的未赋初值的数组,系统会自动将数组的全部元素初始化为0;而对于auto类型的数组,C编译器不对其进行初始化,必须在程序中进行初始化。4.1.2 一维数组的应用做中学做中学4-2 4-2 输入输入1010个数,输出其中的最大值和最小值。个数,输出其中的最大值和最小值。算法设计算法设计#include #define N 10void main() int i; float aN,max,min; printf(请输入%d数据:n,N); for(i=0;i=N-1;i+) scanf(%f,&ai); max=min=a0; for(i=0;imax) max=ai; if (aimin) min=ai; printf(max=%ft min=%fn,max,min);输出结果输出结果 请输入请输入1010数据数据: : 12 23 13 45 2 56 78 89 90 34 12 23 13 45 2 56 78 89 90 34 max=90.000000 min=2.000000 max=90.000000 min=2.000000程程序序清清单单做中学做中学4-3 4-3 用冒泡法对用冒泡法对1010个数按升序进行排序。个数按升序进行排序。算法设计算法设计#include #define N 10void main() int i,j, t,aN;printf(请输入%d个待排序数据:n,N-1); for(i=1;iN;i+) scanf(%d,&ai); /*输入数组元素的值*/ for (i=1;i=N-1;i+) /控制轮数,共N-1轮 for (j=1;jaj+1) /*比较相邻元素,将大值置后*/ t=aj; aj=aj+1; aj+1=t; printf(n排序后的数据为:n); for(i=1;iN;i+) printf(%dKK,ai);程程序序清清单单程序运行程序运行 请输入请输入1010个待排序数据:个待排序数据: 100 23 34 21 4 5 -20 -30 56 78 100 23 34 21 4 5 -20 -30 56 78 排序后的数据为:排序后的数据为: -30 -20 4 5 21 23 34 56 78 100 -30 -20 4 5 21 23 34 56 78 100 4.2 二维数组4.2.1 二维数组的定义 u 相对于一维数组而言,二维数组是较为复杂的数组形式,可以用来建立更加复杂的数据结构。u 二维数组可以看成是特殊形式的一维数组,它由多行数据排列组合在一起构成。做中学做中学4-4 4-4 定义一个定义一个4 4行行5 5列的数组、赋值并输出。列的数组、赋值并输出。算法设计算法设计 程序中int a45;定义了一个4行5列的数组。在给每个数组元素赋值时使用循环嵌套语句,其中变量i用来控制行标,变量j用来控制列标,使用aij=i*j;给每个元素赋值为行号i和列号j的乘积。#include void main() int i,j,a45; for (i=0;i4;i+) for (j=0;j5;j+) aij=i*j; for (i=0;i4;i+) for (j=0;j5;j+) printf(a%d%d=%2dKKKK,i,j,aij); printf(n); for (i=0;i4;i+) for (j=0;j5;j+) printf(%dKKKK,aij); printf(n); 程程序序清清单单输出结果输出结果 a00= 0 a01= 0 a02= 0 a03=0 a04= 0a00= 0 a01= 0 a02= 0 a03=0 a04= 0a10= 0 a11= 1 a12= 2 a13= 3 a14= 4a10= 0 a11= 1 a12= 2 a13= 3 a14= 4a20= 0 a21= 2 a22= 4 a23= 6 a24= 8a20= 0 a21= 2 a22= 4 a23= 6 a24= 8a30= 0 a31= 3 a32= 6 a33= 9 a34=12a30= 0 a31= 3 a32= 6 a33= 9 a34=120 0 0 0 00 0 0 0 00 1 2 3 40 1 2 3 40 2 4 6 8 0 2 4 6 8 0 3 6 9 120 3 6 9 12知识点u 二维数组的定义:二维数组的语法格式: 存储类型 数据类型 数组名第一维长度第二维长度 第一维长度代表数组矩阵的行数,第二维长度代表数组矩阵的列数。 如:int a23该数组的元素组成如下:a00,a01,a02a10,a11,a12 二维数组在内存中是按先行后列的顺序存放。即先存放第一行元素,然后依次存放第二行、第三行、。下图是数组a的内存分配图,各存储单元的值是随机值。数组元素:a00 a01 a02 a10 a11 a12存储单元:384 500 -9 567 678 -783u 二维数组的引用:v 同一维数组一样,二维数组也是必须先定义后引用,二维数组的引用也是通过下标来实现的。v 格式为: 数组名行下标 列下标 如:int a34; a03表示二维数组a的第0行第3列的元素,aij表示a数组的第i行第j列的元素。对a数组中各元素引用时,行下标的范围为02,列下标的范围为03。v 在使用二维数组时只能引用数组元素,而不能整行或整列的引用数组。u 二维数组的初始化:v 可以在定义时完成,也可以在程序当中逐个赋值。定义时初始化二维数组的语法格式为 数据类型 数组名第一维长度第一维长度=数据行1,数据行2,数据行n或: 数据类型 数组名第一维长度第一维长度=数据1,数据2,数据nv 数据行是指数组矩阵中某行数据按从左至右的次序排列起来的集合,数据行中的各数据项之间用逗号隔开。 如:int a34=1,0,5,2,3,0,0,0,0,0,0,0; 数组a被初始化为:a00=1 a01=0 a02=5 a03=2a10=3 a11=0 a12=0 a13=0a20=0 a21=0 a22=0 a23=0v 使用第二种形式进行初始化时,系统将按数组中每个数据在内存中排列的顺序依次对数组元素赋值。上例可写成 int a34=1,0,5,2,3,0,0,0,0,0,0,0;v 当二维数组的长度较小时,利用这种格式对数组进行初始化显得简洁方便。但当数组长度较大时,则容易引起混乱,而且不易修改,而利用第一种格式比较直观且方便修改。u说明:v 可以只给部分元素赋初值,此时系统将自动给剩余的元素赋0值。如:int a34=1,0,5,2,3;v 当位于数组后面大部分的元素值为0时,使用第二种格式给数组赋初值。如:int a34=1,0,5,2,3;v 给全部元素赋值时,可省略一维数组长度。当使用上述两种初始化格式对二维数组的全部元素都赋初值时,可以省略第一维长度,但不能省略第二维长度。如: int a4=1,0,5,2,3,0; 也可写成: int a4= 1,0,5,2,3,0,0,0,0,0,0,0; 系统将根据花括弧中的数据总数确定数组的第一维长度。数组a中共有12个数据且列数为4,则可确定其行数为3。可用下面的矩阵表示: 1 0 5 2a= 3 0 0 0 0 0 0 04.2.2 二维数组的应用做中学做中学4-5 4-5 编写程序,求编写程序,求3 34 4矩阵中值最小的元素的值,及其矩阵中值最小的元素的值,及其所在的行号、列号。所在的行号、列号。算法设计算法设计 开始先假设第一个元素a00为此二维数组中的最小元素的值,存储在变量min中。变量row和column分别表示最小值所在的行与列,其初始值都为0。依次将每个元素与min比较,只要遇到比min小的值,就将其值赋给min,同时改变row和column的值。#define ROW 3#define COL 4 #include void main() int i,j,row=0,column=0,min; static int aROWCOL=1,22,13,43,345,3,-500,96,103,10,3,20; min=a00; for(i=0;i3;i+) for(j=0;j4;j+) if (aijmin) min=aij; row=i; column=j; printf(最小值为:%d,位于第%d行,第%d列。n,min,row+1,column+1);程程序序清清单单输出结果输出结果 最小值为:最小值为:-500-500,位于第,位于第1 1行,第行,第2 2列。列。 做中学做中学4-6 4-6 已知已知a a为为2 23 3的矩阵,的矩阵,b b为为3 34 4的矩阵。求的矩阵。求c=ac=ab b。算法设计算法设计 求两个矩阵的乘积,用a矩阵的某行与b矩阵的某列对应元素相乘,再相加,所得的结果为c矩阵的某行某列上的元素。可以使用二维数组处理这个问题。#include void main()int a23=5,6,7,8,2,1,c24,i,j,k;int b34=2,5,1,3,3,5,0,2,6,4,2,7;for (i=0;i2;i+)for (j=0;j4;j+) cij=0; for (k=0;k3;k+) cij+=aik*bkj; printf(矩阵a与b的乘积矩阵c为:n);for (i=0;i2;i+) for (j=0;j4;j+) printf(%4d,cij); printf(n);程程序序清清单单输出结果输出结果 矩阵矩阵a a与与b b的乘积矩阵的乘积矩阵c c为:为: 70 83 19 76 70 83 19 76 28 54 10 35 28 54 10 35 4.3 字符数组4.3.1 字符数组的定义 u 相对用来存放字符型数据的数组是字符数组。字符数组的一个元素存放一个字符。u 字符数组的定义、引用和初始化与前面介绍的数组类似,它也有一维字符数组,二维字符数组和多维字符数组。u字符数组通常用来存放和处理字符串。u 在VC+环境中,系统给字符数组多分配一B空间。如:char b5;在编译时,系统给数组b分配6B的内存单元。做中学做中学4-7 4-7 使用字符数组输出使用字符数组输出“I am happy!I am happy!”。#include void main() static char c11=I, ,a,m, ,h,a,p,p,y,!; int i; for(i=0;i11;i+) printf(%c,ci); printf(n);程程序序清清单单输出结果输出结果 I am happy!I am happy!知识点u 字符数组的定义: 字符数组的定义方法与前面介绍的数组的定义方法类似,它的数据类型是char。如:char c9;u 字符数组的引用 字符数组的引用也是由数组名和下标组合在一起来表示数组元素。可以引用字符数组中的某个元素,得到一个字符。u 字符数组的初始化v 字符数组的初始化与普通数组的初始化类似,可以在定义数组时完成,也可以在定义之后再逐个给数组元素赋值。如:char c10=h,e,l,l,o, ,J,a,c,k; 系统会为c数组分配10个存储单元,并将数组元素的值存放在内存单元中。数组元素: c0 c1 c2 c3 c4 c5 c6 c7 c8 c9存储单元:h e llo J a c kv 当只对数组的一部分元素赋值时,剩余元素将由系统自动赋为0。 如:char c11=c, ,p,r,o,g,r,a,m;数组元素: c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10存储单元: c p r og r a m 0 0v 二维数组的定义和初始化, 如:char ch36=H,a,p,p,y,N,e,w,y,e,a,r;初始化后数组元素的值: H a p p y 0ch= N e w 0 0 0 y e a r 0 04.3.2 字符数组的应用做中学做中学4-8 4-8 输入一行简单英文句子,统计其中单词的个数。输入一行简单英文句子,统计其中单词的个数。算法设计算法设计 从第一个字符开始检查字符数组,如果遇到空格,则统计变量加l;如果没遇到空格,则表示这个单词还没结束,继续往下检查,直至遇到0为止。输出单词个数words#include void main() char ch,st50;int i=0,words=0,flag=0;printf(请输入一行英文句子:n);gets(st); while (ch=sti)!=0)if (ch= ) flag=0; else if (flag=0) flag=1; words+=1; i+;printf(该句子有%d个单词。n,words);程程序序清清单单程序运行程序运行 输入一个简单英文句子:输入一个简单英文句子:You are a clever boy.You are a clever boy.该句子有该句子有5 5个单词。个单词。做中学做中学4-9 4-9 输入多名学生的姓名,并按姓名升序输出学生输入多名学生的姓名,并按姓名升序输出学生 名单。名单。算法设计算法设计 要对多名学生的姓名进行输入与排序,得先存储这些学生数据。 程序中定义一个二维字符数组name1020,用来存放10个姓名字符串。处理名字排序时,使用选择排序法。 思路是:第一次,在N个字符串中找出最小串并将其放在name0;第二次,在剩下的N-1个字符串中,找出最小串并将其放在name1,以此类推,直至最后剩下一个字符串为止。输出单词个数words#include #include #define N 10void main() char str20,nameN20; int i,j,p; for (i=0;iN;i+) printf(输入第%d位同学的名字:,i+1); gets(namei); for(i=0;iN;i+)p=i; for (j=i+1;jN;j+)if (strcmp(namej,namep)0) p=j; if(p!=i)strcpy(str,namei); strcpy(namei,namep); strcpy(namep,str);printf(升序排序后的名单:n);for(j=0;j字符串2,则函数值为1; 如果字符串1“Good”) 这种写法实错误的,正确的写法是: if (strcmp(chl, “Good”)0)u strcpy(字符数组,字符串) 功能:将字符串复制到字符数组中,函数返回字符数组的起始地址。 在C语言中,不能直接将字符串或字符数组用赋值号赋值给一个已定义过的字符数组。 如,要给已定义的字符数组str赋值,不能写成: str= “computer”; 只能使用strcpy函数来实现赋值,只能写为: strcpy(str, “computer”);u strlen(字符串) 功能:求字符串的长度,不包括0在内。当参数为字符数组时,要求参数必须使用字符数组名。函数返回值为字符串的长度。 如:char strl0= “computer”; int length; length=strlen(str); 则length的值为字符串的实际长度8。 u strlwr(字符串) 功能:将字符串中的大写字母转换为小写字母。当参数为字符数组时,要求必须使用字符数组名。函数返回值为转换后的小写字符串。u strupr(字符串) 功能:将字符串中的小写字母转换为大写字母。当参数为字符数组时,要求参数必须使用字符数组名。函数返回值为转换后的大写字符串。边学边练边学边练 使用筛选法求100以内的素数,并按每行10个素数的格式把它们打印出来。 判别用户输入的字符串是否符合C语言构成标识符的规定。总结归纳总结归纳u 一维数组u 二维数组u 字符数组与字符串数组定义数组初始化元素引用

    注意事项

    本文((高职)C语言程序设计模块四数组应用训练ppt课件.pptx)为本站会员(春哥&#****71;)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开