下列程序的功能是在一个已排序数组中删除任意一个整数。
#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]);
}
}
暂无评论内容