这程序错哪里

汇编菌 2012-01-30 01:23:40
#define NULL 0
void isprime(n)
int n;
{
int i,a=0,*b=NULL;
for(i=1; i<n;i++)
{
if(!(n%i))
{
a++;
}
}
printf("a=%d\n",a);
b=(int*)malloc(sizeof(int)*a);

if(b==NULL)
{
printf("动态申请内存失败");
printf("\n");
system("pause");
exit(1);
}

for(i=1;i<n;i++)
{
if(!(n%i))
{
*b++=i;
}
}

for(i=0;b!=NULL;b--)
{
printf("%d",*b);
}
}

void play0()
{
isprime(6);
}
...全文
148 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
IVERS0N 2012-02-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cfjtaishan 的回复:]

通过函数名定义来看,楼主好像是在判断一个数是不是素数。在指针变量的声明中,感觉是有问题。你自定义了#define NULL 0那么,*b = (void* )NULL;该这样定义吧,我建议最好不要定义和C语言中已经定义好的相冲突的变量。在C语言中NULL就是表示的(void *)0;
[/Quote]

+
Ever_lover 2012-02-01
  • 打赏
  • 举报
回复
学习中...
ProgrammingRing 2012-01-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cfjtaishan 的回复:]

通过函数名定义来看,楼主好像是在判断一个数是不是素数。在指针变量的声明中,感觉是有问题。你自定义了#define NULL 0那么,*b = (void* )NULL;该这样定义吧,我建议最好不要定义和C语言中已经定义好的相冲突的变量。在C语言中NULL就是表示的(void *)0;
[/Quote]
学习了~
AnYidan 2012-01-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cfjtaishan 的回复:]

通过函数名定义来看,楼主好像是在判断一个数是不是素数。在指针变量的声明中,感觉是有问题。你自定义了#define NULL 0那么,*b = (void* )NULL;该这样定义吧,我建议最好不要定义和C语言中已经定义好的相冲突的变量。在C语言中NULL就是表示的(void *)0;
[/Quote]

++
自信男孩 2012-01-30
  • 打赏
  • 举报
回复
通过函数名定义来看,楼主好像是在判断一个数是不是素数。在指针变量的声明中,感觉是有问题。你自定义了#define NULL 0那么,*b = (void* )NULL;该这样定义吧,我建议最好不要定义和C语言中已经定义好的相冲突的变量。在C语言中NULL就是表示的(void *)0;
巴山独钓 2012-01-30
  • 打赏
  • 举报
回复
for(i=0;b!=NULL;b--) // b!=NULL的条件是错误的
{
printf("%d",*b); // 第一次执行时,b的地址已经指向分配的内存最后一个后面的地址了
}
改为:
for(i=a; i>0; i--)
{
printf("%d ",*(b-i));
}
lee_鹿游原 2012-01-30
  • 打赏
  • 举报
回复

int i,a=0,*b=NULL; 对于一个空指针b,不能对它进行解引用操作。
面包大师 2012-01-30
  • 打赏
  • 举报
回复
LZ想干什么?
for(i=0;b!=NULL;b--)
{
printf("%d",*b);
}
这个地方肯定不能这样打印。。。赋值也错了
灼眼的超哥 2012-01-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuchao35758600 的回复:]

错哪里?
main函数在哪里?NULL为什么要再宏定义一次?
[/Quote]
描述一下程序主要是干什么的,以及它的工作流程。
灼眼的超哥 2012-01-30
  • 打赏
  • 举报
回复
错哪里?
main函数在哪里?NULL为什么要再宏定义一次?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧