在一个已排序数组中删除任意一个整数

下列程序的功能是在一个已排序数组中删除任意一个整数。

   #include “stdio.h”

     void main()

     { int x, i,j,k;

       int a[10]={ 8,18,28,38,48,58,68,78,88,98};

       printf(“请输入需要删除的一个整数:”);

       scanf(“%d”,&x);

       i=0 ;

       j=9 ;

       while(i<=j)

       { k=(i+j)/2 ;

         if(a[k] == x) continue; ★

         if(a[k] > x)  i=k-1; ★

         if(a[k] < x)  j=k+1; ★

       }

       if(i > j) printf(“需要删除的数不在数组中\n”);

       else  {  for( ;k<9;k++)  a[k]=a[k+1];

                   for (i=0;i<10;i++)★

                   printf(“%5d”,a[i]);

              }

}

 

 

 

for(i=0,j=0;i<=10;i++) 改为: for(i=1,j=0;i<=10;i++)
if(i%3=0) j++; 改为: if(i%3==0) j++;
for(;j>=0;j++) 改为: for(;j>=0;j–)
#include “stdio.h”
void main()
{ int a[11],b[4],i,j;
for(i=1;i<=10;i++)
a[i]=i;
for(i=0;i<4;i++)
b[i]=0;
for(i=1,j=0;i<=10;i++)
{ b[j]+=a[i];
if(i%3==0) j++;
}
for(;j>=0;j–)
printf(“%3d”,b[j]);
}
程序的执行结果是:
10 24 15 6

 

if(a[k] == x) continue; 改为: if(a[k]==x) break;
if(a[k] > x) i=k-1; 改为: if(a[k]>x) j=k-1;
if(a[k] <  x) j=k+1; 改为: if(a[k]< x) i=k+1;
for (i=0;i< 9;i++) 改为: for (i=0;i< 9;i++)
#include “stdio.h”
void main()
{ int x, i,j,k;
int a[10]={ 8,18,28,38,48,58,68,78,88,98};
printf(“请输入需要删除的一个整数:”);
scanf(“%d”,&x);
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( ;k< 9;k++) a[k]=a[k+1];
for (i=0;i< 9;i++)
printf(“%5d”,a[i]);
}
}

© 版权声明
THE END
喜欢就支持以下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容