0%

C9 | 找出数列中的最大值和最小值

读前福利:几百本互联网技术书籍送给大家https://mp.weixin.qq.com/s/dFqVQ2qJxvQ0YrIlPISJuw


1 题目

函数:max_min()

功能:找出数列中的最大值和最小值

描述:使用指针查找数列中的最大值和最小值(使用指针从而避免使用返回值)

2 思路

使用指针从而避免使用返回值

在主函数中定义最大值 max 和最小值 min,将 max 和 min 的地址传递给函数处理,计算结果直接放到主函数中定义的 max 和 min 的地址中

这样做代码执行高效并且思路清晰

3 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h> 
#include <stdlib.h>
#define N 10

/**
函数:max_min()
功能:找出数列中的最大值和最小值
描述:使用指针查找数列中的最大值和最小值
**/

void max_min(int *a, int *max, int *min) {
*max = *a; // 将数组下标为 0 的数字初始化给max
*min = *a; // 将数组下标为 0 的数字初始化给min
for (int i = 0; i < N; ++i) {
if(*max < *(a+i)) // 将大于max的值赋值给max
*max = *(a+i);
}

for (int i = 0; i < N; ++i) {
if(*min > *(a+i)) // 将小于min的值赋值给min
*min = *(a+i);
}
}

int main(int argc, char const *argv[]) {
int i, a[N];
int max, min;
printf("请输入 10 个数字:\n");
for (int i = 0; i < N; ++i) {
scanf("%d", a+i);
// scanf("%d", &a[i]);
}
max_min(a, &max, &min);
printf("输入的 10 个数字为: ");
for (int i = 0; i < N; ++i) {
printf("%d ", *(a+i));
}
printf("\n最大值为:%d\n", max);
printf("\n最小值为:%d\n", min);
}

示例结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ gcc ex014.c -o demo
$ ./demo
请输入 10 个数字:
3
2
1
10
9
8
7
6
5
4
输入的 10 个数字为: 3 2 1 10 9 8 7 6 5 4
最大值为:10

最小值为:1

最后

在这里给大家准备了几百本的互联网技术类书籍,需要的来下载吧!点击获取
有任何问题,欢迎随时交流!!!

------ 全文结束------