蒟蒻0分求助QAQ

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

I_AK_IOI_EVERY_DAY @ 2023-09-29 22:18:49

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[10],b;
    int num;
    int x=b+30;
    cin>>a[10]>>b;
    for(int i=1;i<=10;i++){
        if(a[i]<=b){
            num++;
        }
        else if(a[i]>b){
            if(a[i]<=x){
                num++;
            }
        }
    }
    cout<<num;
    return 0;
}

by Indrecht @ 2023-09-29 22:25:52

cin >> a[10];

光凭这点代码只能读入 a_{10} 一个数据。应改为如下代码:

for(int i=1;i<=10;i++) cin>>a[i];

BTW, 局部变量不设置初值的话比较玄学,建议将

int num;

改为

int num=0;

by Indrecht @ 2023-09-29 22:26:54

而且,\text{x} 的赋值应在输入 b 之后。


by I_AK_IOI_EVERY_DAY @ 2023-09-29 22:27:37

感谢感谢


by Indrecht @ 2023-09-29 22:31:28

最后一点,数组 \text{a} 若从下标 1 开始计算,应该开 \text{n} + 1 或更大 (\text{n} 为数组长度)而不是 \text{n}(具体原因不太了解 qwq)。

此代码中,

int a[10];

改为

int a[11];//或更大,均可

by Indrecht @ 2023-09-29 22:32:32

@I_AK_IOI_EVERY_DAY


by I_AK_IOI_EVERY_DAY @ 2023-09-29 22:36:36

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[11],b;
    int num=0;
    cin>>b;
    int x=b+30;
    for(int j=1;j<=10;j++) cin>>a[j];
    for(int i=1;i<=10;i++){
        if(a[i]<=b){
            num++;
        }
        else if(a[i]>b){
            if(a[i]<=x){
                num++;
            }
        }
    }
    cout<<num;
    return 0;
}

改了之后只A一个点a?


by Indrecht @ 2023-09-29 22:38:23

@I_AK_IOI_EVERY_DAY 先读入数组 \text{a} 再读入 \text{b}

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[11],b;
    int num=0;
    for(int i=1;i<=10;i++)cin>>a[i];
    cin>>b;
    int x=b+30;
    for(int i=1;i<=10;i++){
        if(a[i]<=b){
            num++;
        }
        else if(a[i]>b){
            if(a[i]<=x){
                num++;
            }
        }
    }
    cout<<num;
    return 0;
}

by ArcherHavetoLearnWhk @ 2023-09-29 22:40:20

@I_AK_IOI_EVERY_DAY 如果觉得有用就关注我吧谢谢!


by I_AK_IOI_EVERY_DAY @ 2023-09-29 22:40:58

已经A了,谢谢!


by ArcherHavetoLearnWhk @ 2023-09-29 22:44:15

@I_AK_IOI_EVERY_DAY 恭喜!谢谢另一位大佬!这个代码里面有更多建议供你参考。

#include<bits/stdc++.h>
using namespace std;
int a[15],b,num;//现在不用设置=0了
int main(){
    for(int i=1;i<=10;j++)cin>>a[j];//每个循环里的变量都是局部变量,出了循环就没用了不会冲突
    cin>>b;
    b=b+30;//一开始就站在凳子上结果也不变化
    for(int i=1;i<=10;i++){
        if(a[i]<=b)num++;//可以这样压行
    }
    cout<<num;
    return 0;
}

|