#include <iostream>
#include <stdlib.h>
using namespace std;

/*设计一个函数,传入整数,返回所有的因子
例如:传入30,返回【2,3,5,6,10,15】*/

//因子:所有可以整除这个数的数,不包括这个数本身
//因数:所有可以整除这个数的数,包括这个数本身
int* get_factor(int x)
{
    //定义一个整型数,用于记录有多少个因子
    int n=1;//由于返回的是指针类型,要判断什么时候结束,可以将最后一个数设置为-1
    for(int i=1;i<x;i++)
    {
        if(x%i==0)//说明是因子
        {
            n++;
        }
    }
    //动态的申请空间
    int* data=(int*) malloc(n*sizeof(int));//int* data=new int [n]
    //为数组进行赋值
    int j=0;//用于记录数组的下标
    for(int i=1;i<x;i++)
    {
        if(x%i==0)
        {
            data[j]=i;
            j++;
        }
    }
    //将最后一个设置为-1,用于结束标志
    data[n]=-1;
    return data;
}
int main()
{
    int* a=get_factor(30);
    //输出
    for(int* p=a;*p>0;p++) cout<<*p<<" ";
    cout<<endl;
    free(a);//delete [] a;
    return 0;
}

Snipaste_2024-03-10_11-18-08.png

老师,我想问一下输出的结果为什么有一个 17170624呢

相关课程:C++特训班>第一阶段:基础篇>基础篇>动态内存分配

©2014-2023 百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备13018289号-12    营业执照    经营许可证:京B2-20212637