为什么进程 return -1?
why does the process return -1?
运行以下代码:
int main()
{
double hour[3];
double charge[3];
double sum_hour = 0;
double sum_charge = 0;
for (int i = 1; i <= 3; i++)
{
cout<<"Enter the hours for car No. "<<i<<": ";
cin>>hour [i];
if (hour [i] <= 3.0)
{charge [i] = 2.00;}
if (hour [i] > 3.0 && hour [i] < 24)
{charge [i] = 2.00 + (ceil(charge [i] -3))*0.5;}
if (hour [i] == 24.0)
{charge [i] = 10.00;}
sum_hour = sum_hour + hour [i];
sum_charge = sum_charge + charge [i];
}
cout<<"Car"<<setw(10)<<"Hours"<<setw(10)<<"Charge"<<endl;
}
我在 for 循环 执行后收到以下消息并且代码没有 运行 cout循环后:
Process returned -1 (0xFFFFFFFF) execution time...
在循环 for (int i = 1; i <= 3; i++)
中,数组索引应该从 0
开始。将循环更改为:
for (int i = 0; i < 3; i++)
当 i is 3
这里 cin>>hour [i];
时,您的数组索引超出范围,这是未定义的行为。
这里要补充,不要做浮点比较:
if (hour [i] <= 3.0)//
尽管这与您的原始问题无关,请阅读 Why doesn't my floating-point comparison work?
运行以下代码:
int main()
{
double hour[3];
double charge[3];
double sum_hour = 0;
double sum_charge = 0;
for (int i = 1; i <= 3; i++)
{
cout<<"Enter the hours for car No. "<<i<<": ";
cin>>hour [i];
if (hour [i] <= 3.0)
{charge [i] = 2.00;}
if (hour [i] > 3.0 && hour [i] < 24)
{charge [i] = 2.00 + (ceil(charge [i] -3))*0.5;}
if (hour [i] == 24.0)
{charge [i] = 10.00;}
sum_hour = sum_hour + hour [i];
sum_charge = sum_charge + charge [i];
}
cout<<"Car"<<setw(10)<<"Hours"<<setw(10)<<"Charge"<<endl;
}
我在 for 循环 执行后收到以下消息并且代码没有 运行 cout循环后:
Process returned -1 (0xFFFFFFFF) execution time...
在循环 for (int i = 1; i <= 3; i++)
中,数组索引应该从 0
开始。将循环更改为:
for (int i = 0; i < 3; i++)
当 i is 3
这里 cin>>hour [i];
时,您的数组索引超出范围,这是未定义的行为。
这里要补充,不要做浮点比较:
if (hour [i] <= 3.0)//
尽管这与您的原始问题无关,请阅读 Why doesn't my floating-point comparison work?