1. 程式人生 > >陣列中刪數(只刪一個)

陣列中刪數(只刪一個)

Description
在給定的陣列中刪除一個數

Input
多組測試,每組第一行輸入1個整數n(n<20),然後是n個整數 第二行輸入1個整數m

Output
刪除在第一行的n個整數中第一次出現數字m並刪除,然後按照順序輸出剩下的數, 最後一個數後面無空格

Sample Input
4 1 2 3 4
3
Sample Output
1 2 4

#include <stdio.h>
int main()
{
int n;
int a[20];
int b[20];
while(scanf("%d",&n)!=EOF)
{
int m;
int i,k=0;
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(i=1;i<=n;i++)
{
if(ma[i])
{
k=i;
break;
}
}
if(k

0)//k=0即上面的if沒達到條件,即m!=a【i】
{
for(i=1;i<n;i++)
printf("%d “,a[i]);
printf(”%d\n",a[n]);
}
else//存在 m==a[i]的情況
{
for(i=1;i<k;i++)
{
b[i]=a[i];//1到k-1個照常輸出
}
for(i=k+1;i<=n;i++)//k+1到n時由於k為相等時的值,須刪除即不輸出,從k+1開始
{
b[i-1]=a[i];//由於下標按順序輸出,去掉的下標k需要補回來,所以這個for從k+1開始但對b【】來說仍是從k開始,剛好接上,同事下標總是減少了1
}
for(i=1;i<n-1;i++)//b【】已經好了,只剩下輸出,形式須注意,先輸出前n-2個
{
printf("%d “,b[i]);
}
printf(”%d\n",b[n-1]);//最後一個無空格,須換行
}
}
}