上机实验六-答案(请自行校对).doc_第1页
上机实验六-答案(请自行校对).doc_第2页
上机实验六-答案(请自行校对).doc_第3页
上机实验六-答案(请自行校对).doc_第4页
上机实验六-答案(请自行校对).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上机实验六 一维数组学号:姓名:一目的要求1 掌握一维数组的基本概念,如何定义一维数组,如何初始化一维数组。2 掌握数组的基本操作:引用数组元素、行(列)求和,行(列)最大最小值,整个数组的输入输出等。3 掌握与数组有关的算法,如排序、找最大最小值(或位置)等。二实验内容第1题、 输入n(n不超过10),然后输入n个数组元素,要求将数组元素在同一个数组中按逆序重新存放并输出。如输入51 2 3 4 5应输出5 4 3 2 1#include void main()int a10, i, n ;printf(请输入小于10的数n:n);scanf(%d, &n);printf(请输入%d个整数:n, n);for (i=0; i=0; i-)printf(%d , ai);printf(n, n);第2题、 输入一个数组的所有元素,再输入一个整数m,把该数组的后m个数字移到数组的前头。比如数组元素为:1 2 3 4 5 6 7 8 9 10,m=4,应输出:7 8 9 10 1 2 3 4 5 6#include void main()int a10, i, m, t, j ;printf(请输入10个整数:n);for (i=0; i 10; i+)scanf(%d, &ai);printf(请输入一个小于10的数m:);scanf(%d, &m);/ 下面循环重复m次, 每次将最后一个元素放到第一个位置for (i=0; i0; j-)aj = aj-1;a0 = t; /将最后那个元素放到第一个位置/ 下面逐个打印数组元素for (i=0; i10; i+)printf(%d , ai);printf(n);第3题、 输入一个数组的所有元素值,将最大的元素与第一个元素交换,最小的元素与最后一个元素交换,然后输出数组所有元素。(注:这是选择排序的一个改进方案,每一轮循环可以找出最大和最小两个元素,可以使循环次数减少一半,请在此方法的基础之上进行改进,编出完整的排序程序来,降序)#include void main()int a10, i, m, n;printf(请输入10个整数:n);for (i=0; i 10; i+)scanf(%d, &ai);m = 0; / m保留数组中最大元素的的下标/ 查找最大的元素for (i=1; i10; i+) if (am0; i-) if (amai)m = i;/ 如果最小元素不是在第9个位置,那么就交换;否则,最小元素就在数组的第9个位置if (m!=9) n = a9;a9 = am; am = n;/ 下面逐个打印数组元素for (i=0; i10; i+)printf(%d , ai);printf(n);/*下面这个程序,是利用这种思想实现排序算法, 注意每做一次,就交换了两个元素,即最大放前面,最小放后面, 因此这个过程重复n/2次即可实现整个数组的排序功能*/#include void main()int a10, i, j, m, n;printf(请输入10个整数:n);for (i=0; i 10; i+)scanf(%d, &ai);/*因为每次交换,就确定了两个元素,即最大放前面,最小放后面, 因此这个过程重复n/2次即可实现整个数组的排序功能*/for (j=0; j10/2; j+) m = j; / m保留数组中最大元素的的下标/ 从第j+1个到倒数第10-j-1个位置间,查找最大的元素for (i=j+1; i10-j; i+) if (amj; i-) if (amai)m = i;/ 如果最小元素不是在第9-j个位置,那么就交换;否则,最小元素就在数组的第9-j个位置if (m!=9-j) n = a9-j;a9-j = am; am = n;/ 下面逐个打印数组元素for (i=0; i10; i+)printf(%d , ai);printf(n);第4题、 输入一个数组的所有元素,再输入一个整数m,如果m在数组中,则删除数组中的m,并输出删除m后的数组,如果m不在数组中,提示“数据不存在!”。比如数组元素为:1 2 3 4 5 6 7 8 9 10,m=4,则输出: 1 2 3 5 6 7 8 9 10,如m=12,则输出“数据不存在!”#include void main()int a10, i, j, m, n;printf(请输入10个整数:);for (i=0; i 10; i+)scanf(%d, &ai);printf(请输入需要删除的整数m:);scanf(%d, &m);/从数组中查找mfor (i=0; i10; i+)/如果找到m,则跳出循环,不必再进行查找if (m=ai) break;if (i=10) /此时表示,循环正常结束,数组中没有找到mprintf(数据不存在!); else /此时循环非正常结束(通过break语句退出的),即表示数据m在循环中找到/m就在数组的第i个位置,此时需要删除ai/具体方法就是,将i后面位置的所有元素往前挪动一个位置for ( ; i9; i+) / 注意这里是9,而非10ai = ai+1;/ 下面逐个打印数组元素,即删除后的数组元素for (i=0; i9; i+)printf(%d , ai);printf(n);第5题、 输入一个数组的所有元素,利用排序算法对其进行升序排序,再输入一个整数m,并把m插入到正确的数列中输出。#include void main()int a11;int i, j, m;int k, t;printf(请输入10个整数:);for (i=0; i10; i+) scanf(%d, &ai);printf(n);/ 下面是使用“选择排序”方法进行排序, 具体在课堂上已经讲过for (i=0; i9; i+) k = i;for (j=i+1; j10; j+) if (ajak) k = j;if (k != i) t = ai; ai = ak; ak = t;printf(排序的结果为:);for (i=0; i0; i-) if (ai-1 m)/ 如果比m还大, 那么直接往后挪

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论