用C语言写一个取最大值最小值的算法
时间: 2024-05-16 20:12:18 浏览: 11
好的,以下是一个用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语言写一个电机pid控制算法
以下是一个简单的电机PID控制算法的C语言代码示例:
```c
#include <stdio.h>
#define SAMPLE_TIME 0.1 // PID采样时间
#define MAX_OUTPUT 100 // 输出值最大值
#define MIN_OUTPUT -100 // 输出值最小值
float kp = 1.0; // 比例常数
float ki = 0.5; // 积分常数
float kd = 0.2; // 微分常数
float current_speed = 0; // 当前速度
float target_speed = 50; // 目标速度
float error = 0; // 误差值
float error_sum = 0; // 误差累计值
float error_diff = 0; // 误差变化值
float last_error = 0; // 上一次的误差值
float output = 0; // 控制输出值
void pid_control() {
// 计算误差值
error = target_speed - current_speed;
// 计算误差累计值
error_sum += error * SAMPLE_TIME;
// 计算误差变化值
error_diff = (error - last_error) / SAMPLE_TIME;
// 计算控制输出值
output = kp * error + ki * error_sum + kd * error_diff;
// 限制输出值在最大值和最小值之间
if (output > MAX_OUTPUT) {
output = MAX_OUTPUT;
} else if (output < MIN_OUTPUT) {
output = MIN_OUTPUT;
}
// 更新上一次的误差值
last_error = error;
}
int main() {
// 模拟电机运行过程
for (int i = 0; i < 100; i++) {
current_speed += (output / 10); // 简单模拟电机运行过程
pid_control(); // PID控制
printf("current_speed = %f, target_speed = %f, output = %f\n", current_speed, target_speed, output);
}
return 0;
}
```
以上代码仅供参考,实际使用时需要根据具体情况进行调整和优化。
用C语言写一个归一化算法
归一化算法是将一组数据映射到0到1的范围内。以下是一个用C语言实现的归一化算法:
```c
#include <stdio.h>
void normalize(double *arr, int size) {
double max = arr[0];
double min = arr[0];
int i;
// 找到数组中的最大值和最小值
for (i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
// 归一化数组中的每个元素
for (i = 0; i < size; i++) {
arr[i] = (arr[i] - min) / (max - min);
}
}
int main() {
double arr[] = {2.0, 4.0, 6.0, 8.0, 10.0};
int size = sizeof(arr) / sizeof(arr[0]);
int i;
printf("原始数组:");
for (i = 0; i < size; i++) {
printf("%.2f ", arr[i]);
}
normalize(arr, size);
printf("\n归一化数组:");
for (i = 0; i < size; i++) {
printf("%.2f ", arr[i]);
}
return 0;
}
```
这个归一化函数接受一个包含数据的数组和数组的大小作为输入。它首先找到数组中的最大值和最小值,然后用下面的公式将每个元素归一化:
```c
arr[i] = (arr[i] - min) / (max - min);
```
最后,函数返回归一化后的数组。在这个示例中,我们打印出原始数组和归一化数组来验证算法的正确性。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)