#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int P[9],temp=0,g; //temp for highest pancakes, g for person number
for(int i=0;i<10;i++)
{
cout<<"Enter the number of pancakes eaten by person "<<i+1<<" ";
cin>>P[i];
if(P[i]>temp)
{
temp=P[i];
g=i+1;
}
}
cout<<"Most pancakes were ate by person "<<g<<endl<<temp;
return 0;
}
问题是如果我为最后一个人输入的值小于10,则循环再次开始。 如果我输入P [9] <10,则循环再次运行。就像我输入0煎饼一样,下一个输出线是 - 输入人2吃的煎饼数量
但是如果我输入一个大于10的值,那么循环似乎没问题。问题是什么?
答案 0 :(得分:6)
int P[9]
定义大小为9的数组,元素为P [0]到P [8]
由于您的循环编码为i < 10
,因此输入的最后一个元素是P [9],它不是数组的一部分。这会导致未定义的行为,因此可能会发生任何事情。在这种情况下,编译器很可能将变量i
直接放在内存中的数组后面,因此您将最后一个输入值写入i
而不是数组。每个平台和编译器都不能保证这一点,但这是您选择的编译器和平台的特定怪癖。
将数组定义更改为
int P[10]
获取10个元素数组
或将您的循环条件更改为
i < 9;
得到一个循环,运行9次。