这条信息表示需要编写一个名为fun的函数,其功能是删除一个一维数组中所有相同的数字,仅保留一个。数组中的数字已按从小到大的顺序排列,函数返回删除后数组中数字的个数。
时间: 2023-07-15 15:10:15 浏览: 79
好的,可以用以下代码实现:
```python
def fun(arr):
"""
删除一维数组中所有相同的数字,仅保留一个。
:param arr: 待处理的一维数组
:return: 删除后数组中数字的个数
"""
if not arr:
return 0
i = 0
for j in range(1, len(arr)):
if arr[j] != arr[i]:
i += 1
arr[i] = arr[j]
return i + 1
```
这里使用了双指针的方法,i指向当前保留的数字,j指向当前考虑的数字,如果arr[j]不等于arr[i],则将arr[j]加入结果数组,并将i加1。最后返回i+1即为删除重复数字后数组中数字的个数。
相关问题
c语言编写一个自定义函数fun( ),其功能是将一个数组逆序输出。在主函数中,从键盘输入一个一维数组中的5个元素,调用该自定义函数, 运行该程序,将此数组逆序输出。
好的,以下是代码实现:
```c
#include <stdio.h>
void fun(int arr[], int size) {
int i, temp;
for(i = 0; i < size/2; i++) {
temp = arr[i];
arr[i] = arr[size-1-i];
arr[size-1-i] = temp;
}
}
int main() {
int arr[5], i;
printf("请输入数组中的5个元素:\n");
for(i = 0; i < 5; i++) {
scanf("%d", &arr[i]);
}
fun(arr, 5);
printf("逆序输出结果为:\n");
for(i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在该程序中,我们定义了一个名为 `fun` 的函数,该函数接收一个数组和数组的大小作为参数,然后使用循环将数组中的元素逆序交换位置。在主函数中,我们首先从键盘输入了一个包含5个元素的整型数组,然后调用 `fun` 函数,将输入的数组逆序输出。
请编写一个函数fun,它的功能是:求出一个长度为10的一维数组中最大元素的值,并将此值返回调用函数
你可以创建一个名为`findMax`的函数,它接受一个长度为10的一维整数数组作为参数。以下是这个函数的Python示例:
```python
def findMax(arr):
# 检查输入是否为长度为10的一维数组
if len(arr) != 10:
raise ValueError("输入数组长度必须为10")
# 初始化最大值为数组的第一个元素
max_value = arr[0]
# 遍历数组,比较每个元素并更新最大值
for i in range(1, len(arr)):
if arr[i] > max_value:
max_value = arr[i]
# 返回最大值
return max_value
# 示例使用
input_array = [1, 5, 9, 2, 7, 4, 8, 6, 3, 10]
max_element = findMax(input_array)
print(f"数组中的最大元素是: {max_element}")
```
在这个函数中,我们假设输入是一个整数数组,如果不是,则抛出异常。然后通过遍历数组找到最大值并将其返回。
阅读全文