charushu

ygq_2035 2013-03-18 06:01:43
#include<stdio.h>
void main()
{
int a[10],i,j,k;
int x,d=0,h=9,m,temp;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=0;j<=8-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("输出数是:\n");
for(i=0;i<10;i++)
printf("%d\n",a[i]);
scanf("%d",&x);
while(d<=h)
{
m=(d+h)/2;
if(x==a[m])break;
else if(x>a[m])
d=m+1;
else h=m-1;
}
if(d<=h) printf("%d",x);
else
{
for(k=0;k<=8&&x>a[k];k++)
for(i=9;i>=k;i--)
{
a[k]=x;
a[i+1]=a[i];
}
}
for(k=0;k<11;k++)
printf("%d\n",a[k]);
}
...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dataxdata 2013-03-19
  • 打赏
  • 举报
回复
先移动数据,最后再写入x的值
ygq_2035 2013-03-18
  • 打赏
  • 举报
回复
程序还有点错,x输入后得到的结果中出现2个x的值,x后面的一个数被它取代了
dataxdata 2013-03-18
  • 打赏
  • 举报
回复
最后的插入部分可以这样写

int k;
for ( k=0; k<10; k++ )
    if ( a[k] > x )
        break;
for ( int j=9; j>=k; j++ )
    a[j+1] = a[j];
a[k] = x; 
另外,数组a应该定义得更大一些,否则插入一个数的话,就会导致越界访问

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧