实验8-1-1 利用指针找最大值 (10分)

本题要求实现一个简单函数,找出两个数中的最大值。

函数接口定义:

void findmax( int *px, int *py, int *pmax );

其中px和py是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。

裁判测试程序样例:

#include <stdio.h>

void findmax( int *px, int *py, int *pmax );

int main()
{    
    int max, x, y; 

    scanf("%d %d", &x, &y);
    findmax( &x, &y, &max );
    printf("%d\n", max);

    return 0;
} 

/* 你的代码将被嵌在这里 */

输入样例:
3 5
输出样例:
5
题目集全集传送门

void findmax( int *px, int *py, int *pmax )
{
    if (*px > *py)
        *pmax = *px;
    else
        *pmax = *py;
}
### 实现交换数组或列表中的最小值和最大值 以下是基于 C 和 Python 的种实现方式,别展示了如何在数组或列表中到最小值和最大值,并完成它们之间的位置互换。 #### 方法一:C语言实现 在 C 中可以通过指针操作来访问数组元素。以下是一个完整的程序示例: ```c #include <stdio.h> // 定义求最大值和最小值的函数 void max_min(int *arr, int n, int *max_index, int *min_index) { *max_index = *min_index = 0; // 假设第一个元素是最小值和最大值 for (int i = 1; i < n; i++) { // 遍历整个数组 if (arr[i] > arr[*max_index]) { *max_index = i; } if (arr[i] < arr[*min_index]) { *min_index = i; } } } void swap_max_min(int *arr, int n) { int max_index, min_index; max_min(arr, n, &max_index, &min_index); // 调用函数获取最大值和最小值索引 // 如果最大值和最小值相同,则无需交换 if (max_index != min_index) { int temp = arr[max_index]; arr[max_index] = arr[min_index]; arr[min_index] = temp; } } int main() { int arr[] = {3, 5, 7, 2, 8}; // 示例数组 int n = sizeof(arr) / sizeof(arr[0]); printf("原始数组: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); swap_max_min(arr, n); printf("交换后的数组: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ``` 上述代码实现了以下几个功能: - 使用 `max_min` 函数查数组的最大值和最小值对应的索引[^1][^3]。 - 利用临时变量完成个数值的位置互换[^4]。 --- #### 方法二:Python实现 在 Python 中可以更简洁地处理数组(即列表)。下面是一段用于交换列表中最小值和最大值的代码: ```python def find_indices(lst): # 最大值和最小值及其对应索引 max_val = max(lst) min_val = min(lst) max_idx = lst.index(max_val) min_idx = lst.index(min_val) return max_idx, min_idx def swap_max_min(lst): max_idx, min_idx = find_indices(lst) # 获取最大值和最小值索引 if max_idx != min_idx: # 若者不同则进行交换 lst[max_idx], lst[min_idx] = lst[min_idx], lst[max_idx] if __name__ == "__main__": array = [3, 5, 7, 2, 8] # 示例列表 print(f"原始列表: {array}") swap_max_min(array) print(f"交换后的列表: {array}") ``` 此代码的关键点在于: - 使用内置函数 `max()` 和 `min()` 来快速定位最大值和最小值[^2]。 - 运用解构赋值的方式简化数交换逻辑。 --- ### 总结 无论是采用 C 或者 Python 编程语言,在实际开发过程中都需要注意边界条件以及特殊情况下的处理,比如当最大值与最小值相等时的情况。以上提供了清晰易懂的解决方案供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Re:从零开始的代码生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值