用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 函数接口定义: void maxmin(int arr[ ],int *pt1,int *pt2,int n); 其中 arr 、 pt1、pt2、n 都是用户传入的参数,n为元素个数。函数求指针arr所指向
时间: 2024-04-30 08:18:48 浏览: 235
的一维数组中的最大和最小元素值,并通过指针pt1和pt2返回最大和最小值。函数实现如下:
```
void maxmin(int arr[], int *pt1, int *pt2, int n) {
int i;
*pt1 = *pt2 = arr[0];
for (i = 1; i < n; i++) {
if (arr[i] > *pt1) {
*pt1 = arr[i];
}
if (arr[i] < *pt2) {
*pt2 = arr[i];
}
}
}
```
在主函数中,定义一个数组,调用函数求出最大和最小元素值,并输出结果:
```
int main() {
int arr[] = {1, 2, 3, 4, 5};
int max, min;
maxmin(arr, &max, &min, 5);
printf("max = %d, min = %d\n", max, min);
return 0;
}
```
输出结果为:
```
max = 5, min = 1
```
相关问题
C语言用指针作函数参数,编程序求一维数组中的最大和最小元素值
好的,下面是代码示例:
```c
#include <stdio.h>
void max_min(int arr[], int size, int *max, int *min);
int main() {
int arr[] = {2, 5, 1, 9, 4, 7};
int size = sizeof(arr) / sizeof(arr[0]);
int max, min;
max_min(arr, size, &max, &min);
printf("Max: %d\n", max);
printf("Min: %d\n", min);
return 0;
}
void max_min(int arr[], int size, int *max, int *min) {
*max = arr[0];
*min = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > *max) {
*max = arr[i];
}
if (arr[i] < *min) {
*min = arr[i];
}
}
}
```
在这个代码中,我们定义了一个 `max_min()` 函数,它接受一个整型数组、数组大小、以及两个指向整型变量的指针作为参数。函数体内,我们使用一个循环遍历整个数组,找到其中的最大值和最小值,并将它们保存在指针所指向的变量中。
在 `main()` 函数中,我们定义了一个整型数组,并计算出其大小。然后,我们定义了两个整型变量 `max` 和 `min`,并将它们的地址作为参数传递给 `max_min()` 函数。最后,我们打印出最大值和最小值。
希望这个代码能够帮助你解决问题,如果你还有任何问题,可以继续问我。
用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 函数接口定义: void maxmin(int arr[ ],int *pt1,int *pt2,int n); 其中 arr 、 pt1、pt2、n 都是用户传入的参数,n为元素个数。函数求指针arr所指向的一维数组中的最大和最小的元素值,并将最大值和最小值存入指针pt1和pt2所指的存储单元中。 裁判测试程序样例: #include<stdio.h> #define N 10 void maxmin(int arr[ ],int *pt1,int *pt2,int n); int main( ) { int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a;p2=&b; maxmin(array,p1,p2,N); printf("max=%d,min=%d",a,b); return 0; } /* 请在这里填写答案 */
答案如下:
```c
#include<stdio.h>
#define N 10
void maxmin(int arr[ ],int *pt1,int *pt2,int n);
int main( ) {
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a;p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
return 0;
}
void maxmin(int arr[ ],int *pt1,int *pt2,int n) {
int i;
*pt1 = *pt2 = arr[0]; // 初始化最大值和最小值为数组的第一个元素
for(i=1;i<n;i++) {
if(arr[i]>*pt1) { // 如果当前元素大于最大值,则更新最大值
*pt1 = arr[i];
}
if(arr[i]<*pt2) { // 如果当前元素小于最小值,则更新最小值
*pt2 = arr[i];
}
}
}
```
阅读全文