求一个数的不包括自己的因子,出现的问题
#include <stdio.h>int main(void)
{
int num,i,*p,j = 0;
scanf("%d",&num);
if (num != 0)//判断输入的是否是整数
{
for (i = 1;i < num;i++)
{
if (!(num % i))//判断是否是该数的因子
{
p= i;//将因子存储到数组中
j++;
}
}
printf("%d its factors are ",num);
for (i = 0;i < j;i++)
{
printf("%d ",p);
}
}
else
{
printf("? its factors are ? ? ? ");
}
return 0;
}
为什么求出的因子比较少时程序正常,但是因子一多的话程序虽然会显示结果,但是会停止工作? int *p,野指针了
我这个程序有点复杂,不过空间没有浪费
不过你也可以直接分配空间,这样程序会简洁很多
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num,i,count = 0;
scanf("%d",&num);
if (num > 0)//还要判断输入的是否是正数
{
for (i = 1;i < num;i++) // 获取有多少数字,数组分配空间,避免空间浪费
{
if (!(num % i))//判断是否是该数的因子
{
count++;
}
}
printf("%d its factors are \n",num);
int *array = (int *)malloc(count * sizeof(int)); // 为数组分配空间
int j = 0;
for (i = 1;i < num;i++)
{
if (!(num % i))//判断是否是该数的因子
{
array = i;
j++;
}
}
for (i = 0;i < count;i++)
{
printf("%d ",array);
}
}
else
{
printf("? its factors are ? ? ? ");
}
return 0;
}
页:
[1]