一道C语言改错题
3个错误:
数组是升序排列,i,j作为一个区间逐步缩小来查找,每次区间范围缩小一半,当xa[k]时,即x在a[k]右边范围则将下限i=k+1,当a[k]==x时,直接跳出;
找到a[k]后删除,使a[k]后面的数向前移动,a[9]置0;
3.输出新的数组,前面也加个输出原始数据对比下。
#includestdafx.h
#include
usingnamespacestd;
intmain()
{
intx,t1,t2,i,j,k;
inta[10]={5,11,21,31,41,51,61,71,81,91};
printf(请输入需要删除的一个整数);
scanf_s(%d,&x);
printf(原始数据是:\n);
for(i=0;i<10;i++)
printf(%5d,a[i]);
printf(\n);
i=0;
j=9;
while(i<=j)
{
k=(i+j)/2;
if(a[k]==x)
break;
if(a[k]>x)
j=k-1;
if(a[k]<x)
i=k+1;
}
if(i>j)
printf(需要删除的数不在数组中\n);
else
{
for(i=k;i<10;i++)
a[i]=a[i+1];
a[9]=0;
//printf(%5d,a[i]);
}
for(i=0;i<10;i++)
printf(%5d,a[i]);
printf(\n);
system(pause);
return0;
}
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇