编写函数,其功能为:找出一个数组中的最大值和最小值,并返回这两个值。已知数组中至少有一个元素。
时间: 2023-04-24 17:01:35 浏览: 108
可以使用以下函数来实现:
```python
def find_max_min(arr):
"""
找出一个数组中的最大值和最小值,并返回这两个值。
:param arr: 数组
:return: 最大值和最小值的元组
"""
max_val = arr[0]
min_val = arr[0]
for i in range(1, len(arr)):
if arr[i] > max_val:
max_val = arr[i]
if arr[i] < min_val:
min_val = arr[i]
return max_val, min_val
```
使用方法如下:
```python
arr = [1, 2, 3, 4, 5]
max_val, min_val = find_max_min(arr)
print("最大值为:", max_val)
print("最小值为:", min_val)
```
输出结果为:
```
最大值为: 5
最小值为: 1
```
相关问题
写一个函数,输入一个数组,输出这个数组内最大值和最小值的最大公约数。两个数的最大公约数为能整除两个数的最大正整数。本实例要求编写程序,实现根据十位学生平均分的高低颁发对应歌手名次的功能。
首先,我们先来解释一下如何计算给定数组中最大值和最小值的最大公约数。最大公约数通常通过欧几里得算法(也称辗转相除法)来找到。对于两个数a和b,它们的最大公约数gcd(a, b)等于gcd(b, a % b),直到b变为0,此时a就是最大公约数。
然后,我们将编写一个函数`get_max_gcd(arr)`来解决这个问题:
```python
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
def max_gcd_in_array(arr):
max_value = max(arr)
min_value = min(arr)
return gcd(max_value, min_value)
# 测试示例
numbers = [54, 27, 9, 18, 6]
result = max_gcd_in_array(numbers)
print(f"数组 {numbers} 中最大值和最小值的最大公约数是:{result}")
```
接下来,关于根据学生的平均分颁发歌手名次,如果已知每位学生的平均分为一个列表或数组`student_scores`,我们可以创建一个排序并颁发名次的简单版本:
```python
def rank_students(student_scores):
sorted_scores = sorted(student_scores, reverse=True) # 从高到低排序
return [(i + 1, score) for i, score in enumerate(sorted_scores)] # 返回排名元组 (名次, 分数)
# 示例数据
students_scores = [95, 85, 75, 80, 90]
ranked_students = rank_students(students_scores)
for rank, avg_score in ranked_students:
print(f"第{rank}名学生的平均分是:{avg_score}")
c语言从键盘输入任意N个整数值(N<100),存入数组中,并求出数组的最大值和最小值
在C语言中,你可以使用`scanf()`函数从键盘获取用户输入的整数,并存储到动态创建的数组中。然后通过遍历数组,找出最大值和最小值。以下是简单的步骤:
1. 首先,你需要定义一个能容纳最多100个整数的动态数组,可以使用`malloc()`分配内存。
2. 使用`for`循环获取用户输入,直到达到指定的N个整数。每输入一个,就用`scanf("%d", &array[i])`读取并存储到数组`array[]`的相应位置。
3. 定义两个变量`max`和`min`,初始值分别为数组的第一个元素,用于记录最大值和最小值。
4. 再次使用`for`循环遍历整个数组,比较每个元素与当前已知的最大值和最小值,更新这两个变量。
5. 循环结束后,`max`和`min`就是数组中的最大值和最小值。
这是一个基本的示例代码片段:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int N, i;
printf("请输入数字的数量(N<100): ");
scanf("%d", &N);
// 动态分配内存
int *array = (int*) malloc(N * sizeof(int));
if (!array) {
printf("内存分配失败!\n");
return 1;
}
// 获取用户输入并计算最大值和最小值
for (i = 0; i < N; ++i) {
printf("请输入第 %d 个数: ", i+1);
scanf("%d", &array[i]);
// 初始设置 max 和 min 为第一个元素
array[i] > array[0] ? max = array[i] : max = array[0];
array[i] < array[0] ? min = array[i] : min = array[0];
}
printf("数组中的最大值是: %d\n", max);
printf("数组中的最小值是: %d\n", min);
// 释放内存
free(array);
return 0;
}
```
阅读全文