| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:C语言函数问题 请看看
只看楼主 加入收藏
回忆初中时候
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-11-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
C语言函数问题 请看看
//输入两个整数,输出它们的最大公约数和最小公倍数。

#include "stdio.h"

int yue,bei,a,b;          //定义全局变量,yue为最大公约数,bei为最小公倍数

void huhuan(int a,int b)
{
    int t;
    t=a;
    a=b;      //进行a和b两值的交换
    b=t;
    return;
}

void panduanyue(int a,int b)    //求a,b两值的最大公约数的被调函数
{
    if(a<b)
    huhuan(a,b);  //当a<b时,进行a和b两值的交换
                  //分为下列几种情况
    if(a%b==0)    //如a=15,b=5
        yue=b;      
    if(a%(a%b)==0)  //如a=8,b=6
        yue=(a%b);
    if(a%(a%b)!=0)   //如a=7,b=5
        yue=1;
    return;
}
void panduanbei(int a,int b)    //求a,b两值的最小公倍数的被调函数
{                       //情况同求最大公约数
    if(a%b==0)
        bei=a;
    if(a%(a%b)==0)
        bei=((a*b)/(a%b));
    if(a%(a%b)!=0)
        bei=a*b;
    return;
}
int main(void)
{
    scanf("%d%d",&a,&b);
    panduanyue(a,b);
    panduanbei(a,b);
    printf("yue=%d,bei=%d",yue,bei);
    return 0;
}
/*
问题一:
当输入的值a<b时
panduanbei(int a,int b)函数这里不需要进行a,b两值的交换。
本人认为是由于 全 局 变 量 的关系,因为main主函数中先调用了
panduanyue(a,b)函数,而panduanyue(a,b)函数调用了huhuan(int a,int b)函数,
使a,b两值互换,此时a,b两值已经互换,所以panduanbei(int a,int b)函数不再需要
huhuan(int a,int b)函数来进行a,b两值的互换
请问 我说的对吗?
问题二:
请问
为什么我的编程得不到正确的结果?
请指教。。。
搜索更多相关主题的帖子: 最小公倍数 include return C语言 公约数 
2013-11-26 20:28
jsyjzz
Rank: 2
等 级:论坛游民
帖 子:29
专家分:73
注 册:2013-11-8
收藏
得分:7 
搞清楚全局变量和传参的问题,这个问题就可以解决了
2013-11-26 20:57
回忆初中时候
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-11-25
收藏
得分:0 
回复 2楼 jsyjzz
恩恩 谢谢了
2013-11-26 23:37
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:7 
我认为用全局变量这样操作没有问题,关键在于你程序
if(a%(a%b)==0)
a%b有可能为0,而对0取余是非法操作
你程序里好几个这样的求余

测试输入“1 2”程序没问题
输入“4 2 ”程序对0取余非法操作

埋头做牛,抬头做人,低头做狗
2013-11-27 08:59
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:7 
回复 4楼 pink_duo
搞清楚全局变量和传参的问题

总有那身价贱的人给作业贴回复完整的代码
2013-11-27 09:07
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 
以下是引用embed_xuel在2013-11-27 09:07:05的发言:

搞清楚全局变量和传参的问题



从实现结果的角度看,全局变量作为参数传递未尝不可,虽然占用空间、程序可维护性差、全局变量易误修改,但是从结果来看,是可以这样用

埋头做牛,抬头做人,低头做狗
2013-11-27 09:18
快速回复:C语言函数问题 请看看
数据加载中...
 
   



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

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