标题:关于定义数组在一个循环外导致数据出错
只看楼主
小星在北方
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-16
结帖率:66.67%
已结贴  问题点数:15 回复次数:3 
关于定义数组在一个循环外导致数据出错
程序代码:
#include "iostream"
using namespace std;
int main ()
{
    int acount[10005],sum,N,i,L,M,num1,num2,j;
    cin >> N;
    while(N--){
        acount[10005] = {0},sum=0;
        cin >>L>> M;//L 代表马路的长度,M 代表区域的数目
        for(i=0; i<M; i++){
            cin >>num1>>num2;//num1,num2表示起始、终点
            for(j=num1; j<=num2; j++)
              acount[j]++;  
        } 
        for(i=0; i<=L; i++)
        if(acount[i]!=0) sum++;
        cout << L+1-sum << endl;
    }
    return 0;
}
这个我把数组定义在外面导致答案错了,下面这个我把数组定义在循环里面,答案就对了
程序代码:
#include "iostream"
using namespace std;
int main ()
{
    int N,i,L,M,num1,num2,j;
    cin >> N;
    while(N--){
        int acount[10005] = {0},sum=0;
        cin >>L>> M;//L 代表马路的长度,M 代表区域的数目
        for(i=0; i<M; i++){
            cin >>num1>>num2;//num1,num2表示起始、终点
            for(j=num1; j<=num2; j++)
              acount[j]++;  
        } 
        for(i=0; i<=L; i++)
        if(acount[i]!=0) sum++;
        cout << L+1-sum << endl;
    }
    return 0;
}

Expected                              |    Yours
15
                                  |    15
964
                                  |    332
58
                                  |    19
75
                                  |    13
12
                                  |    7
468
                                  |    7
1699
                                  |    7
62
                                  |    7
390
                                  |    7
17
                                  |    2
24
                                  |    2
5
                                  |    2
69
                                  |    2
52
                                  |    0
227
                                  |    0
147
                                  |    0
731
                                  |    0
8
                                  |    0
82
                                  |    0
这是答案错误的地方,还麻烦大家能够帮我找出问题。
搜索更多相关主题的帖子: cin for 定义 int sum 
2020-12-28 15:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
把差别贴出来,
第一段代码是
int acount[10005];
acount[10005] = {0};

第二段代码是
int acount[10005] = {0}
你认为它们等价?
2020-12-28 21:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
int acount[10005] = {0};
是定义了一个数组,共有10005个元素,每个元素都被初始化为0;

int acount[10005];
acount[10005] = {0};
是定义了一个数组,共有10005个元素,第10005个元素被赋值为0。(而且根本也不存在第10005个元素)

“初始化”和“赋值”的区别你可以先不需要知道,但第一个是全体为零,第二个是某个元素为零。这区别应该看出来吧
2020-12-28 21:34
小星在北方
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-16
得分:0 
回复 2楼 rjsp
是我糊涂了,感谢指出,谢谢!
2020-12-29 09:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504420-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.146715 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved