为什么不论怎样输出的都是1?

int m;
int n;
int a=1;

scanf("m n",&m,&n);
printf("的最大公约数为:");
int i=1;
for(i=1;i<m&&i<n;i++){
    if(m%i&&n%i==0){
        a=i;
    }
}
printf("%d",a);

第5行:scanf函数需要明确输入控制符,比如你需要输入整型数据,需要在双引号中出现%d,如果是字符型,则需要%s。因为c语言里计算机要提前知道你要输什么类型的变量,方便提前分配好内存。
第9行:&&连接的应该是两个完整的判断语句(因为计算机需要判断前后两个语句是否为真),||同理。

我的回答如有帮助,请给我的文章点个赞,谢谢。https://blog.csdn.net/GaussDB/article/details/118632770

#include <stdio.h>

int main() {
    int m;
    int n;
    int a=1;

    scanf("%d%d",&m,&n);  //scanf("m n",&m,&n);
    printf("的最大公约数为:");
    //int i=1;
    for(int i=1;i<m&&i<n;i++){
        if(m%i==0&&n%i==0){  //if(m%i&&n%i==0){
            a=i;
        }
    }
    printf("%d",a);
    return 0;
}