Kattis - 奇怪的人 - 分割错误

时间:2016-02-18 17:54:07

标签: c arrays segmentation-fault nested-loops

请注意,这个问题适用于家庭作业。

使用以下代码,我将在Kattis网站上输入此问题的数据。然而,代码编译后,我在#Party of Partygoers#:'之后得到了一个细分错误。 printf,我不知道为什么。请帮忙!

在Kattis,问题的描述基本上是:有很多派对观众,你发现有人不应该在这里,因为你把所有的邀请发送给了夫妻。每个派对参与者的邀请代码都与其他人匹配。找出奇怪的人。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int N,i,n,j,a,count=0,num=1;
    int guest[1000],cas[1000];
    scanf("%d",&N);
    printf("Initial N: %dn",N);

    while(N!=0)
    {
        printf("While #: %dn",N);
        scanf("%d",&n);
        printf("Number of Partygoers: %dn",n);
        for(i=0;i<n;i++)
        {
            scanf("%d",guest[i]);
            printf("Goer's Id: %dn",i);
            guest[i]=cas[i];
        }

        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(cas[i]==guest[j])
                {
                    printf("Is Equaln");
                    if(count==2)
                    {
                        break;
                        i++;
                        j=0;
                        printf("Count Equaln");
                    }

                    count++;
                    j++;
                }
                else
                {
                    printf("Case #%d: %dn",num,cas[i]);
                }
            }
        }
        N--;
        num++;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

scanf期待一个指针,你传递一个值。

更改

scanf("%d",guest[i]);

scanf("%d",&guest[i]);

还有另一个问题,你得到scanf的值,但是你用未初始化的值(垃圾)覆盖这个值:

for(i=0;i<n;i++){
   scanf("%d",&guest[i]);
   printf("Goer's Id: %d\n",i);
   guest[i]=cas[i]; /* cas[i] is used uninitialized */
}

您的意思是cas[i]=guest[i];吗?