355、请编写函数 fun ,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,一维数组中的数据是: 222344566667789911。678910。 注意:部分源程序存在考生文件夹下的文件prog182.c中。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 I
时间: 2024-02-28 10:55:50 浏览: 50
以下是函数fun的代码实现:
```c
int fun(int a[], int n)
{
int i, j;
for (i = 1, j = 1; i < n; i++) {
if (a[i] != a[i - 1]) {
a[j++] = a[i];
}
}
return j;
}
```
解释如下:
首先定义两个变量 i 和 j,分别表示数组中的当前元素和不重复元素的下标。
从数组的第二个元素开始遍历,如果当前元素不等于前一个元素,则将当前元素放入不重复元素的位置,并更新不重复元素下标 j。
最后返回不重复元素的数量 j 即可。
相关问题
请编写函数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,即为删除重复数后数组中数据的个数。