本题要求实现一个函数,可计算一维数组中最大与最小值的差。数据在主函数中读入。 函数接口定义: int max_min(int a[],int n) ;
时间: 2023-06-13 12:07:54 浏览: 346
实现如下:
```c
#include <stdio.h>
int max_min(int a[], int n) {
int max = a[0], min = a[0];
for (int i = 1; i < n; ++i) {
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
return max - min;
}
int main() {
int n;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; ++i) {
scanf("%d", &a[i]);
}
printf("%d\n", max_min(a, n));
return 0;
}
```
其中,`max` 和 `min` 分别记录数组中的最大值和最小值,遍历数组时不断更新它们的值,最终返回它们的差。
相关问题
032:编写函数,求出一个二维数组中各列最小值中最大的数及其下标。在main函数中验证。 要求:二维数组的行数、列数、数组元素均在 main函数中由键密输入。 (M)
以下是代码实现:
```c
#include <stdio.h>
void find_minmax(int arr[][100], int m, int n, int *max_val, int *max_idx) {
int min[n];
for (int j = 0; j < n; j++) {
min[j] = arr[0][j];
for (int i = 1; i < m; i++) {
if (arr[i][j] < min[j]) {
min[j] = arr[i][j];
}
}
if (j == 0 || min[j] > *max_val) {
*max_val = min[j];
*max_idx = j;
}
}
}
int main() {
int arr[100][100];
int m, n;
printf("请输入二维数组的行数和列数:");
scanf("%d%d", &m, &n);
printf("请输入二维数组的元素:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &arr[i][j]);
}
}
int max_val, max_idx;
find_minmax(arr, m, n, &max_val, &max_idx);
printf("各列最小值中最大的数是 %d,下标是 %d\n", max_val, max_idx);
return 0;
}
```
在函数 `find_minmax` 中,我们遍历每一列,找到该列中的最小值。如果该列的最小值比之前的最大值还大,就更新最大值和对应的下标。最后,函数返回最大值和对应的下标。
在 `main` 函数中,我们先读入二维数组的行数和列数,然后输入二维数组的元素。最后,调用 `find_minmax` 函数,输出结果。
一维实型数组 编写函数计算一维实型数组前n个元素的最大值、最小值和平均值。数组、n、最大值、最小值和平均值均作为函数形参,函数无返回值;在主函数中输入数据,调用函数得到结果。(要求用指针方法实现) 相关知识 5.指针作为函数参数(与数组名作为函数参数进行比较),函数返回指针值,函数指针 c语言
好的,这是一个关于一维实型数组的问题,下面是代码示例:
```c
#include <stdio.h>
void calculate(float *arr, int n, float *max, float *min, float *avg) {
// 初始化最大值、最小值和平均值
*max = arr[0];
*min = arr[0];
*avg = 0.0f;
// 计算最大值、最小值和平均值
for (int i = 0; i < n; i++) {
if (arr[i] > *max) {
*max = arr[i];
}
if (arr[i] < *min) {
*min = arr[i];
}
*avg += arr[i];
}
*avg /= n;
}
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
float arr[n];
printf("请输入数组元素:");
for (int i = 0; i < n; i++) {
scanf("%f", &arr[i]);
}
float max, min, avg;
calculate(arr, n, &max, &min, &avg);
printf("最大值:%.2f\n最小值:%.2f\n平均值:%.2f\n", max, min, avg);
return 0;
}
```
在上面的代码中,我们定义了一个名为 `calculate` 的函数,用于计算一维实型数组前 `n` 个元素的最大值、最小值和平均值,这里使用了指针作为函数参数,以实现对最大值、最小值和平均值的传递和修改。
在 `main` 函数中,我们先是读入了数组长度 `n` 和数组元素,然后调用 `calculate` 函数来计算最大值、最小值和平均值,最后输出结果。
阅读全文