刚学c,不是很会,恳请各位大佬的指点
提交pta出现的问题是段错误
出问题的代码段落
for(int i=0;i<num;i++)
{
int z=0;int temp2=0;
temp2=a[i];
while(a[i]!=1)
{
if(a[i]%2==0)
a[i]=a[i]/2;
else if(a[i]%2!=0)
a[i]=(3*a[i]+1)/2;
temp[z]=a[i];
z++;
}
a[i]=temp2;
int j=0;
while(temp[j]!=-1)
{
for(int p=0;p<num;p++)
{
if(temp[j]==a[p])
a[p]=-1;
}
j++;
}
}
大佬们,这一段最下面a[p]=-1 这句改成其他的就不会报错,但是写这句提交pta就是段错误
这是为什么?
全部代码是
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num;
scanf("%d",&num);
int *a=(int *)malloc(num*sizeof(int));
for (int i=0;i<num;i++)
{
scanf("%d",&a[i]);
}
int temp[10000];
for(int i=0;i<10000;i++)
{
temp[i]=-1;
}
for(int i=0;i<num;i++)
{
int z=0;int temp2=0;
temp2=a[i];
while(a[i]!=1)
{
if(a[i]%2==0)
a[i]=a[i]/2;
else if(a[i]%2!=0)
a[i]=(3*a[i]+1)/2;
temp[z]=a[i];
z++;
}
a[i]=temp2;
int j=0;
while(temp[j]!=-1)
{
for(int p=0;p<num;p++)
{
if(temp[j]==a[p])
a[p]=-1;
}
j++;
}
}
for(int i=0;i<num;i++)
{
if(a[i]!=-1)
{printf("%d",a[i]);
if(i!=num-1)
printf(" ");}
}
return 0;
}
万分感谢!