注册 登录
编程论坛 C语言论坛

求两个整数最大公约数,求问那出错了?

Buddhawly 发布于 2019-10-17 22:45, 2052 次点击
/* c4-6.c */
#include <math.h>
#include <stdio.h>
int main()
{
 unsigned int n, m, t;
 printf(\"Please enter two numbers:\");
 scanf(\"%d,%d\", &n, &m);
 if (n < m)
 {
 t = n; n = m; m = t;
 }
 t = n % m;
 /************found************/
 while (t != 0)
 { n = m;
 m = t;
 /************found************/
 t = n % m;
 }
 /************found************/
 printf(\"max is : %d\", m);
 return 0;
}
6 回复
#2
Buddhawly2019-10-17 22:46
输入24和36输出结果是对的,但是输入别的的时候输出结果就是错的,能不能教一下问题出在哪里??谢谢!!
#3
bcbbcclbbc2019-10-18 00:34
你这个程序能通过编译器编译,没有错误提示?
printf(\"Please enter two numbers:\");
 scanf(\"%d,%d\", &n, &m);

这输入输出函数明显有问题。

[此贴子已经被作者于2019-10-18 01:11编辑过]

#4
纯蓝之刃2019-10-18 09:21
#include <math.h>
#include <stdio.h>
int main()
{
int n, m, t,k=1;
printf("\\Please enter two numbers:\\");
scanf("%d,%d",&n,&m);
if (n < m)
{
t = n; n = m; m = t;
}
t=m;
for(t;t>0;t--)
{
    if(m%t==0)
    {
        if(n%t==0)
        {
            m=t;
            break;
        }
    }
}

printf("\\max is : %d\\", m);
return 0;
}
首先scanf(\"%d,%d\", &n, &m);。如果要是按照你的这个写法就应该是首先scanf("\\%d,%d\\", &n, &m);输入的时候输入 \24,36\  。"\\"代表输入或者输出一个'\'。
第二部分是判断最大公约数的,从两个数小的那个开始计数,依次减小,如果同时被两个数整除,则输出这个数,这个数就是最大公约数。
#5
rjsp2019-10-18 09:46
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned m, n;
    printf( "Please enter two numbers: " );
    scanf( "%d%d", &m, &n );

    while( n != 0 )
    {
        unsigned t = m%n;
        m = n;
        n = t;
    }
    printf( "gcd = %u\n", m );
}
#6
Buddhawly2019-10-18 22:59
回复 4楼 纯蓝之刃
明白了,谢谢指导!
#7
Buddhawly2019-10-18 23:00
回复 5楼 rjsp
谢谢大佬!!!
1