实验十二 一维数组.doc_第1页
实验十二 一维数组.doc_第2页
实验十二 一维数组.doc_第3页
全文预览已结束

下载本文档

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

文档简介

实验十二 一维数组【实验目的】1熟练掌握使用一维数组编程。2熟练掌握排序算法。【实验内容】121 调试示例,输入一个正整数n(0n=9)和一组(n个)有序的整数,再输入一个整数x,把x插入到这组数据中,使该组数据仍然有序。源程序(有错误的程序)errora_1.cpp#include void main( ) int i, j, n, x, an; printf(输入数据的个数n:); scanf(%d, &n); printf(输入%d个整数:, n); for(i = 0; i n; i+) scanf(%d, &ai); printf(输入要插入的整数:); scanf(%d, &x); for(i = 0; i ai) continue; j = n - 1; while(j = i) /* 调试时设置断点 */ aj = aj+1; j+; /* 调试时设置断点 */ ai = x; break; if(i = n) an=x; for(i = 0; i n + 1; i+) printf(%d , ai); putchar(n); 运行结果(改正后程序的运行结果)输入数据的个数n:5输入5个整数:1 2 4 5 7输入要插入的整数:31 2 3 4 5 7提示:先找到插入点,从插入点开始,所有的数据顺序后移,然后插入数据;如果插入点在最后,则直接插入(说明插入的数排在该组数据中的最后)。(1)输入并保存上述程序后,编译程序,出现以下错误信息:expected constant expressioncannot allocate an array of constant size 0a : unknown size以上错误信息指出:定义数组a时,数组长度必须是常量。程序中的数组定义错误的用了an,改为a10后,重新编译和连接,没有出现错误信息。(2)调试程序开始,设置2个断点,具体位置见源程序的注释。(3)单击(go),运行程序,依次输入5和1 2 4 5 7,以及3,程序运行到第一个断点,在Watch窗口观察输入的a数组和插入的数x均正确,而且3 4(xa2),需要将a2及其后面的数据顺序后移,然后把3插入到a2中。(4)再单击(go),程序运行到第二个断点,在Watch窗口观察aj和aj+1的值均是一个负数,这显然不对。仔细分析,算法要求数组元素后移,而程序中aj=aj+1是前移,而且j+也同样有问题,只要加一次,数组下标就越界了。(5)找出问题后,单击(Stop Debugging )停止调试,把aj=aj+1改为aj+1=aj,j+改为j-后,重新编译和连接,没有错误和警告。(5)单击(Rstart ),重新开始调试,并取消第一个断点,单击(go),程序运行到断点,Watch窗口显示aj=5和aj+1=7,排列正确。(6)再单击(go),程序运行到断点,观察Watch窗口中aj和aj+1的值均排列正确。(7)单击(Step Over)2次,程序跳出while循环,箭头指向了要插入数据的语句。(8)再单击(Step Over),程序跳出for循环,在Watch窗口观察a数组的元素排列正确。(9)把光标放在最后一行,单击(Run to Cursor),程序运行到最后,输出1 2 3 4 5 7,运行结果正确。(10)单击(Stop Debugging (Shaft F5)),程序调试结束。122 输入1个正整数n (1n10),再输入n个整数,输出平均值(保留2位小数)。123 输入1个正整数n (1n10),再输入n个整数,按逆序输出这些数。124 输入1个正整数n (1n10),再输入n个整数,输出最大值极其下标(设最大值惟一,下标从0开始)。125 输入1个正整数n (1n10),再输入n个整数,将最小值与第1个数交换,最大值与最后1个数交换,然后输出交换后的n个数。126 输入1个正整数n (1n=10),再输入n个整数,将它们从大到小排序后输出。127 改错,设a是一个整型数组,n和x都是整数,数组a中各元素的值互异。在数组a的元素中查找与x相同的元素,如果找到输出x在数组a中的下标位置,如果没有找到输出“找不到与x相同的元素”。输入输出示例:输入数组元素的个数:5输入数组5个元素:1 3 5 7 9x = 5和5相同的数组元素是a2 = 5源程序(有错误的程序)errora_2.cpp#include void main( ) int i, x, n, an; printf(输入数组元素的个数:); scanf(%d, &n); printf(输入数组%d个元素:,n); for(i = 0; i n; i+) scanf(%d, &ai); printf( x= ); scanf(%d, &x); for(i = 0; i n; i+) if(ai != x) break; if(i!=n) printf( 没有找到与%d相等的元素!n, d); else printf( 和%d相同的数组

温馨提示

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

评论

0/150

提交评论