如何在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;
  }

这是代码的结果

输入以空格分隔的五(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;
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...