当前位置: >
> 关于C语言程序设计中的一个题目(已经排好的序的数组插入数后重新排列,该如何处理
关于C语言程序设计中的一个题目(已经排好的序的数组插入数后重新排列,该如何处理
guoguo521_2 & at
关于C语言程序设计中的一个题目(已经排好的序的数组插入数后重新排列有一个已经排好的序的数组,及今输入一个数,要求按原来排序的规律将它插入数组中。
#include &stdio.h&
void & main()
int & a[11]={1,4,6,9,13,16,19,28,40,100};
int & num,i,j;
printf( &array & a:\n &);
for(i=0;i &10;i++)
printf( &%5d &,a[i]);
printf( &\n &);
printf( &insert & data: &);
scanf( &%d &,&num);
if(num& a[9])
for(i=0;i &10;i++)
if(a[i]& num)
for(j=9;j& =i;j--)
a[j+1]=a[j];
printf( &now,array & a:\n &);
for(i=0;i &11;i++)
printf( &%5d &,a[i]);
printf( &\n &);
我要问的是。。。
if(num& a[9])
不是a[10]最大吗?
既然都定义了a[11],为什么不是a[10]呢?
插入的数num比a数组最后一个数大,讲其插入的数放在a数组末尾...
但是为什么是a[9]呢?。。。
for(j=9;j& =i;j--)
a[j+1]=a[j];
这段也不是很懂。。。
for(j=9;j& =i;j--)
a[j+1]=a[j];
这段也不是很懂。。。
-----------------------------------
if(num& a[9])
//num比a[9]大则num插入到最后
for(i=0;i &10;i++)
//如果num比a[9]小则从第一个数开始比较
if(a[i]& num)
//只到num比a[i]小则将num插入到a[i]
for(j=9;j& =i;j--)
//要把num插入到a[i]就必须把a[i]到a[9]的所有数依次后移一位
a[j+1]=a[j];
guoguojiuyaoguo & &
& & (0)(0)引用呵呵,这很简单呀。
你要先分析下算法。
对于向一个排序好的数组中插入数字,我们需要考虑两种情况:
第一:正常插入。即要插入的数字不比最大的数字大,先让比插入数字大的都向后移动,
然后再让数字插入相应的位置。
第二:非正常插入。即要插入的数字比最大的数字大,这时候不需要移动数字,只需要
直接把数字放在最大数字的后面一个里面就可以了。
你所问的就是第二种情况的处理。
因为a[9]里面存的是最大的数字,如果要插入的数字大于a[9]那么我们则需要,让a[9]
后面的元素a[10]等于要插入的数字。
所以也就有了上的语句
if(num& a[9])
a[10]= guoguoguoguoguo & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-C语言二维数组,该如何解决
&来源:读书人网&【读书人网():综合教育门户网站】
C语言二维数组Mary,John,Robert,Jack,怎样把这是个名字放进二维数组name[50][20],小白一枚,求大神赐教。[解
C语言二维数组Mary,John,Robert,Jack,怎样把这是个名字放进二维数组name[50][20],小白一枚,求大神赐教。
[解决办法]二维char数组,其中的每个一维char数组放一个名字啊你就分别找出指向每个名字开头的指针,以及该名字的长度,然后依次拷贝放到name[0],name[1],name[2]...注意一下字符串结尾的'\0'问题,如果你是来直接要代码的,那就等楼下高人吧。。。[解决办法]&char&name[][20]&=&{"Mary","John","Robert","Jack"};[解决办法]char&name[4][20]&=&{"Mary",&"Jone",&"Rebort",&"Jack"};&//初始化的时候//赋值的话char&name[4][20]&=&{0};strcpy(name[0],&"Mary");strcpy(name[1],&"Jone");...C语言解决数组问题_百度知道
C语言解决数组问题
此外:void printArray(int a[N],此后e将成为0或者i大于数组的元素个数编写一个程序,编写另外一个函数来完成数组的输出, int len),函数的原型为。如果i&其中,成为首元素,e将会被插入到ai-1和ai之间,那么e将插入到数组的头部。要求编写一个函数来完成插入功能:参数i为指定的位置:int insert(int i,否则表示失败。如果i=0;函数返回非负值表示插入成功,则函数返回负值指示出错。例如;参数e为要插入的元素的值, int e):设数组为a,那么当指定在位置i插入元素e时,完成在一个一维数组中指定位置插入一个元素的功能
我有更好的答案
按默认排序
&}&&&&&&&&&if(insert(4;&& ,e允许为负数么;return&&&& 2 没有指定插入元素e的范围; ,从后往前,无法做出优化;&}&if(insert(5;&&&&;&&&}\n&& #include&&&&&&ERR,7))&}&& 。,如何处理;ERR;&N&=&&&&&&&&& , 这也是不得已而为之;&&%d&&&&); 。不过;printf(&&return&&&&&&&& ,sizeof(a));if(0&&&;&&&&&& 。然而,很&&printf(&&ERR;&&a[j]&&10&& ,e将是模糊不清的;&&&&&&);& ?将最后一个元素踢出;for(;&&&int&&&return&&insert(int&&&&a[j]&return&&} ,&&ERR; ,如果不指定;& ?&/*插入到头部*/& .h&a[j-1];& 可忍受的;&void&& 。;&ERR;&&&return&&&&if(insert(1;&return&&& ,继续插入; ,那么我们将无法用一&&这里我选择的是踢出去最后一个元素;&}&& 多时候;&&&&&&&&&&&=&&printArray(int&0&&&&i&&&&&&OK; 。;int&&return&&&&&&&=&&& ,负无穷;&&return&&&ERR&& ,汉字纯手打,具体如下;&/*数组清空*/&&);ERR,发现大体能符合要求;&&&&&&&& ,1))&&&&&a[];&&&} ?要知道,只能扩大处理范围;&{&&&&&&&&&printArray(a,1))&&&if(insert(9;& ,导致此插入算法效率低下; ,4))&&printf(",依次移动*/&&{& 。题意不明确;&&a[]; ,3))&{&N){&&j&ERR;&&&insert(0;{&int&/*将后面的元素;return&j;&&{&len);&程序纯手写;&i&#define&&}&}&}}int&&&&& ,我们需要指定“无效值”;&& ,由于题目不明确;return&&&& ,为了保证算法的正确性;&}&e){&for(j=N-1;&&& , ,&&&&&&&-1#define&&len){ ,5))&&&& 。如果不指定范围;i; ,并调试了一下;&&&if(insert(9。&&&&&&&&insert(int&a&i++)&& ,&&if(insert(10;&}&&{&&e;{ 。&ERR;/*指定数组大小*/#define&position&&return ,当N很大(如999999或更大)时;&&&&&&& 个数字代替正/负无穷;&&{&& ,3))&&  :1 如果a中元素已满;&& 。;&&{& ,3))&if(i&}&int&ERR;{&&&&&&&&ERR;&&&& 。如有疑问; ,3))& !\n&e);&&&&ERR;i&& 3 由于原因2;a[N];int&&&&&&& ,请随时追问;&&;  ,3)) ,如正无穷;0int& 。;&j--)&&&&{&&&int&N);&& ,a[i]); ? 报错返回;=&&&&return&&&/*全局数组a[N]*/int& ,0x00;ERR;}这个是我自己写的;&{&& ,算法的时间效率是不&&&printf(&{&&&&OK&&&i=0; ,&printArray(int&&&&&}void&&i&}&&&main(){&&||&&if(insert(3;if(insert(5;&&&memset(a;&int&if(insert(5;&#include<.h& 。 
你一点都不会?先判断 i 是否&元素个数,否的话转入一个循环,这个循环将
你一点都不会?先判断 i 是否&元素个数,否的话转入一个循环,这个循环将 an放到an+1
其他类似问题
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁浅谈C语言编程中的常见错误和解决方法
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
浅谈C语言编程中的常见错误和解决方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}