gpt4 book ai didi

c++ - 循环在 C++ 中再次开始

转载 作者:行者123 更新时间:2023-11-30 00:48:53 25 4
gpt4 key购买 nike

#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 的值,那么循环似乎工作正常。这里有什么问题?

最佳答案

int P[9]

定义一个大小为9的数组,元素为P[0]到P[8]

因为你的循环被编码为 i < 10 ,最后输入的元素是 P[9] ,它不是数组的一部分。这会导致未定义的行为,因此任何事情都可能发生。在这种情况下,编译器很可能将变量 i直接在内存中的数组后面,因此您将最后一个输入值写入 i而不是数组。不能保证每个平台和编译器都会发生这种情况,但这是您选择的编译器和平台的特定问题。

要么将您的数组定义更改为

int P[10]

得到10个元素的数组

或将循环条件更改为

i < 9;

得到一个运行 9 次的循环。

关于c++ - 循环在 C++ 中再次开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com