如何解决如何在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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。