鱼C论坛

 找回密码
 立即注册
查看: 4810|回复: 5

c语言项目案例

[复制链接]
发表于 2017-5-25 17:30:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
、编写函数void  fun (int x, int * pp, int *n),它的功能是:求出x的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回(假设pp指向足够大的空间)。如,若x中的值为24,则有6个数符合要求,它们是2,4,6,8,12,24。

这个题,哪位大神能帮忙讲讲,分析一下.多谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-26 16:53:16 | 显示全部楼层
用一个for循环,循环因子i从x开始,每次自减2,i>0,然后24%i求余数,如果为0则把该数放到数组中,最后遍历该数组求个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-29 17:49:54 | 显示全部楼层
本帖最后由 砚凉— 于 2017-5-29 17:59 编辑

试着将指针*n变成n返回 效果还不错
#include<iostream>
using namespace std;
int pp(int x,int *p,int n);
int main()
{
    int  *b;
    int t=0;
    int a;
    cin>>a;
    int *c=new int[2000];
    b=c;
    t=pp(a,b,t);
    cout<<t<<endl;
    for(int h=0;h<t;h++)
        cout<<c[h]<<" ";
    delete []c;
    return 0;
}

int pp(int x,int *p,int n)
{
    for(int i=1;i<=x;i++)
    {
        if((x%i==0)&&(i%2==0))
        {
                    *p=i;
                    p++;
                    n++;
        }
    }
    return n;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-5-29 18:09:41 | 显示全部楼层
void 函数里使用指针 如果指向数组 则可以传出改变量,如果指向一个值 则不能传出改变值 可能的原因是数组是直接指向地址 改变的量直接到达地址 不会因子函数程序的结束而释放
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-29 20:49:59 | 显示全部楼层
砚凉— 发表于 2017-5-29 17:49
试着将指针*n变成n返回 效果还不错

看了一下,思路很清晰,点赞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-29 22:01:05 | 显示全部楼层
本帖最后由 bin554385863 于 2019-10-30 13:39 编辑
#include <iostream>
//获取偶数因子
void func(int num, int * arr, int * n)
{
        int count = 0;
        if (num <= 0)//排除负数
        {
                std::cout << "DATE ERROR";
                *n = -1;
                arr[0] = -1;
        }
        else
        {
                //查找偶数因子
                for (size_t i = num; i >= 1; i--)
                {
                        if (num % (i * 2) == 0)
                        {
                                count++;
                        }
                }
                *n = count;
                count = 0;
                for (size_t i = num; i >= 1; i--)
                {
                        if (num % (i * 2) == 0)
                        {
                                int tmp = num / i;
                                arr[count] = tmp;
                                count++;
                        }
                        else if (num % (i * 2) != 0)
                        {
                                arr[count] = 0;
                        }
                }
        }
}
//计算偶数因子的个数
int arrsize(int num)
{
        int size = 0;
        if (num % 2 != 0)
        {
                size = 1;
        }
        else
        {
                for (size_t i = 1; i <= num; i++)
                {
                        if (num % (2 * i) == 0)
                        {
                                size++;
                        }
                }
        }
        return size;
}
int main(int argc, char const * argv[])
{
        int a = 1;
        std::cin >> a;
        for (int b = 0; a != 0; std::cin >> a)
        {
                int s = arrsize(a);
                int ptr[s];
                func(a, ptr, &b);
                //std::cout<<b<<std::endl;
                std::cout << a << "有" << b << "偶数因子,分别是: ";
                for (size_t i = 0; i < s; i++)
                {
                        std::cout << ptr[i] << "  ";
                }
                std::cout << '\n' << std::endl;
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 17:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表