TheGawain 2018-11-29 13:07 采纳率: 50%
浏览 1106
已采纳

C语言求最大公约数问题

怎么输入多行数据,回车后输出多行结果
输入说明
多组数据,每组数据由同一行的两个正整数a和b构成(0<=a,b<10000),a和b之间用空格分隔,当a和b都为0时表示输入结束
输出说明
对每组数据输出其最大公约数后换行
输入样例
2 4
12 6
3 5
0 0
输出样例
2
6
1

 #include<stdio.h>

int gcd(int a,int b)
{
    if(a==0&&b!=0)
        return b;
    else if(a!=0&&b==0)
        return a;
    else if(a==1||b==1)
        return 1;
    else
        {
            int t;
            while(b!=0)
            {
                t=a%b;
                a=b;
                b=t;
            }
            return a;
        }
}

int main()
{
    int a,b;
    while(1)
    {
        scanf("%d %d",&a,&b);
        if(a==0&&b==0)
            break;
        printf("%d\n",gcd(a,b));
    }
    return 0;
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-29 16:21
    关注

    如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct node
    {
        int x;
        node * next;
    } * List;
    
    int gcd(int a,int b)
    {
        if(a==0&&b!=0)
            return b;
        else if(a!=0&&b==0)
            return a;
        else if(a==1||b==1)
            return 1;
        else
            {
                int t;
                while(b!=0)
                {
                    t=a%b;
                    a=b;
                    b=t;
                }
                return a;
            }
    }
    
    int main()
    {
        int a,b;
        List list = NULL;
        node * p = NULL;
        while(1)
        {
            scanf("%d %d",&a,&b);
            if(a==0&&b==0)
                break;
            if (!list)
            {
                list = p = (node *)malloc(sizeof(node));
                p->x = gcd(a,b);
                p->next = NULL;
            }
            else
            {
                p->next = (node *)malloc(sizeof(node));
                p = p->next;
                p->x = gcd(a,b);
                p->next = NULL;         
            }
        }
        p = list;
        while (p)
        {
            printf("%d\n",p->x);
            p = p->next;
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 等差数列中的素数个数
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证