0

我正在尝试编写一个代码来列出汽油里程,到目前为止它可以工作。问题是它没有按应有的方式工作。下面的代码要求输入,然后显示所述输入的列表以及计算的 MPG。

#include<iostream>
using namespace std;
//function prototype
void CalcAverage (int arr1[], float arr2[], int size);
//global variables
int mil [3];
float gal [3];
float mpg [3];
//main program
int main()
{
char month [7];
int day [3];
cout << "Please enter the starting month" << endl;
cin >> month;

cout << "Please enter starting day entry 1" << endl;
cin >> day [0];
cout << "entry 2" << endl;
cin >> day [1];
cout << "entry 3" << endl;
cin >> day [2];
cout << "entry 4" << endl;
cin >> day [3];

cout << "Please enter gallons entry 1" << endl;
cin >> gal [0];
cout << "entry 2" << endl;
cin >> gal [1];
cout << "entry 3" << endl;
cin >> gal [2];
cout << "entry 4" << endl;
cin >> gal [3];

cout << "Please enter miles entry 1" << endl;
cin >> mil [0];
cout << "entry 2" << endl;
cin >> mil [1];
cout << "entry 3" << endl;
cin >> mil [2];
cout << "entry 4" << endl;
cin >> mil [3];

CalcAverage (mil,gal,4);

cout << "Week of" << "\t\tGallons" << "\t\tMiles" << "\t\tMPG" << endl;
cout << "_ _ _ _ _ _ _" << "\t_ _ _ _ _" << "\t_ _ _ _"  << "_ _ _ _" << endl;
cout << month <<  " " << day [0] << "\t" << gal [0] << "\t\t" << mil [0] << "\t\t" << mpg [0] <<     endl;
cout << month <<  " " << day [1] << "\t" << gal [1] << "\t\t" << mil [1] << "\t\t" << mpg [1] <<     endl;
cout << month <<  " " << day [2] << "\t" << gal [2] << "\t\t" << mil [2] << "\t\t" << mpg [2] <<     endl;
cout << month <<  " " << day [3] << "\t" << gal [3] << "\t\t" << mil [3] << "\t\t" << mpg [3] <<     endl;

system("PAUSE");

}
//function definition
void CalcAverage (int arr1[], float arr2[], int size)
{
//statements
mpg [0] = mil [0] / gal [0];
mpg [1] = mil [1] / gal [1];
mpg [2] = mil [2] / gal [2];
mpg [3] = mil [3] / gal [3];

}

该代码有效,我没有收到任何错误。但是,当代码显示输出时,一些结果会切换或混乱,或完全随机(我的 3rd gal 输入变成我的 1st mil 输入等)是什么导致了这个问题,我该如何解决?

4

4 回答 4

2

数组的大小都是 3,您尝试将 4 个值填充到每个数组中。将它们的大小增加一:

int mil [4];
float gal [4];
float mpg [4];

...

int day [4];
于 2013-10-24T02:43:15.657 回答
2

请注意,当您声明一个类似的数组时mil[3],该数组包含mil[0]mil[1]和的元素mil[2]。因此使用无效mil[3]。将您的数组声明更改为:

int mil [4];
float gal [4];
float mpg [4];

也是当天使用[4]而不是[3]

于 2013-10-24T02:43:46.010 回答
1

改变这个:

int mil [4];
float gal [4];
float mpg [4];

int day [4];
于 2013-10-24T02:44:27.507 回答
1

你做这样的事情:

cin >> day [3];

但你只有:

int day [3];

您正在覆盖数组的末尾并进入下一个。您需要将其更改为int day[4],因为day[3]它是第四个元素,而不是第三个。

于 2013-10-24T02:42:40.273 回答