如何在 C++ 中使用指针获取最小和最大数
How to get the minimum and maxium number using pointers in C++
我试图在 C++ 中使用指针查找最小值和最大值,但在我从视频共享网站获得的这段代码中给出了错误的值。当我输入 1 2 3 4 5 6 时,它的答案是最小值是 2,最大值是 2。
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int value[6], * maxi, * mini, a;
cout << "Enter six numbers with space: ";
for (int a = 0; a < 6; a++)
cin >> *(value + a);
maximum = value;
minimum = value;
for (i = 1; i < 6; i++)
{
if (*(value + i) > * maximum)
*maximum = *(value + i);
}
for (i = 0; i < 6; i++)
{
if (*(value + i) < *minimum)
*minimum = *(value+ i);
}
/* Print variable value with their memory address */
cout << "Integer with the Maximum value = " << *minimum << ", Address of integer = " << &maximum
<< endl;
cout << "Integer with the minimum value = " << *minimum << ", Address of integer = " << &minimum
<< endl;
return 0;
}
这是代码的结果
输入由 space 分隔的五 (6) 个数字:1 2 3 4 5 6
整数最大=2,整数地址=00AFF9F4
整数最小值=2,整数地址=00AFF9E8
你在这个循环中犯了一个错误
for (i = 1; i < 6; i++)
{
if (*(value + 1) > * maximum)
*maximum = *(value + i); <--- set max to the next value.
}
应该是
for (i = 1; i < 6; i++)
{
if (*(value + i) > * maximum)
maximum = value + i; // set max to the pointer.
}
完整代码如下:
#include <iostream>
#define N_VALUES 6
using namespace std;
int main()
{
int value[N_VALUES], *maximum, *minimum, i;
cout << "Enter six numbers with space: ";
for (i = 0; i < N_VALUES; i++) cin >> *(value + i);
maximum = value;
minimum = value;
for (i = 1; i < N_VALUES; i++) {
if (*(value + i) > (*maximum)) {
maximum = (value + i);
}
}
for (i = 1; i < N_VALUES; i++) {
if (*(value + i) < (*minimum)) {
minimum = (value+ i);
}
}
/* Print variable value with their memory address */
cout << "Integer with the Maximum value = " << *maximum << ", Address of integer = " << maximum << endl;
cout << "Integer with the minimum value = " << *minimum << ", Address of integer = " << minimum << endl;
return 0;
}
我试图在 C++ 中使用指针查找最小值和最大值,但在我从视频共享网站获得的这段代码中给出了错误的值。当我输入 1 2 3 4 5 6 时,它的答案是最小值是 2,最大值是 2。
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int value[6], * maxi, * mini, a;
cout << "Enter six numbers with space: ";
for (int a = 0; a < 6; a++)
cin >> *(value + a);
maximum = value;
minimum = value;
for (i = 1; i < 6; i++)
{
if (*(value + i) > * maximum)
*maximum = *(value + i);
}
for (i = 0; i < 6; i++)
{
if (*(value + i) < *minimum)
*minimum = *(value+ i);
}
/* Print variable value with their memory address */
cout << "Integer with the Maximum value = " << *minimum << ", Address of integer = " << &maximum
<< endl;
cout << "Integer with the minimum value = " << *minimum << ", Address of integer = " << &minimum
<< endl;
return 0;
}
这是代码的结果
输入由 space 分隔的五 (6) 个数字:1 2 3 4 5 6
整数最大=2,整数地址=00AFF9F4
整数最小值=2,整数地址=00AFF9E8
你在这个循环中犯了一个错误
for (i = 1; i < 6; i++)
{
if (*(value + 1) > * maximum)
*maximum = *(value + i); <--- set max to the next value.
}
应该是
for (i = 1; i < 6; i++)
{
if (*(value + i) > * maximum)
maximum = value + i; // set max to the pointer.
}
完整代码如下:
#include <iostream>
#define N_VALUES 6
using namespace std;
int main()
{
int value[N_VALUES], *maximum, *minimum, i;
cout << "Enter six numbers with space: ";
for (i = 0; i < N_VALUES; i++) cin >> *(value + i);
maximum = value;
minimum = value;
for (i = 1; i < N_VALUES; i++) {
if (*(value + i) > (*maximum)) {
maximum = (value + i);
}
}
for (i = 1; i < N_VALUES; i++) {
if (*(value + i) < (*minimum)) {
minimum = (value+ i);
}
}
/* Print variable value with their memory address */
cout << "Integer with the Maximum value = " << *maximum << ", Address of integer = " << maximum << endl;
cout << "Integer with the minimum value = " << *minimum << ", Address of integer = " << minimum << endl;
return 0;
}