#include <iostream>
using namespace std;
int main()
{
const int MAXNUM = 10; // this code creates 10 variables in fmax
int fmax[MAXNUM], maximum, i, l; // initialize fmax that contains 10 variables , maximum, i for the loop, and l for storing the location
cout << "enter 10 numbers: ";
maximum = fmax[0]; // this sets the maximum to 0
for(i = 0; i < MAXNUM; i++) // this is the code for finding the maximum numbers
{
cin >> fmax[i];
if(fmax[i] > maximum){
maximum = fmax[i];
l = i;
}
else{
maximum = maximum;
l = l;
}
}
cout << "the maximum number: " << maximum << endl; // outputs the results
cout << "the location of the number: " << l << endl;
return 0;
}
我的练习有问题 问题是程序的输出。 它没有显示 最大数量和位置 它总是这样显示
最大数量是:1987579782
号码的位置是:26355764
我需要显示输入的最大数量及其下标我不知道如何 我的代码有问题
这是运动问题
a.write,编译并运行一个c ++程序,将10个整数输入到一个名为fmax的数组中,并确定程序中输入的最大值应该只包含一个循环,最大值应确定为数组元素值正在输入(提示设置最大值等于第一个数组元素,应该在用于输入剩余数组值的循环之前输入。)并跟踪数组中的最大元素和最大值的索引号。
答案 0 :(得分:4)
您需要在使用之前初始化fmax[MAXNUM]
数组。简单地声明一个变量并不能保证它是0.目前fmax[0]
的值可以是int
范围内的任何值,因为你没有将它初始化为一个值。
您还需要将l
变量初始化为0(这就是您获取错误位置的原因)
试试这个:
#include <iostream>
using namespace std;
int main()
{
const int MAXNUM = 10; // this code creates 10 variables in fmax
int fmax[MAXNUM], maxinum, i, l = 0; // initialize fmax that contains 10 variables , maxinum, i for the loop, and l for storing the location
for(i = 0; i < MAXNUM; ++i)
{
fmax[i] = 0;
}
cout << "enter 10 numbers: ";
maxinum = fmax[0]; // this sets the maxinum to 0
for(i = 0; i < MAXNUM; i++) // this is the code for finding the maxinum numbers
{
cin >> fmax[i];
if(fmax[i] > maxinum){
maxinum = fmax[i];
l = i;
}
else{
maxinum = maxinum;
l = l;
}
}
cout << "the maxinum number: " << maxinum << endl; // outputs the results
cout << "the location of the number: " << l << endl;
return 0;
}
编辑:由于要求代码只包含一个循环,因此您可能希望更改执行此操作的方式。我上面提供的例子也不是一个非常优雅的方法。我就是这样做的(不使用任何可能令人困惑的C ++标准库函数)
#include <iostream>
int main()
{
std::cout << "Enter 10 numbers: ";
const int MAXNUM = 10;
int fmax[MAXNUM] = {0}; // this is an easy way to initialize the array elements to zero
int maxNum = 0, location;
for(int i = 0; i < MAXNUM; i++) {
std::cin >> fmax[i];
if(fmax[i] > maxNum) {
maxNum = fmax[i];
location = i;
}
}
std::cout << "The maximum number is " << maxNum << std::endl;
std::cout << "The location of the number is " << location << std::endl;
return 0;
}
确保您了解其工作原理 - 如果您有任何疑问,请与我联系。
答案 1 :(得分:1)
您正在使用垃圾值初始化maximum
:
maxinum = fmax[0]; // this sets the maxinum to 0
由于您尚未输入任何元素。
我建议您使用std::max_element
库中的内置函数algorithm
:它将返回指向max元素的指针,因此,您可以输出max元素的位置及其值:
#include <algorithm>
// Your code
// You should enter the whole array
auto max_element = std::max_element(std::begin(fmax), std::end(fmax));
std::cout << "Position: " << (max_element - std::begin(fmax)) << std::end;
std::cout << "Value: " << *max_element << std::endl;
答案 2 :(得分:1)
默认情况下,C ++中的局部变量(非类)未初始化为零。您的问题是,您使用maxinum
的值初始化fmax[0]
,其开头是垃圾。如果你从不输入任何更大的数字,I
的值永远不会改变,也是垃圾。您需要将这些变量显式初始化为零:
int fmax[MAXNUM] = { 0 };
into maxinum = 0, I = 0
答案 3 :(得分:0)
maxinum = fmax[0]; // this sets the maxinum to 0
由于您未将maxinum
设置为fmax[0]
,因此未将0
设置为0。
你可以这样做:
#include <iostream>
using namespace std;
int main()
{
const int MAXNUM = 10; // this code creates 10 variables in fmax
int fmax[MAXNUM], maxinum, i, l; // initialize fmax that contains 10 variables , maxinum, i for the loop, and l for storing the location
cout << "enter 10 numbers: ";
for(i = 0; i < MAXNUM; i++) // this is the code for finding the maxinum numbers
{
cin >> fmax[i];
if(i==0)
maxinum = fmax[i]; //....... this will do what you are trying to achieve
if(fmax[i] > maxinum){
maxinum = fmax[i];
l = i;
} // the else block you wrote is not necessary :)
}
cout << "the maxinum number: " << maxinum << endl; // outputs the results
cout << "the location of the number: " << l << endl;
return 0;
}