那位大佬能解释下为什么b值读不进来么?

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

fengfenglong @ 2022-09-02 11:44:20

#include <iomanip>
#include <stdio.h>
#include <bits/stdc++.h>
#include <math.h>
#include <string>

using namespace std;
//#define PI 3.1415926
int main()
{
int a[10];
int b,i=0,sum=0;
while(cin>>a[i])
{
    i++;
}
cin>>b;
cout<<b;
for(int j=0;j<10;j++)
{
    if(((30+b)>=a[j]))
    {
    sum+=1;
    cout<<sum;
    }
}
cout<<sum;
return 0;
}

b值代表了陶陶的身高,我输出b显示为0


by Adchory @ 2022-09-02 11:47:06

@fengfenglong 题目说了,第一行只输入十个数。不用 while


by Adchory @ 2022-09-02 11:48:15

@fengfenglong 你最后输入的 b 被存进 a 数组里面了。


by fengfenglong @ 2022-09-02 12:17:13

@Reimu_Hakurei 那我应该怎样改才能让while正确呢? 一共输入10个苹果高度我把数组长度设为了10为什么会把陶陶的身高读进来呢?需要把苹果高度的数组改成a[9]么,但如果改了又该怎么理解苹果高度数组呢?


by Martin8521 @ 2022-09-02 12:33:44

@fengfenglong 用for循环不就行了么


by Martin8521 @ 2022-09-02 12:35:05

你写的会把b读进不存在的a[10]


by Martin8521 @ 2022-09-02 12:35:45

没报RE已经是万幸了


by leoqing @ 2022-09-02 12:39:32

@fengfenglong 宁怕是个萌新吧


by liangbowen @ 2022-09-02 13:47:53

@leoqing 说实话萌新没啥的 他的发帖态度比其他沙雕帖子都好多了


by CH_mengxiang @ 2022-09-02 14:00:27

while循环的终止条件是输入结束,改数组范围没用,而且容易因为越界访问而runtime error


by fengfenglong @ 2022-09-02 15:30:06

那用while循环的做法是无法做到同时把数组和陶陶的身高读进来了么?因为我看到有些别的题目的题解一开始读数据的时候是用while而我用的for导致我有时候分不清什么时候该用while什么时候该用for,平时我是喜欢用for多一些。


| 下一页