100gram 发表于 2021-10-22 13:46:49

vs2019一个求最大公因数的程序报错无法运行

#include<stdio.h>//求最大公约数
int main()
{
        int p,r,n,m,temp;
        printf("请输入需要求取公约数的两个整数\n");
        scanf_s(" % d % d", &n,&m);

        if (n < m)//排序让n为更大的数
        {
                temp = n;
                n = m;
                m = temp;
        }
        p = n * m;
        while (m!=0)//循环求余来求得最大公约数
        {
                r= n% m;
                n= m;
                m = r;
        }
        printf("%d", n);
        return 0;
}

这个程序代码和课本的答案一模一样但是编译的时候就报错
0x00007FFE73C3AFEC (ucrtbased.dll) (5.3公约数公倍数.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。

想请教一下大神我错在哪里 或者vs2019如何单步单步运行调试

100gram 发表于 2021-10-22 13:54:44

{:10_250:}{:10_250:}{:10_250:}{:10_250:}{:10_250:}

傻眼貓咪 发表于 2021-10-22 14:04:48

你用的是 gcc 头文件 <stdio.h>,而scanf_s 是微软所有,你的代码应该写 scanf()

人造人 发表于 2021-10-22 14:47:58

傻眼貓咪 发表于 2021-10-22 14:04
你用的是 gcc 头文件 ,而scanf_s 是微软所有,你的代码应该写 scanf()

stdio.h 不是 gcc 的头文件,是 C标准的头文件

人造人 发表于 2021-10-22 14:48:46

傻眼貓咪 发表于 2021-10-22 14:04
你用的是 gcc 头文件 ,而scanf_s 是微软所有,你的代码应该写 scanf()

符合 C标准的编译器都有这个头文件

傻眼貓咪 发表于 2021-10-22 15:03:57

人造人 发表于 2021-10-22 14:48
符合 C标准的编译器都有这个头文件

{:5_106:}

傻眼貓咪 发表于 2021-10-22 15:15:12

scanf_s(" % d % d", &n,&m); // 这里的 &d 需要相连,

jackz007 发表于 2021-10-22 15:37:02

    第 6 行
      scanf_s(" % d % d", &n,&m);
    改为
      scanf_s("%d %d", &n,&m);
    在%和d 之间加空格是几个意思?
页: [1]
查看完整版本: vs2019一个求最大公因数的程序报错无法运行