Vllin 发表于 2021-5-13 22:03:42

c语言程序运行以后出现Program received signal SIGFPE. Arithmetic exception

本帖最后由 Vllin 于 2021-5-13 22:09 编辑

#include<stdio.h>
int main()
{
        int a,b,c,d,e;
        scanf("%d",&a);
        scanf("%d",&b);
        c=b;e=a;
        while((a%b)!=0)
        {a=b;
        b=(a%b);}
        d=(e*c/b);
        printf("%d",b);
        printf("%d",d);
        return 0;
}
程序如上但是感觉没有问题啊

肖-肖 发表于 2021-5-13 22:28:46

解释再注释中
#include<stdio.h>
int main()
{
      int a,b,c,d,e;
      scanf("%d",&a);
      scanf("%d",&b);
      c=b;e=a;
      while((a%b)!=0)
      {
            a=b;//b给a
            b=(a%b);//a%b--》b必为0--》b为0了导致除数为0了--》导致如果输入的a%b能被整除程序没问题,
            //不能整除是有问题的-》什么也不输出我这里是
      }
      d=(e*c/b);
      printf("%d",b);
      printf("%d",d);
      return 0;
}

运行图如下:

请问你想要实现什么效果呢

Vllin 发表于 2021-5-13 22:45:01

肖-肖 发表于 2021-5-13 22:28
解释再注释中

运行图如下:


这个程序是想要求a 与b的最大公约数和最小公倍数

Vllin 发表于 2021-5-13 22:47:52

Vllin 发表于 2021-5-13 22:45
这个程序是想要求a 与b的最大公约数和最小公倍数

a%b不应该是取他的余数么那我判断他不为0的时候就将余数赋值给b,将b的值赋值给a循环求出余数为零的那个值输出

Vllin 发表于 2021-5-13 22:48:39

Vllin 发表于 2021-5-13 22:47
a%b不应该是取他的余数么那我判断他不为0的时候就将余数赋值给b,将b的值赋值给a循环求出余数为零的那个 ...

主要是不明白为什么b一定是0

Vllin 发表于 2021-5-13 22:56:16

Vllin 发表于 2021-5-13 22:48
主要是不明白为什么b一定是0

哦,我懂了a的值变了
困扰我半天的问题了,真的是谢谢谢谢谢谢{:5_92:}

肖-肖 发表于 2021-5-14 16:38:34

Vllin 发表于 2021-5-13 22:56
哦,我懂了a的值变了
困扰我半天的问题了,真的是谢谢谢谢谢谢

嗯 解决了的话设置下最佳答案吧
页: [1]
查看完整版本: c语言程序运行以后出现Program received signal SIGFPE. Arithmetic exception