为啥加上i=9就对了

P1046 [NOIP2005 普及组] 陶陶摘苹果

zcc2003 @ 2021-10-29 16:16:24

using namespace std;
int main()
{
    int a[10],i=0;
    while(i<=9)
    {
        cin>>a[i];
        i++;
    }
    int b,n=0;
    //i=9;
    cin>>b;
    while(i>=0)
    {
        if(a[i]<=b+30)n++;
        i--;
    }
    cout<<n;
    return 0;
}

加i=9前在本地可以运行,但提交后是零分,加上后(当然,不带//)不知为何就没问题了,本地用的是visual c++6


by wweiyi @ 2021-10-29 16:20:42

因为 while 的判断中是小于等于9,也就是说,只要你的数字小于等于9它就会继续循环,当你的 i 加到10的时候,判断这个 <=9 的条件不成立,所以才退出循环

当你下一次用 i 的时候,它已经变成10了


by zcc2003 @ 2021-10-29 19:32:43

原来如此,非常感谢


by Qingying_F_Chana @ 2021-11-06 10:12:11

#include<iostream>
using namespace std;
int a[1005];
int main(){
    int sum=0,n;
    for(int i=0;i<10;i++)
        cin>>a[i];
    cin>>n;
    n+=30;
    for(int i=0;i<10;i++)
        if(a[i]<=n)
            sum++;
    cout<<sum;
    return 0;
}

|