Kattis - Odd Man Out - 分段错误
Kattis - Odd Man Out - Segmentation Fault
请注意,此问题是作业。
通过下面的代码,我在Kattis网站上输入了这个问题的数据。代码可以编译,但是,我在 'Number 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;
}
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];
吗?
请注意,此问题是作业。
通过下面的代码,我在Kattis网站上输入了这个问题的数据。代码可以编译,但是,我在 'Number 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;
}
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];
吗?