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

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 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办