请使用C++简单编写函数 fun ,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 注意:请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 中填入你编写的若干语句。 输入格式 一维数组。 输出格式 去重之后的数组。 输入输出样例 输入1 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 10 输出1 2 3 4 5 6 7 8 9 10
时间: 2024-01-08 18:03:48 浏览: 99
以下是 fun 函数的 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
int fun(int *a, int n) {
int k = 1; // 记录去重后的数组长度
for (int i = 1; i < n; i++) {
if (a[i] != a[i-1]) { // 如果当前元素不等于前一个元素,则说明出现了新的数
a[k++] = a[i]; // 把新的数加入到数组中
}
}
return k; // 返回去重后的数组长度
}
int main() {
int n = 20;
int a[n] = {1, 2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10};
int m = fun(a, n);
for (int i = 0; i < m; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
1 2 3 4 5 6 7 8 9 10
```
相关问题
请使用C++编写函数 fun ,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 注意:请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 中填入你编写的若干语句。 输入格式 一维数组。 输出格式 去重之后的数组。 输入输出样例 输入1 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 10 输出1 2 3 4 5 6 7 8 9 10
以下是 `fun` 函数的 C++ 实现代码:
```cpp
int fun(int a[], int n) {
if (n == 0) return 0;
int j = 0;
for (int i = 1; i < n; i++) {
if (a[j] != a[i]) {
a[++j] = a[i];
}
}
return j + 1;
}
```
主函数 `main` 如下:
```cpp
#include <iostream>
using namespace std;
const int N = 10010;
int fun(int a[], int n);
int main() {
int n, a[N];
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
n = fun(a, n);
for (int i = 0; i < n; i++) cout << a[i] << ' ';
cout << endl;
return 0;
}
```
函数 `fun` 的输入参数包括一个一维数组 `a` 和数组长度 `n`,返回删除重复元素后的数组长度。
主函数 `main` 中先读入数组,调用 `fun` 函数得到新的数组长度,最后输出删除重复元素后的数组。
请使用C++编写简单易懂函数 fun ,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 注意:请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 中填入你编写的若干语句。 输入格式 一维数组。 输出格式 去重之后的数组。 输入输出样例 输入1 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 10 输出1 2 3 4 5 6 7 8 9 10
根据题意,我们需要遍历一遍数组,如果当前遍历到的数与前一个数相同,则删除当前数,否则继续往后遍历。可以使用双指针来实现。
具体地,我们定义两个指针 i 和 j,分别指向数组的第一个元素和第二个元素。然后我们从数组的第二个元素开始遍历,如果当前遍历到的数与前一个数相同,那么 j 继续往后遍历,直到找到第一个和当前数不同的数,然后将这个数赋值给 i+1,然后 i 和 j 都往后移动一位,继续遍历下一个数。如果当前遍历到的数与前一个数不同,那么直接将这个数赋值给 i+1,然后 i 和 j 都往后移动一位,继续遍历下一个数。最后返回 i+1,即为删除重复元素后数组中数据的个数。
下面是完整的 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
const int N = 10010;
int fun(int a[], int n)
{
int i = 0, j = 1;
while (j < n) {
if (a[j] == a[i]) j++;
else a[++i] = a[j++];
}
return i + 1;
}
int main()
{
int n, a[N];
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
int m = fun(a, n);
for (int i = 0; i < m; i++) cout << a[i] << " ";
cout << endl;
return 0;
}
```
阅读全文