PTA要求编写函数求三个数的最大值和最小值,并在主函数中调用它们
时间: 2024-02-20 10:57:30 浏览: 33
好的,我可以帮你编写这个程序。下面是代码:
```c++
#include <iostream>
using namespace std;
void findMaxMin(int a, int b, int c, int& maxVal, int& minVal) {
maxVal = a;
minVal = a;
if (b > maxVal) {
maxVal = b;
}
if (c > maxVal) {
maxVal = c;
}
if (b < minVal) {
minVal = b;
}
if (c < minVal) {
minVal = c;
}
}
int main() {
int a, b, c, maxVal, minVal;
cout << "请输入三个整数:";
cin >> a >> b >> c;
findMaxMin(a, b, c, maxVal, minVal);
cout << "最大值为:" << maxVal << endl;
cout << "最小值为:" << minVal << endl;
return 0;
}
```
这个程序定义了一个名为`findMaxMin`的函数,它接受三个整数作为输入参数,以及两个整数的引用作为输出参数,分别存储最大值和最小值。主函数中调用了这个函数,并输出了结果。
相关问题
pta交换最大值和最小值
这是一道算法题,假设给定的数组为arr,我们需要找到其中的最大值和最小值,并将它们的位置交换。
可以在一次遍历中同时找到最大值和最小值,然后用一个临时变量来交换它们的位置。
具体的代码实现如下:
```c++
#include <iostream>
using namespace std;
const int MAXN = 10010;
int arr[MAXN];
int main() {
int n;
cin >> n;
int maxIndex = 0, minIndex = 0;
for (int i = 0; i < n; i++) {
cin >> arr[i];
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
swap(arr[maxIndex], arr[minIndex]);
for (int i = 0; i < n; i++) {
cout << arr[i];
if (i != n - 1) {
cout << " ";
}
}
return 0;
}
```
这个程序可以接受一个整数n,表示数组的长度,然后接受n个整数作为数组的元素,最后输出交换后的数组。
pta C语言用函数求两个整数的最大公约数和最小公倍数
好的,我可以帮您解决这个问题。最大公约数可以通过辗转相减法或者辗转相除法求得,最小公倍数可以通过两数之积除以它们的最大公约数得到。以下是使用辗转相减法和辗转相除法求最大公约数和最小公倍数的函数:
```c
#include <stdio.h>
int gcd(int a, int b) {
while (a != b) {
if (a > b) {
a = a - b;
} else {
b = b - a;
}
}
return a;
}
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int a, b;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
printf("它们的最大公约数为:%d\n", gcd(a, b));
printf("它们的最小公倍数为:%d", lcm(a, b));
return 0;
}
```
希望这能够解决您的问题。