教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

部分C语言程序设计算法与实现(2)

来源:网络收集 时间:2026-07-25
导读: 机器实验算法总结 #include void main(){ int a[10],i,j,b,c; /*这里定义了数组a[10]、变量i、变量j、变量b、变量c,这里变量b用于保存删除元素群的起始位置c用来保存中止位置*/ printf(\//输出这行文字 for(i=0;i

机器实验算法总结

#include void main(){ int a[10],i,j,b,c; /*这里定义了数组a[10]、变量i、变量j、变量b、变量c,这里变量b用于保存删除元素群的起始位置c用来保存中止位置*/ printf(\//输出这行文字 for(i=0;i<10;i++)//for循环,从0~9 scanf(\&a[i]);//循环体得到用户的输入并且分别赋给a[0]~a[9] printf(\//输出这行文字 for(i=0;i<10;i++) printf(“%-5d”,a[i]);/*这里%-5d为格式化输出控制符,%d表示输出整型(int)]为先输出5个列空格再输出数字,%-5d为先输出数字后输出5个列空格。*/ printf(\scanf(\&b); printf(\scanf(\&c); b--;//将b转换为这个数的数组下标 c--;//同上 for(i=0;i<(c-b+1);i++) for(j=b;j<9;j++)//这里的for和上面讲的删除一个元素的原理一样 a[j]=a[j+1]; for(i=0;i<10-(c-b+1);i++)//for循环显示有效区的 printf(“%-5d”,a[i]); putchar(?\\n?);//输出回车 } 代码八

写到这里似乎我又想到一个比较高效率的算法,分享如下:

王晔2007年10月20日编写

机器实验算法总结

图示四

这里可以跳跃替换,以上图为例,列出关系如下: 开始: a[3]=a[7] a[4]=a[8] a[5]=a[9] 结束;

好,到这里我们输出a[0]~a[5]六个元素,你会发现这个方法似乎比上个方法还要简单而且效率高,但怎样实现呢?具体方法如下:

得到要删除元素的个数s这里通过数组下标运算很容易得到s=6-3+1=4

得到要删除元素最后个元素到数组最后元素的包含元素个数,还是通过数组下标得到h=9-6=3 算出删除后数组元素个数t=9-4=5 for循环如下:

王晔2007年10月20日编写

机器实验算法总结

j=3; /*得到要删除元素最后个元素到数组最后元素的包含元素个数,还是通过数组下标得到h=9-6=3*/ for(i=0;i

最后输出需要这样

//算出删除后数组元素个数t=9-4=5 for(i=0;i<(t+1);i++) printf(“%-5d”,a[i]); 代码十

最终C语言代码如下:

#include void main(){ int a[10],i,j,b,c,h; /*这里定义了数组a[10]、变量i、变量j、变量b、变量c、变量h,这里变量b用于保存删除元素群的起始位置c用来保存中止位置,h的作用见上文*/ printf(\//输出这行文字 for(i=0;i<10;i++)//for循环,从0~9 scanf(\&a[i]);//循环体得到用户的输入并且分别赋给a[0]~a[9] printf(\//输出这行文字 for(i=0;i<10;i++) printf(“%-5d”,a[i]);/*这里%-5d为格式化输出控制符,%d表示输出整型(int)]为先输出5个列空格再输出数字,%-5d为先输出数字后输出5个列空格。*/ printf(\scanf(\&b); printf(\scanf(\&c); b--;//将b转换为这个数的数组下标 c--;//同上 h=9-c; 王晔2007年10月20日编写

机器实验算法总结

j=b; for(i=0;i

问题二:如何根据数组里一个元素进行分类?

在解决这个问题前可以先了解一下如何插入一个数值元素到数组里,先定义数组a[20],由于用到了插入,为了操作这里多给数组a分配空间,我们分配了20,并且说明有效区为a[0]~a[9]十个元素。

插入一个数值元素到数组里其实也是数组内部元素移动的过程,与删除不同的是,插入是向后移的过程。最终多出一个位于欲插入位置的空间,用于存放插入数值元素。

图示五

通过以上图示,似乎问题就很容易解决了,插入和删除移动的方向相反,最后还需执行一个赋值操作。 如何移动呢,由于和删除方向相反,这里可以使用for自减循环。对于上图的分析如下: 开始: a[10]=a[9] a[9]=a[8]

王晔2007年10月20日编写

机器实验算法总结

a[8]=a[7] a[7]=a[6] a[6]=26 结束;

同样可以找到规律a[n+1]=a[n]

n开始于该数组当前最后面元素的数组下标中止于要插入的位置的数组下标-1。先让出要插入的位置a[6],循环如下:

//这里i初始化为当前数组最后面一个元素数组下标9,需要移动4次因此这里i>5 for(i=9;i>5;i--) a[i+1]=a[i]; 代码十二

最后别忘了把要插入的数字插入到这个移动过的数组里^_^。使用

a[i+1]=26;//这里i经过上面循环变为5所以需要再加上1

整理一下方法,可以通过下面的C语言代码实现单元素的插入:

王晔2007年10月20日编写

部分C语言程序设计算法与实现(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/607350.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)