C+语言程序设计第十一讲.ppt

上传人:小飞机 文档编号:6154096 上传时间:2023-09-30 格式:PPT 页数:30 大小:853.50KB
返回 下载 相关 举报
C+语言程序设计第十一讲.ppt_第1页
第1页 / 共30页
C+语言程序设计第十一讲.ppt_第2页
第2页 / 共30页
C+语言程序设计第十一讲.ppt_第3页
第3页 / 共30页
C+语言程序设计第十一讲.ppt_第4页
第4页 / 共30页
C+语言程序设计第十一讲.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《C+语言程序设计第十一讲.ppt》由会员分享,可在线阅读,更多相关《C+语言程序设计第十一讲.ppt(30页珍藏版)》请在三一办公上搜索。

1、周一上课,1、从任意n个数中找出最大数和最小数,并将它们相互交换后输出。2、将一个数组中的数循环左移。3、输入若干学生的成绩,计算平均分,并输出低于平均分的学生成绩。4、从任意n个数(允许有重复)中删除某一个数k。5、输入整数n,将其各位数字取出后,重新组合成一个新的最大的整数。6、将一个数组中的数逆序重新存放后输出。,作 业,例5:输入若干个正整数,以0或负数结束,将其中个位不为0的数输出,并统计满足条件的数据个数。,输入x,n=0,count+,for i=0 to n-1,ai%10!=0,T,输出ai,F,x0,an=x,count=0,n+,输入x,#include void mai

2、n()int a100,x,n,i,count;n=0;count=0;cinx;while(x0)an=x;n+;cinx;for(i=0;in;i+)if(ai%10!=0)coutai;count+;cout个数是:count;,输出count,例6:输入任意n个数,将其中能被5整除的数组成一个新的数组。,举 例,a,b,0,1,2,3,4,5,6,10,5,25,15,m,m,m,m,m,#include iostream.hvoid main()int a100,b100,n,m,i;cinn;for(i=0;iai;m=0;for(i=0;in;i+)if(ai%5=0)bm=ai

3、;m+;for(i=0;im;i+)coutbi;,输入n,m=0,m+,for i=0 to n-1,ai%5=0,T,bm=ai,F,for i=0 to n-1,输入ai,for i=0 to m-1,输出bi,基本思想:假设数组a已经按由小到大的顺序排好序,设三个变量low,high和mid分别代表首元素,最后一个元素以及中间元素的下标,初值分别为:low=0、high=n-1、mid=(low+high)/2。从中间元素开始查找,用x和amid比较,此时有三种情况:,1)若x=amid,则查找成功;,2)若x amid,则令high=mid-1,3)若x amid,则令low=mid

4、+1,折半查找法,例:数组元素为:5,13,19,21,37,56,64,75,80,88,92,1.查找x=21 的情况,(1)low=0;high=10;mid=(0+10)/2=5,因为amidx,所以向左找,令high=mid-1=4,(2)low=0;high=4;mid=(0+4)/2=2,因为amidx,所以向右找,令low=mid+1=3,(3)low=3;high=4;mid=(3+4)/2=3,因为amid=x,查找成功,所查元素的下标为mid,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9

5、,10,(1)low=0;high=10;mid=(0+10)/2=5,因为amidx,所以向右找,令low=mid+1=6,(2)low=6;high=10;mid=(6+10)/2=8,因为amidx,所以向右找,令low=mid+1=9,(3)low=9;high=10;mid=(9+10)/2=9,因为amidx,所以向左找,令high=mid-1=8,2.查找x=85 的情况,此时lowhigh,查找失败,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,#include void main()i

6、nt a100,i,n,x,low,high,mid;cinn;for(i=0;iai;cinx;low=0;high=n-1;while(low=high)mid=(low+high)/2;if(x=amid)break;else if(xamid)high=mid-1;elselow=mid+1;if(x=amid)coutYES:mid;elsecoutNO;,#include void main()int i,j,temp,n,a100;cinn;for(i=0;iai;for(i=0;iaj)temp=ai;ai=aj;aj=temp;for(i=0;in;i+)coutai;,例:

7、将任意n个数由小到大排序。,排 序,#include void main()int i,j,n,temp,di,a100;cinn;for(i=0;iai;for(i=0;iaj)di=j;if(i!=di)temp=ai;ai=adi;adi=temp;for(i=0;in;i+)coutai;,选择排序法,例:用冒泡法对n个数进行排序(从小到大),排序过程:(1)比较第一个数与第二个数,若为逆序a0a1,则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上;(2)对前n-1个数进行第二趟冒泡排序,结果使次大的

8、数被安置在第n-1个元素位置;(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束。,相邻两数比较,大数 小数,38421,38421,38421,34821,34281,34218,第一趟,34218,34218,32418,32148,第二趟,32148,23148,21348,第三趟,21348,12348,第四趟,a1 a2 a3 a4 a5,j=1 to 4,j=1 to 3,j=1 to 2,j=1 to 1,由小到大排序,#include void main()int a100,n,i,j,temp;scanf(%d,1349852352467621,a0,a1,a2,a3,0

9、123,a00a01a02a03a10a11a12a13a20a21a22a23a30a31a32a33,a,二维数组的基本概念,类型名 数组名常量1 常量2;,例如:,int a34;,整型二维数组,名字为a,3行,a0,a0,存储结构,逻辑结构,a00,数组a,定义,4列,共12个元素,a0,a0,a10,a11,a12,a13,a20,a21,a22,a23,是一个矩阵或一张表格,第0行,第1行,第2行,第0列,第1列,第2列,第3列,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,按行存储,a0,a1,a2,0,1,2,3,一维数组个数,一维数组

10、中元素的个数,分行初始化,例 int a23=1,2,4;,例 int a 3=1,2,4;,部分初始化,行长度可以省略,例 int a23=1,2,3,4,5,6;,1,2,3,4,5,6,全部初始化,1,2,0,4,0,0,按存储顺序初始化,例 int a23=1,2,4;,例 int a23=1,2,3,4,5,6;,全部初始化,部分初始化,例 int a 3=1,2,3,4,5;,行长度可以省略,1,2,3,4,5,6,1,2,4,0,0,0,1,2,3,4,5,0,1 2 3 4,5 6 7 8,9 10 11 12,二维数组的输入和输出,例1:将一个34矩阵输入到数组中并按行输出。

11、,#include stdio.hvoid main()int a34,i,j;for(i=0;i3;i+)for(j=0;j4;j+)scanf(%d,0 1 2 3,012,举 例,例2:写结果。,#include void main()int i,x33=6,5,4,3,2,1;for(i=0;i3;i+)printf(%d,xi2-i);,6 5 04 3 02 1 0,0 1 2,0 1 2,032,例3:程序功能是求二维数组每列元素的平均值,修改程序中的错误。,#include iostream.h#define M 3;void main()int aMM=1,2,3,4,5,6

12、,7 int i,j;for(i=0;iM;i+)for(j=0;jM;j+)avei=avei+aij;avei=avei/M;for(j=0;jM;j+)cout avej;,#include iostream.h#define M 3void main()int aMM=1,2,3,4,5,6,7;int i,j;float aveM;for(i=0;iM;i+)for(j=0;jM;j+)avei=avei+aji;avei=avei/M;for(j=0;jM;j+)cout avej;,=0,#include void main()int a5050,m,n,i,j,row,colu

13、mn,max;cinmn;for(i=0;im;i+)for(j=0;jn;j+)scanf(%d,例4:求二维数组中最大元素值及其行列号,row=0;column=0;,例5:将二维数组行列元素互换,存到另一个数组中,举 例,#include#include void main()int a5050,b5050;int m,n,i,j;cinmn;for(i=0;iaij;,for(i=0;in;i+)for(j=0;jm;j+)bij=aji;for(i=0;in;i+)for(j=0;jm;j+)coutsetw(3)bij;coutendl;,沿主对角线将矩阵a翻转所得到的矩阵就是a的

14、转置矩阵,矩阵的和运算,1 2 34 5 67 8 9,+,1 1 16 5 49 8 7,=,2 3 410 10 1016 16 16,矩阵的积运算,1 2 34 5 67 8 9,3 2 16 5 49 8 7,=,?,1*3+2*6+3*9,i行上的元素分别与j列上的元素相乘后的累加和作为结果矩阵的ij,矩阵的运算,矩阵的差运算,1 2 34 5 67 8 9,+,1 1 16 5 49 8 7,=,0 1 2-2 0 2-2 0 2,例6:打印杨辉三角形。,(a+b)n,1,1 1,1 2 1,1 3 3 1,1 4 6 4 1,#include#define M 30void ma

15、in()int aMM=0,i,j,n;scanf(%d,举 例,01234,0 1 2 3 4,作 业,看实验指导书P140,程序调试运行错误的判断与调试,1、编写程序,从矩阵中找“鞍点”。如果某个元素是“鞍点”,那么该元素在所处的行中最大,列上最小,也可能没有鞍点。要求:如果有鞍点,输出鞍点的值,以及其所处的行和列下标,否则输出NO。输入分m+1行:第一行为m和n的值,以下m行代表二维数组,其中每一行包括n个数。样例输入:3 4 1 2 4 3 5 6 7 8 6 8 9 4 样例输出:4 0 2,作 业,二维数组(需要上交),样例输入:3 4 1 2 3 4 5 6 7 0 8 7 6

16、5 样例输出:NO,2、编写程序,计算两个矩阵(均为2行2列)之积。输入分2*2行:前两行为第一个矩阵,后两行为第二个矩阵。样例输入:1 2 4 5 3 5 1 7 3、编写程序,输出矩阵(3行3列)的左上三角。样例输入:1 2 3 4 5 6 7 8 9,作 业,样例输出:5 19 17 55,样例输出:1 2 3 4 5 7,4、编写程序,输出n层正方形图案。正方形图案最外层是第一层,每层用的数字和层数相同。样例输入:3 5、编写程序,计算二维数组中各行之和、各列之和以及所有元素之和。样例输入:2 3 1 2 3 4 5 6,作 业,样例输出:1 1 1 1 11 2 2 2 11 2 3 2 11 2 2 2 11 1 1 1 1,样例输出:6 15 5 7 9 21,6、编写程序,找出m行n列的二维数组中每行元素的最大值以及每列元素的最小值。输入分m+1行:第一行为m和n的值,以下m行代表二维数组,其中每一行包括n个数。输出分两行:第一行为每行元素的最大值,第二行为每列元素的最小值。样例输入:3 31 2-1-3 4 27 9 8样例输出:2 4 9-3 2-1,作 业,周一上课,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号