1. 程式人生 > 實用技巧 >1117: 查詢陣列元素

1117: 查詢陣列元素

題目描述

輸入n個整數構成一個數組,在這個陣列中查詢x是否存在,如果存在,刪除x,並輸出刪除元素後的陣列。如果不存在,輸出“Not Found”。

定義一個查詢函式find(),在陣列a中查詢x,若找不到函式返回-1,若找到返回x的下標,函式原型如下:

int find(int a[], int n, int x);

然後在main()中,先呼叫函式find(),若查詢失敗輸出“Not Found";若查詢成功,則呼叫上一題中定義的函式del()刪除該元素,再呼叫上一題中的PrintArr()輸出刪除元素後的陣列內容。

輸入

輸入第一行是一個正整數n(1<=n<=10);

第二行是n個整數,構成一個數組;

第三行是一個整數x,表示待查詢元素。

輸出

輸出刪除元素後的陣列,每個元素佔4列,右對齊。如果不存在,輸出“Not Found”。如果陣列中有多個x,只刪除下標最小的那個。

樣例輸入 Copy
6
3 6 2 4 7 9
4
樣例輸出 Copy
   3   6   2   7   9
來源/分類 #include <stdio.h>

int find(int a[], int n, int x)
{
int i;
for(i = 0; i < n; i++)
{
if(x == a[i])
return i;
}
return -1;
}

void del(int a[], int n, int i)
{
int j;
for(j = i; j < n-1; j++)
a[j] = a[j + 1];
}

void PrintArr(int a[], int n)
{
int i;
for(i = 0; i <= n-1; i++)//此處的n-1其實為下面的n-1,這裡也可以寫成i<n,
//該n等於下面的程式的n-1;
{
printf("%4d", a[i]);
}
}

int main()
{
int find(int a[], int n, int x);
void del(int a[], int n, int i);
void PrintArr(int a[], int n);
int a[100];
int n,i, num;

scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &num);
a[i] = num;
}
int x, d;
scanf("%d", &x);
d = find(a, n, x);//這裡做一個轉換看上去更簡潔
if(d == -1)
{
printf("Not Found");
}
else
{
del(a, n, d);
PrintArr(a, n-1);
}
return 0;
}