欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    c语言程序设计课件第5章数组.ppt

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

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

    c语言程序设计课件第5章数组.ppt

    第5章 数组,例题链接,编写程序,输入100名学生的成绩,求平均分并统计高于平均值的人数。main()int s0,s2,s99,count=0;float ave;scanf(“%d%d”,main()int s100,k,count=0,sum=0;float ave;for(k=0;kave)count+;printf(“ave=%f,count=%dn”,ave,count);,常用于处理大批量数据;数据特点:存在内在联系;数组具有相同数据类型的变量集合;这些变量都有相同名字,但下标不同;称这些变量为数组元素;只有一个下标的数组一维数组;具有两个下标的数组二维数组。,本章将介绍的内容,5.1 一维数组 5.2 字符串 5.3 二维数组,例题链接,例题链接,例5.1,例5.2,例5.3,例5.4,例5.6,例5.7,例5.8,例5.9,例5.5,例5.10,例5.11,例5.12,例5.13,例3.14,例5.15,例5.16,例5.17,例5.18,例5.19,例5.20,例5.21,例5.22,5.1 一维数组,5.1.1 一维数组的定义和引用 5.1.2 一维数组的初始化 5.1.3 一维数组程序举例,P129,5.1.1 一维数组的定义和引用,【例5.1】一维数组示例。#define N 10 main()int i=0,a3;float bN;a0=2;a1=4;a2=a0+a1;for(i=0;iN;i+)scanf(%f,N为符号常量,定义数组a和 b,给数组a的元素赋值,P129,运行结果:,1 2 3 4 5 6 7 8 9 10,2 4 6,1 2 3 4 5 6 7 8 9 10,数组a的元素值,数组b的元素值,int a3;表示:a为一维数组名a的长度为3,即含3个元素元素为a0、a1、a2 元素类型均为整型,说明:,每个元素都是变量,下标:02,float bN;表示:数组名为bb数组的长度为N元素为b0、b1、b2、bN-1各元素的类型为单精度型,不能含变量,数组元素代表内存中的一个存储单元数组元素像普通变量一样使用数组元素用下标形式表示常用循环对数组进行输入输出操作,为a数组分配3个连续的存储单元(2字节3=6个字节)为b数组分配N个连续的存储单元(4字节N),用#define N 10 定义符号常量N,方便修改程序 例如:要将数组b的长度改为20,只 需把命令行改为#define N 20 其他部分无需改动,【例5.2】存放字符的数组示例。#include main()int i=0;char ch4;ch0=G;ch1=o;ch2=o;ch3=d;for(i=0;i4;i+)putchar(chi);,运行结果:Good,ch0,ch1,ch2,ch3,ch,ch数组的存储单元,一维数组的一般定义形式:类型名 数组名1 常量表达式1,数组名2 常量表达式2,;例如,int a5,b6+3;,引用数组元素的形式:数组名 下标 例如:a2,bi,bi+1是合法引用下标可以是常量、变量或表达式其值必须确定、且是整型系统不做下标越界检查,【例5.3】输入10名学生的成绩,计算其平均成绩,并统计不低于平均分 的学生人数。,编程点拨,为了统计不低于平均分的学生人数,先把学生成绩存起来,等到计算平均成绩后,再与平均分比较如果使用普通变量,过程就会很繁琐选用数组简化程序,for(i=0;i10;i+)scanf(“%d”,for(i=0;i=ave)count+;,输入并计算平均分,统计高于平均分人数,printf(%f,%d,ave,count);,main()int a10,i,count,total=0;float ave;,请思考:,本题如果改为:输入若干名学生的成绩,用负数结束输入,如何改写程序?,#define N 40 main()int i=0,n=0,count=0;float score,total=0,aN,ave;printf(data:n);scanf(%f,学生人数不能多于40,a中存放成绩,ave=total/n;for(i=0;i=ave)count+;printf(ave=%f,count=%d,ave,count);,运行结果:data:55 66 77 88 99 100 1ave=80.833336,count=3,计算平均成绩,统计不低于平均分人数,5.1.2 一维数组的初始化,【例5.4】一维数组的初始化示例。,int i=0;int a5=1,2,3,4,5;for(i=0;i5;i+)printf(%5d,ai);,等价于,P132,int i=0;int b5=2,3,4;for(i=0;i5;i+)printf(%5d,bi);,等价于,int b5=2,3,4,0,0;,【例5.4】一维数组的初始化示例。,5.1.2 一维数组的初始化,P132,int i=0;int c=3,4,5,6,7;for(i=0;i5;i+)printf(%5d,ci);,等价于,int c5=3,4,5,6,7;,【例5.4】一维数组的初始化示例。,5.1.2 一维数组的初始化,P132,int i=0;int d5=0;for(i=0;i5;i+)printf(%5d,di);,等价于,int d5=0,0,0,0,0;,【例5.4】一维数组的初始化示例。,5.1.2 一维数组的初始化,P132,int i=0;int e5;for(i=0;i5;i+)printf(%5d,ei);,未初始化,不能写成 int e;,输出不确定值,【例5.4】一维数组的初始化示例。,5.1.2 一维数组的初始化,P132,int i=0;int f5=1,2,3,4,5,6,7,8;,提供数据过多,报错,定义数组的同时,给数组元素赋初值数组的初始化,【例5.4】一维数组的初始化示例。,5.1.2 一维数组的初始化,P132,【例5.5】存放字符的数组初始化示例。#include main()int i=0;char a4=G,o,o,d;char b4=G;char c4=0;for(i=0;i4;i+)printf(%c,ai);printf(n);for(i=0;i4;i+)printf(%c,bi);printf(n);for(i=0;i4;i+)printf(%c,ci);,等价于,0,运行结果:GoodG,0在屏幕上无显示 0的ASCII码值为0,讨论题5.1,如果将含有10个元素的数组按顺序和逆序输出,应如何编写程序?,#include main()int i;int a10=1,2,3,4,5,6,7,8,9,10;for(i=0;i=0;i-)printf(%4d,ai);printf(n);,运行结果:1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1,【例5.6】定义含有10个元素的数组,并将数组中的元素按逆序重新存放后输出。,a,a,值变化,逆序输出和逆序存放不同,a,b,按逆序将a数组的值赋给b数组,按顺序将b数组的值赋给a数组,a,方法1:开辟另一个数组,for(i=0;i10;i+)bi=a10-i-1;,for(i=0;i10;i+)ai=bi;,#include main()int i,a10=1,2,3,4,5,6,7,8,9,10,b10;for(i=0;i10;i+)printf(%4d,ai);printf(n);for(i=0;i10;i+)bi=a10-i-1;for(i=0;i10;i+)ai=bi;for(i=0;i10;i+)printf(%4d,ai);printf(n);,运行结果:1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1,方法2:只开辟一个存储单元t,1 2 3 4 5 6 7 8 9 10,a,通过,交换,通过,交换,t,通过,交换,通过,交换,通过,交换,for(i=0;i10/2;i+),t=ai;ai=a10-i-1;a10-i-1=t;,#include main()int i=0,t=0,a10=1,2,3,4,5,6,7,8,9,10;for(i=0;i10;i+)printf(%4d,ai);printf(n);for(i=0;i10/2;i+)t=ai;ai=a10-i-1;a10-i-1=t;for(i=0;i10;i+)printf(%4d,ai);printf(n);,能改成i10?,5.1.3 一维数组程序举例,【例5.7】观察运行情况,P135,int i=0,t=0,a10=1,2,3,4,5,6,7,8,9,10;,t=a0;,for(i=0;i9;i+)ai=ai+1;,a9=t;,for(i=0;i10;i+)printf(%4d,ai);,1,2,3,4,5,6,7,8,9,10,1,向左移动,int i=0,t=0,b10=1,2,3,4,5,6,7,8,9,10;,t=b9;,for(i=9;i0;i-)bi=bi-1;,b0=t;,for(i=0;i10;i+)printf(%4d,bi);,10,2,3,4,5,6,7,8,9,10,1,向右移动,改为bi+1=bi;,应改为?,for(i=8;i=0;i-),讨论题5.4,数组元素中的值往前或往后移动两个位置时,应如何改写程序?,【例5.8】数组中已存互不相同的10 个整数,从键盘输入一个整数,输出与该值相同的数组元素下标。,编程点拨:,使用循环将输入的数和数组元素逐个进行比较如果找到相等的元素,用k记住该元素下标值输出k的值,#include main()int i=0,x=0,a10=1,2,3,4,5,6,7,8,9,10;for(i=0;i10;i+)printf(%4d,ai);printf(n);,if(k!=-1)printf(下标值=%dn,k);,printf(Input x:);scanf(%d,for(i=0;i10;i+),if(x=ai)k=i;,输入需查找的数,若找到,用k记下标值,k=-1,else printf(没找到%dn,x);,程序编写过程:,不能赋09之间的值,逐个查找数,若有多个元素与x相等,则k中存的是第1个还是最后一个元素的下标?,运行过程:,第1次运行:Input x:6 1 2 3 4 5 6 7 8 9 10下标值=5第2次运行:Input x:12 1 2 3 4 5 6 7 8 9 10没找到 12,优化程序:,main()int i=0,x=0,k=-1,a10=1,2,3,4,5,6,7,8,9,10;printf(Input x:);scanf(%d,break;,i10,i,若有多个元素与x相等,则k中存的是第1个还是最后一个元素的下标?,【例5.9】从键盘输入10个互不相同的整数并存放在一维数组中,找出值最大的元素,并输出最大值所在的元素下标。,编程点拨,不必用max记住最大值,只要用k记住最大值所在的元素下标,#include main()int i=0,k=0,a10=0;printf(Input data:);for(i=0;i10;i+)scanf(%d,a,k,k=0;,if(aka1),k=1;,真,执行,0,1,2,3,4,5,6,7,8,9,if(aka2),k=2;,假,不执行,if(aka3),k=3;,真,执行,下标=,k=0;for(i=1;i10;i+)if(akai)k=i;,a,#include main()int i,k,a10;printf(Input data:);for(i=0;i10;i+)scanf(%d,输出结果:max:a3=10,【例5.10】从键盘输入10个互不相同的整数并存放在一维数组中,删除其中下标为4的元素。,编程点拨,只要从下标为4的元素开始将其后面元素中的值依次前移一个位置即可,for(i=0;i9;i+)printf(%4d,ai);printf(n);,最先,a 4=a 4+1;,最后,a8=a8+1;,k8,for(i=k;i9;i+)ai=ai+1;,a,k,k,讨论题5.6,本题如果改为输入要删除的元素下标k的值,应如何修改程序?当k的值为9时,程序还成立吗?,讨论题5.7,要删除最大值所在的元素,应如何改写本题中的程序?,【例5.11】在数组中找出最小元素,并与第1个元素对调。,第1步:求最小值所在元素下标,k=0;for(j=1;jaj)k=j;,编程点拨,第2步:最小元素与第1个元素对调 temp=a0;a0=ak;ak=temp;,#include main()int j=0,k=0,temp=0,a10=0;for(j=0;j10;j+)scanf(%d,k=0;for(j=0+1;jaj)k=j;,8,1,temp=a0;a0=ak;ak=temp;,5,for(j=0;j10;j+)printf(%4d,aj);,a,新的问题:,在后9个元素中,最小值与第2个元素对调,a,k=1;for(j=1+1;jaj)k=j;,9,2,temp=a1;a1=ak;ak=temp;,3,a,k=1;for(j=1+1;jaj)k=j;,10,3,temp=a2;a2=ak;ak=temp;,7,2,2,a,for(;i=;i+),k=3;for(j=3+1;jaj)k=j;,temp=a 3;a 3=ak;ak=temp;,i,i,或k+1,i=0 8,由小到大的顺序排序,a,i,i,8,9,4,【例5.12】将10个数按从小到大的顺序 排序。方法1:选择法排序,排序过程(N个数据):将N个元素中的最小数与第1个元素对调;后N1个元素中的最小数与第2个元素对调;后N2个元素中的最小数与第3个元素对调;最后2个元素中的最小数与第N1个元素对调;此时最后一个元素(第N个)自然就是最大数。即N个数据已经按从小到大的顺序排序。,#define N 10main()int i,j,k,temp,aN;for(i=0;iaj)k=j;if(k!=i)temp=ai;ai=ak;ak=temp;for(i=0;iN;i+)printf(%4d,ai);,选择法排序,方法2:冒泡法排序,冒泡法排序过程:第1趟:在N个数中进行两两比较。(i=1)if(ajaj+1)aj与aj+1交换(j:0N-2)第2趟:在N-1个数中进行两两比较。(i=2)if(ajaj+1)aj与aj+1交换(j:0N-3)第N-1趟:在2个数中进行比较。(i=N-1)if(ajaj+1)aj与aj+1交换(j:00),#define N 10main()int i,j,temp,aN;for(i=0;iaj+1)temp=aj;aj=aj+1;aj+1=temp);for(i=0;iN;i+)printf(“%4d”,ai);,冒泡法排序,【训练5.2】掷100次骰子,统计各点数出现的次数。编程点拨:用for循环 i:1100。每次点数为16之间的数,用rand()6+1表示 rand()%k:随机产生0,k)的整数。定义数组a7,产生点数n时,an增1。即用ai统计出现点数为i的次数。例如,若产生3,则执行:a3=a3+1;进入循环之前要加srand(time(0);以保证每次运行时产生的随机数彼此独立。为使用srand(),rand()函数,要加#include#include,#include#include,main()int i,n,a7=0;,for(i=1;i=100;i+),n=rand()%6+1;an=an+1;,for(i=1;i=6;i+)printf(%8d,ai);,srand(time(0);,不用a0,随机产生 0至5,缺点:每次运行时产生与上次相同数,解决方法,要加,5.2 字符串,5.2.1 字符串的概念和字符串的输入输出 5.2.2 字符串处理函数,P141,5.2.1 字符串的概念和字符串 的输入输出,字符串用双引号括起来 例如,”abc”用字符型数组存放字符串,存放时,在有效字符后自动加0称0为空值,是字符串结束标志,P141,有效字符的个数称为字符串长度 例如,“abc”的长度为3,但占4个字节(0占一位),【例5.13】字符串示例,#include main()int i=0;char a=K;char b=Sit down;while(ai!=0)putchar(ai);i+;printf(n);i=0;while(bi!=0)putchar(bi);i+;,省略了2,常用0判断是否结束循环,等价于K,0,”K”和K不同”和也不同”是空串,占一个字节,存放0是字符常量,也占一个字节,存放空格0的ASCII码值为0空格的ASCII码值为32,说明,字符串的输入输出,逐个字符输入/输出 字符串整体输入/输出,逐个字符输入/输出,在 scanf 或 printf 中使用%c;使用getchar 或 putchar函数,#include main()char ch;int i=0;scanf(“%c”,#include main()char ch;int i=0;while(ch=getchar(ch)!=n)i+;putchar(ch);printf(“n%dn”,i);,在 scanf 或 printf 中使用%s;使用gets 或 puts函数,字符串整体输入/输出,【例】字符串的输入输出示例#include main()char b10;scanf(”%s”,b);printf(”%sn”,b);,必须开辟足够大的空间,遇空格、跳格符或回车符,认为字符串输入结束,输入:abcd输出:abcd,输入:abc def,输出:abc,在 scanf 或 printf 中使用%s,参数是数组名,运行结果:Sit downSit down,#include main()char b10;gets(b);puts(b);,调用系统函数gets()和puts(),gets(),功能:从键盘读入字符,直到遇换行符为止。调用格式:gets(参数);,数组名,注意:字符串输入后,系统自动将0置于串尾。,puts(),功能:用来将字符串的内容显示在屏幕上。调用格式:puts(参数);,数组名,注意:输出时遇到第一个0结束,并自动换行。,5.2.2 字符串处理函数,求字符串长度字符串复制 字符串连接 字符串比较,P143,【例5.15】输入一个字符串,计算该字符串的长度。,strlen,#include#include main()char a80=;int count=0;gets(a);count=strlen(a);printf(%s:%dn,a,count);,运行结果:I am OKI am OK:7,问:strlen(“Good”)的值?,strlen()函数,功能:求字符串的长度。函数的返回值为字符串的实际长度,不包括0。调用格式:strlen(参数),参数:字符数组名字符串常量,自编程序:#include main()char a80=;int i=0,count=0;gets(a);while(ai!=0)count+;i+;printf(%s:%dn,a,count);,【例5.16】将输入的字符串复制到另一个数组中。,strcpy,#include#include main()char a50=,b80=;gets(a);strcpy(b,a);puts(b);,运行结果:I am OKI am OK,给a输入,输出b中串,strcpy()函数,调用格式:strcpy(s1,s2);功能:将字符串s2拷贝到字符串s1中。,提示:字符串s1必须足够大,即不应小于字符串s2的长度;字符串s1、字符串s2可以是数组名也可以是字符串常量;拷贝时,连同字符串s2后面的0一同拷走。,char a5=”ABCD”,b5=”abcd”;char temp5=;strcpy(temp,a);strcpy(a,b);strcpy(b,temp);,交换两个数组中字符串:,自编程序:,a,b,while(ai!=0)bi=ai;i+;,bi=0;,#include main()int i=0;char a50=,b80=;gets(a);while(ai!=0)bi=ai;i+;bi=0;puts(b);,【例5.17】将输入的两个字符串连接起来。,strcat,#include#include main()char a80=,b30=;gets(a);gets(b);strcat(a,b);puts(a);,运行结果:abcABCDabcABCD,a的长度 应足够大,strcat()函数,调用格式:strcat(s1,s2);功能:连接两个字符串,将字符串s2连接到字符串s1的后面,结果放在s1。,提示:字符串s1必须足够大,以便容纳连接后的新字符串;字符串s1、字符串s2可以是数组名也可以是字符串常量;连接时,将字符串s1后面的0取消,只在新串的最后保留0。,【例5.18】比较两个字符串的大小。strcmp,b o o k 0,b o y 0,=,=,“boy”“book”,比较串的规则:,按ASCII码值比较,#include#include main()char a30=,b30=;gets(a);gets(b);if(strcmp(a,b)0)printf(第1个串大于第2个串n);if(strcmp(a,b)=0)printf(两串相等n);if(strcmp(a,b)0)printf(第1个串小于第2个串n);,不能写成if(ab),strcmp()函数,调用格式:strcmp(s1,s2);功能:比较两个字符串。将字符串s1和s2从左至右逐个字符比较,直到出现不同的字符或遇到0为止。,二维数组的定义及数组元素的引用二维数组的存储结构二维数组的初始化二维数组应用,5.3 二维数组,一、二维数组的定义和数组元素的引用,有两个下标的数组aij称为二维数组,1、定义形式:类型 数组名【常量表达式1】【常量表达式2】;,int a23;float b35;char c310;,int a32;,a00,a01,a10,a11,a20,a21,1,2,3,4,5,6,a,行下标,列下标,2、数组元素的引用形式数组名下标1下标2,int a33,k;for(k=0;k3;k+)akk=k+1;,二、二维数组的存储结构,int a32;,占用连续的内存空间,并且按行存储。,a00 a01a10 a11a20 a21,三、二维数组的初始化,可以在定义二维数组的同时给二维数组的各元素赋初值。,1、所赋初值个数与数组元素的个数相同,int a43=1,2,3,4,5,6,7,8,9,10,11,12;全部初值括在一对花括号中,每一行的初值又分别括在一对花括号中,之间用逗号隔开。,2、每行所赋初值个数与数组元素的个数不同,int a43=1,2,4,5,7,10;,a:120 4507001000,系统将自动给该行后面的元素补零。,3、所赋初值行数少于数组行数,int a43=1,2,3,4;,系统将自动给后面各行的元素补零。,a:120340000000,4、可以省略行花括号对。即按照数组元素在内存中的排列顺序赋值。,int a43=1,2,3,4,5,6;,a:123456000000,int a43=1,4,7,10;int b43=1,4,7,10;,5、通过赋初值定义二维数组的大小,int a 3=1,2,3,4,5,6,8;,int a43=1,2,3,4,5,6,8;,int a 3=1,2,3,4,5,6,8;,int a33=1,2,3,4,5,6,8;,【例5.19】二维数组的示例。#include main(),初始化二维数组,给第1行输入数据,b为2行5列数组,1 2 3 4 5,for(j=0;j5;j+)scanf(%d,给第2行输入数据,6 7 8 9 0,for(j=0;j5;j+)scanf(%d,int a32=1,2,3,4,5,6;,int i=0,j=0,b25=0;,【例5.19】二维数组的示例。#include main(),for(j=0;j5;j+)scanf(%d,for(j=0;j5;j+)scanf(%d,int a32=1,2,3,4,5,6;,int i=0,j=0,b25=0;,for(i=0;i2;i+)for(j=0;j5;j+)scanf(%d,【例5.19】二维数组的示例。#include main()int a32=1,2,3,4,5,6;int i=0,j=0,b25=0;for(i=0;i2;i+)for(j=0;j5;j+)scanf(%d,外循环控制行,内循环控制列,给数组赋值,for(i=0;i3;i+)for(j=0;j2;j+)printf(%5d,aij);printf(n);printf(Array b:n);for(i=0;i2;i+)for(j=0;j5;j+)printf(%5d,bij);printf(n);,按矩阵形式输出时需加此行,运行结果:1 2 3 4 5 6 7 8 9 0Array a:1 23 45 6Array b:1 2 3 4 56 7 8 9 0,int a32=1,2,3,4,5,6;表示a为二维数组名,a含6个元素各元素均为整型常用双层for处理二维数组 在内存中为a分配6个连续的存储单元(按行),说明:,1 2 3 4 5 6,a00,a01,a10,a11,a20,a21,a,【例5.20】打印如下杨辉三角形。1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1,杨辉三角形有如下特点:只有下半三角形有确定的值第1列和对角线上的元素值都是1,其它元素值均是前一行同一列元素与前一行前一列元素之和,编程点拨,#define N 6main()int aNN=0,i=0,j=0;for(i=0;iN;i+)for(i=2;iN;i+)for(j=1;ji;j+)for(i=0;iN;i+)for(j=0;j=i;j+)printf(%5d,aij);printf(n);,给第一列、对角线赋1,给其它元素赋值,ai0=aii=1;,aij=ai-1j-1+ai-1j;,【例5.21】定义46的实型数组,并将 各行前五列元素的平均值分 别放在同一行的第六列上。,float a46;,定义46的实型数组,计算第一行平均值,sum=0;for(j=0;j5;j+)sum=sum+a 0 j;a 0 5=sum/5;,二,1,1,三,2,2,四,3,3,for(i=0;i4;i+),计算第一行平均值,sum=0;for(j=0;j5;j+)sum=sum+a 0 j;a 0 5=sum/5;,四,3,3,各,i,i,【例5.21】定义46的实型数组,并将 各行前五列元素的平均值分 别放在同一行的第六列上。,main()float a46=0,sum=0;int i=0,j=0;for(i=0;i4;i+)for(j=0;j5;j+)aij=i*j+1;for(i=0;i4;i+)sum=0;for(j=0;j5;j+)sum=sum+aij;ai5=sum/5;for(i=0;i4;i+)for(j=0;j6;j+)printf(%5.1f,aij);printf(n);,运行结果:1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.0 3.0 4.0 5.0 3.0 1.0 3.0 5.0 7.0 9.0 5.0 1.0 4.0 7.0 10.0 13.0 7.0,【例5.22】定义35的二维数组,并将 最大的元素值和左上角的元 素值对调(算法参见例5.11),分两步:找最大值所在位置对调,找最大值所在位置:,for(i=0;i3;i+)for(j=0;j5;j+)if(akpaij)k=i;p=j;,对调:,i=akp;akp=a00;a00=i;,main()int i=0,j=0,k=0,p=0;a35=3,1,10,4,7,22,32,5,15,6,11,21,8,9,16;printf(Before:n);for(i=0;i3;i+)for(j=0;j5;j+)printf(%5d,aij);printf(n);,for(i=0;i3;i+)for(j=0;j5;j+)if(akpaij)k=i;p=j;i=akp;akp=a00;a00=i;printf(After:n);for(i=0;i3;i+)for(j=0;j5;j+)printf(%5d,aij);printf(n);,运行结果:Before:3 1 10 4 7 22 32 5 15 6 11 21 8 9 16After:32 1 10 4 7 22 3 5 15 6 11 21 8 9 16,1、输入10个整数存放在一维数组x中,编写程序,将x数组中的正数存放在a数组中,将x数组中的负数存放在b数组中,并分别输出a和b数组。2、输入一个完全由数字组成的字符串,从字符串的第一个字符起,每两个数字做为两位整数,存放在一维整型数组a中。如果最后只剩一个数字,则将该字符作为一个整数存放在数组中。例如:输入“123456789”,则数组中一次存放:12,34,56,78,9。,补充题,3、编写程序,将55的二维数组w中的两条对角线上的元素乘以整数m,输出原始数据和修改后的数组。数组的原始数据和m的值由键盘输入。4、,编写程序输出如下所示的上半三角矩阵。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15,

    注意事项

    本文(c语言程序设计课件第5章数组.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开