1、计算机三级网络技术机试(上机操作)模拟试卷 9及答案与解析 一、程序设计题 1 请编制一个函数 arrangeValue(int inBuf109),其功能是:将一正整数序列K1, K2, , K9)重新排成一个新的序列。新序列中,比 K1小的数都在 K1的左面 (后续的再向左存放 ),比 K1大的数都在 K1的右面 (后续的再向右存放 )。从 K1向右扫描。函数 WriteData()负责将 outBuf中的数据输出到文件 OUT DAT中。 说明:在程序中已给出了 10个序列。每个序列中有 9个正整数,并存入数 组inBuf109中,分别求出这 10个新序列。 例如:序列排序前 3, 5,
2、 8, 9, 1, 2, 6, 4, 7) 序列排序后 2, 1 3, 5, 8, 9, 6, 4 7 注意:部分源程序已给出。 请勿改动主函数 main()和写函数 WriteData()的内容。 试题程序: #include void WriteData(); int inBuf109=6, 8, 9, 1, 2, 5, 4, 7, 3, 3 5, 8, 9, 1, 2, 6, 4 7, 8, 2, 1, 9, 3, 5, 4, 6, 7, 3, 5, 1, 2, 9 8, 6 7, 4), 4, 7, 8, 9 1, 2, 5, 3, 6), 4, 7, 3, 5, 1, 2, 6, 8
3、, 9, 9, 1, 3, 5, 8, 6, 2, 4, 7, 2 6, 1, 9, 8, 3, 5 7, 4), 5, 3, 7, 9, 1, 8, 2, 6, 4, 7, 1, 3, 2, 5, 8, 9, 4, 6), ; void arrangeValue() void main() int i, j; arrangeValue(); for(i=0; i=0; j-) 从最后一列向前扫描 if(inBufijinBufi0) 如果当前数据比首位数据大 tempnum_high=inBufij; 将当前数据放到 temp中的第 mum high位 mum_high-; 将存放比首位数据
4、大的数据的下标前 移,以指定下次存放的位置 else tempnum_low=inBufij; 将当前数据放到 temp中的第 mum low位 hum_low+ 将存放比首位数据小的数据的下标后 移,以指定下次存放的位置 tempEnum_high=inBufi0; 在最后留下的位置上存放原数组的首位数据 for(j=0; j9; j+) inBufij=tempEj; 将 temp中的内容复制到 inBuf中 【试题解析】 题主要考查数组中数据按指定要求重新排序的方法。 从左边开始扫描时。不管是比第一个大的还是小的。都以第一个元素所在的位置来定起始位置,由于第一个元素的位置不确定,所以比第一个元素大的和小的元素的起始存放位 1也不能确定。若从 右侧开始扫描,则比第一个元素大的和小的元素的起始存放位置是数组的两侧,起始位置固定。 程序步骤: 从右侧开始查找,如果当前元素比第一个元素大,则从数组 temp的右侧起存放,反之,则从数组 temp的左侧起存放。最后将第一个元素存放在剩下的位置。 将 letup中的值赋给数组 inBuf。