两个编译器预期结果不同

img

img

图二是我在dev的输出结果,达到了预期
图一是头歌平台的测试,输出了4195742,请问是我哪步有问题吗

问题在定义 q 时没有初始化,将 int q = 0; 初始化下就好了。

scanf("%d\n", &n);
这里去掉\n,看看
scanf("%d", &n);

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章讲的很详细,请看:实验报告三1打印一个n行的由字符c组成的等腰三角形.2验证歌德巴赫猜想2000以内的正偶数都能够分解为两个质数之和3. 用递归方法实现求解两个整数的最大公约数
  • 除此之外, 这篇博客: C语言程序设计·头歌实训合集中的 第8关:计算两个正整数的最大公约数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    任务描述
    编程计算两个正整数的最大公约数。其中求最大公约数的函数原型已经给出,请在主函数中编程调用函数,输出最大公约数。
    程序的运行示例:
    12,3↙
    3
    ####函数原型说明
    求最大公约数的函数原型如下:
    int MaxCommonFactor( int a, int b);
    返回值:返回的是最大公约数;若输入的数据有任意一个不满足条件,返回值是-1。
    参数:a,b是两个整型数
    相关知识
    本任务主要考察函数的调用方法。
    ####编程要求
    根据提示,在右侧编辑器Begin-End处补充代码,编程计算两个正整数的最大公约数。
    输入:输入格式:“%d,%d”
    输出:输出格式:“%d\n”
    测试说明
    平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
    样例输入:
    467,465
    样例输出:
    1
    开始你的任务吧,祝你成功!

    #include<stdio.h>
    int MaxCommonFactor( int a, int b)
    { 
       int c; 
       if(a<=0||b<=0) 
          return -1; 
       while(b!=0)
       { 
         c=a%b; 
         a=b;
         b=c;
       } 
      return a; 
    }   
    int main(void)
    	{  
    	  /*********Begin*********/
    	  int a,b;
        scanf("%d,%d",&a,&b);
        printf("%d",MaxCommonFactor(a,b));
    	  
    	  /*********End**********/ 
        return 0;
    }
    
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^