|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #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[j] = i;//将因子存储到数组中
- j++;
- }
- }
- printf("%d its factors are ",num);
- for (i = 0;i < j;i++)
- {
- printf("%d ",p[i]);
- }
- }
- 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[j] = i;
- j++;
- }
- }
-
- for (i = 0;i < count;i++)
- {
- printf("%d ",array[i]);
- }
- }
- else
- {
- printf("? its factors are ? ? ? ");
- }
- return 0;
- }
复制代码
|
|