| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 765 人关注过本帖
标题:大一计科新生 刚学到函数不太懂 求指点
只看楼主 加入收藏
Poppy辉
Rank: 1
来 自:云南曲靖
等 级:新手上路
帖 子:33
专家分:4
注 册:2016-11-5
结帖率:66.67%
收藏
已结贴  问题点数:5 回复次数:2 
大一计科新生 刚学到函数不太懂 求指点
#include<stdio.h>
int minComMul(int a,int b);
int maxComDiv(int a,int b);
main()
{
    int m,n;
    int maxCom,minCom;

    maxCom = maxComDiv(24,36);
        printf("%d",m);
    minCom = minComMul(24,36);
        printf("%d",n);
   
}
    int maxComDiv(int a,int b)   //此时仅讨论啊a<=b的情况
    {
        int i,j,m,n;
        m=0;
        n=0;
        for( i=1;i<=a;i++ )
        {
            if( a%i==0 )
                m = i;
        }
        for( j=1;j<=b;j++ )
        {
            if( b%j==0 )
            {
            n = j;
            if( m==n )
            return m;        
        }
   
    }
    }

    int minComMul(int a,int b)
    {
        int i,j,m,n;
        m=0;
        n=0;
        for( i=a;;i++ )
        {
            if( i%a==0 )
            {
                m = i;
            }
        }
        for ( j=b;;j++ )
        {
            if( b%j==0 )
            {
            n=j;
            if( m==n )
            return n;
            }
        }
    }
输出结果是-85833340
这是老师布置的一道求公约数公倍数的作业
搜索更多相关主题的帖子: include 
2016-11-05 15:38
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
注要问题是函数返回值问题,以及第二个函数漏了循环结束条件,已改正,为了理清思路,我把代码翻译了一下~
改正后的代码如下:

#include<stdio.h>
int minComMul(int a,int b,int maxCom);//声明求最小公倍数的函数,求最小公倍数方法是a*b/maxCom。
int maxComDiv(int a,int b);//声明求最大公约数的函数
main()
{
    int m,n;//声明变量m,n
    int maxCom,minCom;//声明变量最大公约数和最小公倍数

    maxCom = maxComDiv(24,36);//求24和36的最大公约数
        printf("%d\n",maxCom);//m为局部变量,只在函数域作用,函数结束后便释放,应改为调用maxComDiv的返回值
    minCom = minComMul(24,36,maxCom);//求24和36的最小公倍数
        printf("%d\n",minCom);//原版问题与上两行一样,已改正
    //还有,注意换行啊~~~~
}
int maxComDiv(int a,int b)   //此时仅讨论啊a<=b的情况
{
    int i,j,m,n;//声明变量i,j,m,n--从下文得:i,j为循环变量
    m=0;//为变量赋值
    n=0;
    for( i=1;i<=a;i++ )//a值为24
    {
        if( a%i==0&&b%i==0 )//此处,a,b同时比较,一次循环就够了
            m = i;//记录此时m的值
    }
    return (m);//返回m的值
}

int minComMul(int a,int b,int maxCom)//调用求最小公倍数的函数
{
    return (a*b/maxCom);//前面已经求得最大公约数,用公式a*b/maxCom就够了。
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-05 18:01
Poppy辉
Rank: 1
来 自:云南曲靖
等 级:新手上路
帖 子:33
专家分:4
注 册:2016-11-5
收藏
得分:0 
回复 2楼 九转星河
真的相当感谢.  解释的很详细也很耐心,问题已经解决了。  赞!
2016-11-05 23:54
快速回复:大一计科新生 刚学到函数不太懂 求指点
数据加载中...
 
   



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

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