| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1382 人关注过本帖
标题:C语言更相减损法
只看楼主 加入收藏
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
结帖率:81.82%
收藏
 问题点数:0 回复次数:4 
C语言更相减损法
#include<stdio.h>
int main()
{
    int a,b,t,c;
    scanf("%d%d",&a,&b);
    if(a<b)
    {
        t = a;
        a = b;
        b = t;
    }
    c = a - b;
    if(c != 0)
    {
        a=b;
        b=c;
        c = a - b;
   
    }printf("%d",a);
    return 0;
}
程序一直不对,帮我一下吧。
搜索更多相关主题的帖子: C语言 相减 int printf return 
2018-11-21 15:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序一直不对,帮我一下吧。
首先要告诉别人你想完成什么功能?
其次,“一直不对”是个什么玩意儿别人是听不懂的?编译错误就贴错误信息,输出错误就贴出你的输入和你期待的正确输出。

你是想计算 a 和 b 的最大公约数吗?
if(c != 0) 改为 while( c != 0 )


2018-11-21 15:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
    {
        a=b;
        b=c;
        c = a - b;
     }
也无法保证 a > b,还得……
2018-11-21 15:58
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
收藏
得分:0 
上面还有一个更相减损术的帖子,里面有别人改正确的,这是我从上面别的大佬写的正确的复制过来给你的
#include<stdio.h>
int main()
{
    int a,b,t;
    scanf("%d%d",&a,&b);
    do
    {
        if (a<b)
        {
            t = a;
            a = b;
            b = t;
        }
        a = a - b;
    }
    while(a != 0);
    printf("%d",b);
    return 0;
}



下面是我自己的是辗转相除法(给你拓展一下思维)

#include "stdio.h"
int main()
{
    int m,n,r,t,i;
    scanf("%d%d",&m,&n);
    if(m>=n)
    for(i=0;i<10000;i++)
    {
        r=m%n;
        if(r==0)
        {
            printf("最大公约数为:%d\n",n);
            break;
        }
        m=n;
        n=r;
    }
    else
    {
        t=m;
        m=n;
        n=t;
        for(i=0;i<10000;i++)
        {
          r=m%n;
          if(r==0)
          {
              printf("最大公约数为:%d\n",n);
            break;
          }
          m=n;
          n=r;
        }
    }
return 0;
}


[此贴子已经被作者于2018-11-21 22:21编辑过]

2018-11-21 22:19
wlxy_wang
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:77
专家分:303
注 册:2018-11-2
收藏
得分:0 
楼主对于更相减损术理解不到位,更相减损的实现是需要用到循环的, C基础回复的更相减损的算法很好,如果用楼主的算法更改一下就是这样:
程序代码:
#include<stdio.h>
int main()
{
    int a,b,t,c=0;
    scanf("%d%d",&a,&b);
do
{
    if(a<b)
    {
        t = a;
        a = b;
        b = t;}
        c = a - b;
        a=b;
        b=c;
        }while(c);
    
    printf("%d",a);
    return 0;
}


[此贴子已经被作者于2018-11-23 13:49编辑过]

2018-11-23 11:33
快速回复:C语言更相减损法
数据加载中...
 
   



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

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