我构建了一个程序,接受来自用户的两个输入,使用循环内的数组,它被传递给一个类中的一个函数,该类将显示两个数字。
问题是当用户输入一个数字并且它是1.程序不断要求用户输入一个数字,当输入2时,程序询问另一个数字并结束,但例如你输入了2和3 ...... 。然后输出2和4(所以3 + 1),最后一个数字加1。这是代码:
main.cpp中:
#include <iostream>
#include "newclass.h"
using namespace std;
int main()
{
int array_variable_main[2];
for(int counter = 1; counter <= 2; counter=counter+1)
{
cout << "Enter a Number: " << endl;
cin >> array_variable_main[counter];
}
newclass sum_object;
sum_object.loop_function(array_variable_main, 2);
return 0;
}
newclass.cpp:
#include "newclass.h"
#include <iostream>
using namespace std;
newclass::newclass()
{
}
void newclass::loop_function(int array_variable[], int arraysize)
{
cout << "The numbers that are stored in the array are: " << endl;
for(int counter = 1; counter <= arraysize; counter = counter+1)
{
cout << array_variable[counter] << endl;
}
}
newclass.h:
#ifndef NEWCLASS_H
#define NEWCLASS_H
class newclass
{
public:
newclass();
void loop_function(int array_variable[], int arraysize);
};
#endif // NEWCLASS_H
答案 0 :(得分:2)
你必须记住数组索引从零到大小为1。所以对于你的阵列来说,它是零和一。除此之外的任何事情都会导致未定义的行为。未定义的行为无法轻易预测,因此您的程序结果可能是任何结果。
答案 1 :(得分:2)
在C和C ++中,数组索引通常从0开始,所以
int array_variable_main[2];
for(int counter = 1; counter <= 2; counter=counter+1)
{
cout << "Enter a Number: " << endl;
cin >> array_variable_main[counter];
}
将在数组外部访问
改为
int array_variable_main[2];
for(int counter = 0; counter < 2; ++counter)
{
cout << "Enter a Number: " << endl;
cin >> array_variable_main[counter];
}