c++实验五 数组的程序设计

上传人:今*** 文档编号:105838269 上传时间:2019-10-13 格式:DOC 页数:7 大小:59.01KB
返回 下载 相关 举报
c++实验五 数组的程序设计_第1页
第1页 / 共7页
c++实验五 数组的程序设计_第2页
第2页 / 共7页
c++实验五 数组的程序设计_第3页
第3页 / 共7页
c++实验五 数组的程序设计_第4页
第4页 / 共7页
c++实验五 数组的程序设计_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《c++实验五 数组的程序设计》由会员分享,可在线阅读,更多相关《c++实验五 数组的程序设计(7页珍藏版)》请在金锄头文库上搜索。

1、实验名称:实验五数组的程序设计 班级 学号 姓名 实验地点 完成日期 成绩 (一)实验目的1掌握一维和二维数组定义、赋值和使用方法;2掌握字符数组和字符串函数的用法;3掌握与数组有关的算法(特别是排序算法)。(二)实验内容1Problem Description对于输入的n个整数,先进行升序排序,然后进行二分查找。Input测试数据有多组,每组测试数据的第一行是一个整数n(1=n=100),第二行有n个各不相同的整数待排序,第三行是查询次数m(1=m=100),第四行有m个整数待查找。处理到文件结束。Output每组测试分2行输出,第一行是排序后的升序的结果,每个数据之间1个空格;第二行是查找

2、的结果,若找到则输出排序后元素的位置(从1开始),否则输出0,每个数据之间1个空格。(8005)2Problem Description如果矩阵A中存在这样的一个元素Aij满足下列条件:Aij是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个程序计算出矩阵A的马鞍点的值。Input输入数据首先包含一个整数T,表示测试实例的个数,然后是T组测试数据。每组测试数据首先是2个正整数m,n (1 = m, n = 100),分别表示二维数组的行和列。然后是二维数组的信息,数据之间用空格分割,每个数组元素均为int型范围.说明:为了方便起见,我们假设二维数组的元素各

3、不相同。Output对于每组测试数据, 输出马鞍点的值,若不存在鞍点,输出Impossible。(1208)3对给定的数据进行排序。每组测试数据的结构是:第一行为一个整数N (0N100),表示后面有N个整数(每个整数最多可达80位)需要排序输出,先按长度排(短的在前),如长度一样则按大小排(小的在前)。若遇到N等于零,则运行结束。每组结果之间留一个空行。(1154)(三)实验具体步骤1Problem Description对于输入的n个整数,先进行升序排序,然后进行二分查找。Input测试数据有多组,每组测试数据的第一行是一个整数n(1=n=100),第二行有n个各不相同的整数待排序,第三行

4、是查询次数m(1=m=100),第四行有m个整数待查找。处理到文件结束。Output每组测试分2行输出,第一行是排序后的升序的结果,每个数据之间1个空格;第二行是查找的结果,若找到则输出排序后元素的位置(从1开始),否则输出0,每个数据之间1个空格。(8005)解题思路:首先,认真解读题目,该题首先是要用到排序,因为还要进行查找二分查找,所以就要有两个数组,设为a数组和b数组,即在a数组中查找b数组里的元素,如果查到就输出该元素在a数组中的位置,查不到就输出零。在输入一个n时,由n控制a数组的元素个数,输入n个数,然后用对a数组进行升序排序。然后输入一个m,用来控制b数组的元素个数,然后是输入

5、m个数到b数组,接下来就是要做二分查找,将n个元素分成个数大致相同的两半,取amid与欲查找的bi作比较,如果bi amid,则在amid左边在进行二分查找,否则就在ai的右边进行查找。如果bi=amid则找到bi;就.输出bi在数组ai里的下标(mid+1),并退出循环。如果找不到就输出0。关键代码:while(scanf(%d,&n)!=EOF) for(i=0;in;i+) scanf(%d,&ai);for(i=0;in-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; for(i=0;i0) printf( ); printf(%d,ai);pr

6、intf(n);scanf(%d,&m); for(i=0;im;i+) int t,mid; scanf(%d,&t); int s=0,e=n-1; while(samid) s=mid+1;else e=mid-1; if(se) mid=-1; if(i0)printf( );printf(%d,mid+1); printf(n); 2Problem Description如果矩阵A中存在这样的一个元素Aij满足下列条件:Aij是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个程序计算出矩阵A的马鞍点的值。Input输入数据首先包含一个整数T,表示

7、测试实例的个数,然后是T组测试数据。每组测试数据首先是2个正整数m,n (1 = m, n = 100),分别表示二维数组的行和列。然后是二维数组的信息,数据之间用空格分割,每个数组元素均为int型范围.说明:为了方便起见,我们假设二维数组的元素各不相同。Output对于每组测试数据, 输出马鞍点的值,若不存在鞍点,输出Impossible。(1208)解题思路:首先是要定义一个二维数组,根据输入的m(行数),n(列数),得到一个矩阵,然后先求第i行的最小元素,先设一个e=0为最小,然后再跟该行里的第j个元素去比较,如果找到比e小的,就把j的值赋给e,当找到最小的那个值时,因为还要判断该值是否

8、是第j列中值最大的元素,所以需要先把此时的j的值临时赋给一个变量s;然后就让min去列中比较,遇到比min大的就结束循环,如果一直到最后都没有遇到比min大的,就说明min此时是最大的,也就是说,它就是要找的鞍马点,然后输出ase,否则就说明找不到鞍马点,输出Impossible。因为要进行循环,所以要增加一个标签f,赋初值为0;当找到鞍马点是f=1;否则f=0;根据它来输出不存在的情况。关键代码:for(b=0;bT;b+)scanf(%d %d,&m,&n);for(x=0;xm;x+)for(y=0;yn;y+)scanf(%d,&axy);int f=0; for(i=0;im;i+)

9、 g=m; e=0; s=i; for(j=0;jasj) e=j; for(d=0;dase) break; else g=g-1; if(g=0) printf(%dn,ase); f=1; if(g!=0&f=0) printf(Impossiblen); 3对给定的数据进行排序。每组测试数据的结构是:第一行为一个整数N (0N100),表示后面有N个整数(每个整数最多可达80位)需要排序输出,先按长度排(短的在前),如长度一样则按大小排(小的在前)。若遇到N等于零,则运行结束。每组结果之间留一个空行。(1154)解题思路:此题用字符串的方法来解决。首先定义两个长度为100的字符串数组a

10、10080,b10080;然后根据输入的n,输入n组字符串。利用b10080做中间量实现交换,以长度为第一排序条件,以大小为第二排序条件,先按长度排,短的在前,如长度一样则按大小排,小的在前。关键代码:while(scanf(%d,&N)!=EOF & N!=0)for(i=0;iN;i+)scanf(%s,&ai);for(i=0;iN;i+)for(j=i;jstrlen(aj)strcpy(bi,ai);strcpy(ai,aj);strcpy(aj,bi);else if(strlen(ai)=strlen(aj) & strcmp(ai,aj)0)strcpy(bi,ai);strc

11、py(ai,aj);strcpy(aj,bi);else;if(c+0)printf(n);for(i=0;iN;i+)printf(%sn,ai);(四)实验结果1Problem Description对于输入的n个整数,先进行升序排序,然后进行二分查找。Input测试数据有多组,每组测试数据的第一行是一个整数n(1=n=100),第二行有n个各不相同的整数待排序,第三行是查询次数m(1=m=100),第四行有m个整数待查找。处理到文件结束。Output每组测试分2行输出,第一行是排序后的升序的结果,每个数据之间1个空格;第二行是查找的结果,若找到则输出排序后元素的位置(从1开始),否则输出

12、0,每个数据之间1个空格。(8005)运行结果:2Problem Description如果矩阵A中存在这样的一个元素Aij满足下列条件:Aij是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个程序计算出矩阵A的马鞍点的值。Input输入数据首先包含一个整数T,表示测试实例的个数,然后是T组测试数据。每组测试数据首先是2个正整数m,n (1 = m, n = 100),分别表示二维数组的行和列。然后是二维数组的信息,数据之间用空格分割,每个数组元素均为int型范围.说明:为了方便起见,我们假设二维数组的元素各不相同。Output对于每组测试数据, 输出马鞍点的值,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号