能帮忙看看吗?谢谢。

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

companions @ 2024-01-21 14:48:09

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

by KFZX_xiaohao @ 2024-01-21 14:52:48

@companions

你可以把空间理解为格子

int a[11];

数组越界,把数组开到 19

for(n=1;n<11;n++)
    {
        cin>>a[n];  
    }

这段代码其实最多在用下标为 11 的格子,但是你创建的数组的下标是:

0 1 2 3 4 5 6 7 8 9 10

11 表示 11 个格子,而不是下标。


by Eternity_Yoke @ 2024-01-21 15:31:22

请把 j 定义在全局或者给它初始化 j=0 @companions


by Eternity_Yoke @ 2024-01-21 15:33:52

@KFZX_xiaohao 一共 10 个数据 没越界呀


by yanziqin @ 2024-01-21 16:51:28

@companions 第6行要改为“int n=0,i,j=0"就可以过了


by companions @ 2024-01-21 17:56:52

@yanziqin 谢谢。


by companions @ 2024-01-21 17:57:45

@Eternity_Yoke 谢谢。


by companions @ 2024-01-21 17:58:47

@KFZX_x @KFZX_xiaohao 谢谢。


by KFZX_xiaohao @ 2024-01-21 18:00:04

@Eternity_Yoke 对不起,这人的马蜂的确有点小众,看错了/bx


by study_Zzz @ 2024-01-29 19:27:54

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

by HPT0303 @ 2024-02-23 20:21:58

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[11],s=0;
    /*a数组中前10个是10个苹果到地面的高度 
    第11个是陶陶把手伸直的时候能够达到的最大高度*/
    for(int i=0;i<11;i++)cin>>a[i];
    a[10]+=30;
    for(int i=0;i<10;i++)if(a[i]<=a[10])s++;
    cout<<s;
    return 0;
}

想清楚为什么


| 下一页