请编写函数fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如, 一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。用c语言编写
时间: 2024-01-03 11:05:19 浏览: 136
以下是函数fun的实现:
```c
int fun(int arr[], int n) {
if (n <= 1) {
// 数组长度小于等于1,直接返回
return n;
}
int i, j;
j = 0;
for (i = 1; i < n; i++) {
if (arr[i] != arr[j]) {
// 如果当前元素与前一个元素不同,将其保存
arr[++j] = arr[i];
}
}
// 返回保存的元素个数
return j + 1;
}
```
函数接收一个一维数组和数组长度n作为参数。函数会遍历数组,如果当前元素与前一个元素不同,则将其保存到数组中。最后返回保存的元素个数即可。
注意,这里的数组已经按从小到大的顺序排列。如果数组没有排过序,需要先对数组进行排序。
相关问题
请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
### 回答1:
```python
def fun(arr):
n = len(arr)
if n < 2:
return n
j = 0
for i in range(1, n):
if arr[i] != arr[j]:
j += 1
arr[j] = arr[i]
return j + 1
```
测试:
```python
arr = [1, 2, 2, 3, 3, 3, 4, 5, 5]
print(fun(arr)) # 输出:5
print(arr[:5]) # 输出:[1, 2, 3, 4, 5]
```
### 回答2:
定义函数fun如下:
```python
def fun(arr):
if len(arr) == 0: # 如果数组为空,直接返回0
return 0
count = 1 # 初始化计数器为1,表示至少会有一个不重复的数
prev = arr[0] # 用prev保存当前不重复的数
for i in range(1, len(arr)):
if arr[i] != prev: # 如果当前数与prev不相等,表示它是一个新的不重复的数
count += 1 # 计数器加1
prev = arr[i] # 更新prev为当前数
return count # 返回删除后数组中数据的个数
```
函数的思路是遍历一维数组,如果当前数与前一个数不相等,则计数器加1并更新prev为当前数。遍历结束后,计数器的值即为删除后数组中数据的个数。
例如,数组arr为[1, 2, 2, 3, 3, 3, 4, 5, 5],调用fun(arr)会返回5,表示删除后的数组为[1, 2, 3, 4, 5],其中只剩下5个不重复的数。
### 回答3:
编写函数如下:
```python
def fun(arr):
if not arr:
return 0
n = len(arr)
count = 1 # 初始数量为1
for i in range(1, n):
if arr[i] != arr[i-1]: # 如果当前数与前一个数不相同
arr[count] = arr[i] # 将当前数放入索引为count的位置
count += 1
return count
```
函数中的arr表示输入的一维数组,通过遍历数组,将不相同的数依次放入数组的前部分,最后返回剩余的元素个数count即可。
用C语言编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
以下是一个可能的解法:
```c
int fun(int arr[], int n) {
int i, j;
for (i = 0, j = 1; j < n; j++) {
if (arr[j] != arr[i]) {
arr[++i] = arr[j];
}
}
return i + 1;
}
```
该函数的思路是使用两个指针 i 和 j,其中 i 指向当前已经处理好的不重复的数的最后一个位置,j 指向当前正在处理的数的位置。初始时 i=0,j=1。
每次比较 arr[j] 和 arr[i] 是否相等,如果不相等,则说明找到了一个新的不重复的数,将其放到 arr[++i] 的位置上,并且 j 移动到下一个位置继续处理。如果相等,则说明 arr[j] 是一个重复的数,直接跳过。
最后返回 i+1,即为删除重复数后数组中数据的个数。
阅读全文