发疯呢,代码能够编译,但是执行了都是看不懂的错误,高手帮忙!!
发疯呢,代码能够编译,但是执行了都是看不懂的错误,高手帮忙!!
#define N 47
void main()
{
int *array,t,c,i,j;
printf( "shu ru ge shu: ");
scanf( "%d ",&c);
array=(int*)malloc(sizeof(int)*c);
for (i=0;i <=c;i++)
{
if (array[t%N]==0)
{
array[t%N]=t;
}
else
{
for (j=t%N;j <=c;j++)
if (array[j]==0)
array[j]=t;
}
}
printf( "shu ru cha xun wei zhi: ");
while (t!=-1)
{
cin> > t;
printf( "%d\n ",array[t]);
}
}
[解决办法]
你的代码也让我发疯!
#define N 47
void main()
{
int *array,t,c,i,j;
printf( "shu ru ge shu: ");
scanf( "%d ",&c);
array=(int*)malloc(sizeof(int)*c);
for (i=0;i <=c;i++)//要输入c个应该是i <c
{
scanf( "%d ",&t);
if (array[t%N]==0)//首先,array没有初始化就使用?里面都是未知数据
{
array[t%N]=t;
}
else
{
for (j=t%N;j <=c;j++)//同i的循环应该是j <c
if (array[j]==0)
array[j]=t;
}//还有这里一段写得过分复杂了
}
printf( "shu ru cha xun wei zhi: ");
while (t!=-1)//t没有再次初始化就使用,哎
{//逻辑错误,应该是先输入位置,然后判断是否退出,确认不退出了再打印
scanf( "%d ",&t);
printf( "%d\n ",array[t]);
}
}
[解决办法]
修改后代码:
#define N 47
void main()
{
int *array,t,c,i,j;
printf( "shu ru ge shu: ");
scanf( "%d ",&c);
array=(int*)malloc(sizeof(int)*c);
memset(array,0,sizeof(int)*c);//初始化都是0
for (i=0;i <c;i++)//要输入c个应该是i <c
{
scanf( "%d ",&t);
for (j=t%N;j <c;j++)
if (array[j]==0)
{
array[j]=t;
break;//找到了就退出了,干吗还继续找?
}
}//还有这里一段写得过分复杂了,这样就可以了!!
}
printf( "shu ru cha xun wei zhi: ");
while (1)//t没有再次初始化就使用,哎
{//逻辑错误,应该是先输入位置,然后判断是否退出,确认不退出了再打印
scanf( "%d ",&t);
if (t==-1)
break;
printf( "%d\n ",array[t]);
}
}