用C语言写一个取最大值最小值的算法
时间: 2024-05-16 09:12:18 浏览: 78
好的,以下是一个用C语言写的取最大值最小值的算法:
```c
#include <stdio.h>
int main() {
int arr[] = {5, 8, 3, 1, 9, 6, 2};
int n = sizeof(arr) / sizeof(int);
int max = arr[0], min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
printf("最大值为:%d,最小值为:%d\n", max, min);
return 0;
}
```
希望能帮助到您。现在我可以回答您的下一个问题。
相关问题
使用C语言写一个正弦曲线中已知最大值、最小值和Y轴的值的求X轴值得算法
使用C语言来计算正弦曲线在已知最大值、最小值和Y轴的值的点上对应的X轴坐标值,可以首先建立一个基本的正弦函数,然后用循环计算每一个X值,使其满足条件:当该值对应Y轴上的值为已知最小值时,求得此时的X轴坐标。这个过程可以递归地进行,因为最小值总是相对于前一个点的最小值来定义的。
以下是一个基本的C语言代码实现:
```c
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
// 定义正弦函数
double sine(double x) {
return sin(x * PI / 180); // 将角度转换为弧度
}
// 递归函数,用于计算X轴坐标
double calculate_x(double min_value, double max_value, double y_value) {
if (y_value == min_value) { // 如果当前Y值等于最小值,返回对应的X值
return (max_value - min_value) / (2 * PI) * (2 * PI); // 使用2PI是因为y值等于min_value对应角度有无限个
} else { // 否则递归到下一个值
return calculate_x(y_value - min_value, max_value, y_value);
}
}
int main() {
double x = 0; // 初始X值为0
double min_value = -180; // 最小值为-180度
double max_value = 180; // 最大值为180度
double y = 0; // Y轴值为0,可以根据需要修改这个值
while (y <= max_value) { // 当Y值小于等于最大值时,继续循环
x = calculate_x(min_value, max_value, y); // 计算对应的X值
printf("X = %f\n", x); // 输出X值
y += 0.1; // Y值增加0.1,以便在下一次循环中查找下一个可能的点
}
return 0;
}
```
这个程序将打印出正弦曲线中所有满足条件的点的X坐标。需要注意的是,由于计算机的浮点数精度问题,可能会有一些细微的差别。同时,你可能需要根据实际情况调整Y轴的值或范围。另外,此代码只考虑了从最小值到最大值的递增计算,如果需要从最大值到最小值的递减计算,可以改变`calculate_x`函数的返回方式。
使用循环经典算法,使用分治思想 完成数组当中求最大值最小值用c语言代码怎么写
在C语言中,使用循环经典算法(如遍历数组)结合分治思想来寻找数组中的最大值和最小值,通常涉及到两层循环:一层用于遍历数组,另一层用于比较当前元素和已知的最大值和最小值。这里提供一个简单的示例:
```c
#include <stdio.h>
// 分别初始化数组的最大值和最小值为数组的第一个元素
int findMax(int arr[], int n) {
if (n == 1)
return arr[0];
else
return (arr[0] > arr[1]) ? arr[0] : arr[1]; // 比较第一个和第二个元素
}
// 更新最大值,递归处理剩余部分
int maxRec(int arr[], int low, int high) {
if (low == high) { // 当只有一个元素时返回该元素
return arr[low];
} else {
int mid = (low + high) / 2;
int leftMax = maxRec(arr, low, mid); // 递归求左半部分的最大值
int rightMax = maxRec(arr, mid + 1, high); // 递归求右半部分的最大值
return (leftMax > rightMax) ? leftMax : rightMax; // 返回左右两部分的最大值
}
}
int findMin(int arr[], int n) {
// 类似于findMax,将第一个元素作为初始最小值
if (n == 1)
return arr[0];
else
return (arr[0] < arr[1]) ? arr[0] : arr[1]; // 比较第一个和第二个元素
// 更新最小值,递归处理剩余部分
int minRec(int arr[], int low, int high) {
// ...此处与maxRec函数类似,只是判断条件相反...
}
return minRec(arr, 0, n - 1);
}
int main() {
int arr[] = {5, 3, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int maxVal = maxRec(arr, 0, n - 1);
int minVal = findMin(arr, n);
printf("Array maximum value: %d\n", maxVal);
printf("Array minimum value: %d\n", minVal);
return 0;
}
```
阅读全文