《上机作业题之十-精品文档资料整理.doc》由会员分享,可在线阅读,更多相关《上机作业题之十-精品文档资料整理.doc(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、上机作业题之十用伪随机函数给有10个元素的一维整型数组的前9个元素产生1099之间的升序正整数。输出这9个元素的值。然后,从键盘输入一个数给x,将x插入到数组中,保证数组仍然是升序的。输出插入x后数组的10个元素值。再从键盘输入一个数给x,将值等于x的元素从数组中删除。输出删除后数组的9个元素值。若数组中没有值为x的元素,则输出没有这个数的信息。参考程序如下:#include#includevoid main() int i,j ,x,k=9,a10,n=10; printf(伪随机函数产生的升序数组是:n); for(i=0;ik;n+=10,i+) ai=rand()%10+n; prin
2、tf(%4d,ai); printf(n); printf(读入一个要插入的数!n); scanf(%d,&x); for(i=0;ik&aii;j-) /插入的位置后面的元素,向后移动一位 aj=aj-1;ai=x; /移动结束后再插入 k+; printf(插入 %d 后的数组是:n,x); for(i=0;ik;i+) /输出插入后的数组 printf(%4d,ai); printf(n); printf(读入一个要删除的数!n); scanf(%d,&x); for(i=0;ik&ai!=x;i+); /查找值等于x的元素的位置if(i=k) /i=k说明没有值等于x的元素 print
3、f(数组中不存在 %d 这个数!n,x);else /就是找到了 for(j=i;jk;j+) /删除这个元素,该元素后面的元素都向前移动一位 aj=aj+1; k-; /删除后,元素总个数减少1个 printf(删除 %d 后的数组是:n,x); for(i=0;ik;i+) /输出删除后的数组 printf(%4d,ai); printf(n);可以把上面程序中的查找插入位置和向后移动一位的这两个for循环: for(i=0;ik&aii;j-) /插入的位置后面的元素,向后移动一位 aj=aj-1;改为下面的一个for循环: for(i=k;i0&ai-1x;ai=ai-1,i-);这样
4、源程序更精练些,但是程序的复杂度和执行效率是相同的。类似地也可以设法将删除代码写得更精练些。但是程序的复杂度和执行效率同样也不会改善。上面程序运行时,屏幕上显示:伪随机函数产生的升序数组是:11 27 34 40 59 64 78 88 92读入一个要插入的数!若输入: 9 回车则输出为:插入 9 后的数组是:9 11 27 34 40 59 64 78 88 92若输入: 99 回车则输出为:插入 99 后的数组是:11 27 34 40 59 64 78 88 92 99读入一个要删除的数!若输入:64 回车则屏幕上显示:删除 %d 后的数组是:11 27 34 40 59 78 88 92 99若输入:30 回车则屏幕上显示:数组中不存在 30 这个数!