题要求从数组中删除指定数x,然后输出删除后的数组元素。如果x不存在于数组中,提示“Not found x",其中的x是具体数值。 样例程序: #include<iostream> using namespace std; #define N 10 int main() { //本题假设数组中顶多存在一个要找的x int a[N],i,j,x; for(i=0;i<N;i++) //数组赋值 cin>>a[i]; cin>>x; //要删除的数 int flag=0; //预设标志 for(i=0;i<N;i++) //依次查找数组中是否有x if( a[i]==x ) //查找 { flag=1; //设置找到标志 for(j=i;j<N;j++) //后数前移 } if(flag) //找到了 for(i=0;i<N-1;i++) if(i==0)cout<<a[i]; else cout<<" "<<a[i]; else //没找到 cout<< ; return 0; }
时间: 2024-01-16 10:04:39 浏览: 58
下面是 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
#define N 10
int main() {
int a[N], i, j, x;
for (i = 0; i < N; i++) {
cin >> a[i];
}
cin >> x;
int flag = 0;
for (i = 0; i < N; i++) {
if (a[i] == x) {
flag = 1;
for (j = i; j < N - 1; j++) {
a[j] = a[j + 1];
}
break;
}
}
if (flag) {
for (i = 0; i < N - 1; i++) {
cout << a[i] << " ";
}
cout << a[N - 1] << endl;
} else {
cout << "Not found " << x << endl;
}
return 0;
}
```
思路解析:
1. 读入数组元素和要删除的数。
2. 遍历数组,查找要删除的数。如果找到了,就将该数后面的所有数前移一位,从而实现删除操作。注意,数组中顶多存在一个要找的数,因此一旦找到,就可以退出循环。
3. 根据是否找到要删除的数来输出删除后的数组元素或者提示“Not found”信息。
时间复杂度:$O(N)$。
空间复杂度:$O(1)$。
阅读全文