从键盘输入10个整数,用函数编程实现计算其最大值和最小值,并互换它们所在数组中的位置。

从键盘输入10个整数,用函数编程实现计算其最大值和最小值,并互换它们所在数组中的位置。
要求按如下函数原型编写程序
void ReadData(int a[], int n);
void PrintData(int a[], int n);
void  MaxMinExchang(int a[], int n);
**输入提示信息要求:
"Input n(n<=10):\n"
"Input %d numbers:\n"
**要求输入格式为:"%d"
**输出提示信息:"Exchange results:"
**要求输出格式为:"%5d"
                  输出数组中所有数据后换行

程序运行示例:
Input n(n<=10):
4
Input 4 numbers:
4 2 9 3
Exchange results:    4    9    2    3
//计算数组最大值及最大值下标

//计算数组最大值及最大值下标
int Findmax(int a[], int n, int* pos)  //*为下标的位置pos,n为数组长度
{
	int i, maxNum;
	*pos = 0;//记录下标
	maxNum = a[0];//记录最大值
	for (int i = 0; i < n; i++)
	{
		if (maxNum < a[i])
		{
			maxNum = a[i];//为了下一次比较
			*pos = i;//找到了最大值对应下标
		}
	}
	return maxNum;
}
//计算数组最小值及最小值下标
int Findmin(int arr[], int n,int *pos)
{
	int temp = arr[0];
	*pos = 0;
	for (int i = 0; i < n; i++)
	{
		if (temp > arr[i])//如果大于,就换成小的
		{
			temp = arr[i];
			*pos = i;
		}
	}
	return temp;
}
//排序常用的数组值的交换:
void swap_arr(int arr[], int a, int b)
{
	int temp;
	temp = arr[a];
	arr[a] = arr[b];
	arr[b] = temp;
}
void MaxMinExchang(int a[], int n)
{
	int Pos_min, Pos_max;
	int *pos_min=&Pos_min,*pos_max=&Pos_max;
	Findmax(a, n,pos_max);
	Findmin(a, n, pos_min);
	swap_arr(a, Pos_min, Pos_max);
}

int main()
{
	int a[10] = {0};
	int n;
	printf("Input n(n<=10):\n");
	scanf("%d", &n);
	printf("Input %d numbers:\n", n);
	Input_arr(a, n);
	MaxMinExchang(a, n);
	printf("Exchange results:");
	printf_arr1(a, n);
	system("pause");
	return 0;
}

对于该题目解答分为三个函数如上所示,其中找最大和最小只用修改判断条件即可,不过有一个缺点就是如果数组中有重复的数据,只能查到一个值,如果有需要可以利用数组储存所要查找下标的值,对于本题,上述足矣.

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下步骤实现: 1. 定义一个函数,接受一个整数数组作为参数,返回最大值最小值的元组。 2. 在函数,使用循环遍历数组,找到最大值最小值,并记录它们的索引。 3. 在函数,使用元组交换的方式,将最大值最小值所在的位置互换。 4. 在主程序从键盘输入10个整数,将它们存储在一个数组中。 5. 调用函数计算最大值最小值,并互换它们所在数组中位置。 6. 输出交换后的数组。 以下是示例代码: ```python def find_max_min(arr): max_val = arr[0] min_val = arr[0] max_idx = 0 min_idx = 0 for i in range(1, len(arr)): if arr[i] > max_val: max_val = arr[i] max_idx = i elif arr[i] < min_val: min_val = arr[i] min_idx = i arr[max_idx], arr[min_idx] = arr[min_idx], arr[max_idx] return (max_val, min_val) arr = [] for i in range(10): num = int(input("请输入第%d个整数:" % (i+1))) arr.append(num) max_val, min_val = find_max_min(arr) print("最大值:%d,最小值:%d" % (max_val, min_val)) print("交换后的数组:", arr) ``` 运行结果示例: ``` 请输入第1个整数:5 请输入第2个整数:3 请输入第3个整数:8 请输入第4个整数:2 请输入第5个整数:9 请输入第6个整数:1 请输入第7个整数:7 请输入第8个整数:4 请输入第9个整数:6 请输入第10个整数:0 最大值:9,最小值:0 交换后的数组: [5, 3, 8, 2, 0, 1, 7, 4, 6, 9] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值