标题:有个东西没见过,不知道怎么下手。
只看楼主
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
得分:0 
程序代码:
#include<iostream>
using namespace std;
int count=0;
int fun(int n);
int main()
{
    int a=30,b=20,c=15;
    cout<<fun(a)<<endl;
    cout<<fun(b)<<endl;
    cout<<fun(c)<<endl;
    return 0;
}
int fun(int n)
{
    static int div;
    int i;
    if(count==0)
    {
        div=n;
        count++;
        return div;
    }
    else if(count!=0)
    {
        for(i=div;i>0;i--)
        {
            if(div%i==0&&n%i==0)
            {
                count++;
                div=i;
                return div;
            }
        }
    }
}

C++菜鸟
2013-06-17 13:35
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
得分:0 
全局变量和静态变量是不一样的哦,如果你想要在两次函数执行中都使用同一个变量那么就应该人为的将这个变量传递给函数,但是你的函数又只用一个参数那如何传递,就可以使用静态变量撒。

C++菜鸟
2013-06-17 13:39
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
不用全局和静态能实现楼主的功能?

我表示无能为力

是不是你搞错了什么?  int fun(int, ...)   --变长参数表


[fly]存在即是合理[/fly]
2013-06-17 14:09
wbw626
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2013-6-16
得分:0 
回复 13楼 azzbcc
真心global 和static不能用,题目后面我都看了几遍了。
2013-06-17 21:32
wbw626
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2013-6-16
得分:0 
回复 12楼 lzj12530
静态是static吧。。。不让我用。。。
2013-06-17 21:33
wbw626
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2013-6-16
得分:0 
回复 11楼 lzj12530
太高端了。。,而且还用了static,你的代码里面好多东西我还没学呢。
2013-06-17 21:34
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
程序代码:
#include <stdio.h>

int fun(int n, ...)
{
    int *tmp = &n;
    int gcd  = *(++tmp);
    int a, b, r;


    while (--n)
    {
        a = gcd, b = *(++tmp);
        while (r = a % b)
        {
            a = b, b = r;
        }
        gcd = b;
    }

    return gcd;
}

int main(int argc, char *argv[])
{
    printf("%d\n", fun(1, 30));
    printf("%d\n", fun(2, 30, 20));
    printf("%d\n", fun(3, 30, 20, 10));
    printf("%d\n", fun(4, 30, 20, 10, 5));
    return 0;
}


[fly]存在即是合理[/fly]
2013-06-17 22:14
wbw626
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2013-6-16
得分:0 
回复 17楼 azzbcc
谢谢了,我来研究下
2013-06-18 02:03
wbw626
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2013-6-16
得分:0 
回复 17楼 azzbcc
int gcd  = *(++tmp); 请问这个是什么意思
2013-06-18 03:54
ybj1990
Rank: 2
等 级:论坛游民
帖 子:16
专家分:51
注 册:2013-6-9
得分:0 
我只能说下思路  首先完成取出一个数中所有的公约数  放入一个数组中  a[i][j]....a[i][j++]....
                 然后完成取出第二个数的所有公约数  放入数组中   a[i+1][j]......a[i+1][j++]....

然后对比数组的第一行和第二行之间相同的数放入数组    b[]   
数组B中的数做比大小,取出最大的数。

具体代码实现无力。
2013-06-18 11:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-415357-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067092 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved