这用c怎么解答卡住了帮帮我

不用能除法我怎么办,我想到的只有分子分母乘,他说不能求,要通分,我怎么办

img


#include <iostream>
using namespace std;
int main()
{
    int a, b, c, d,sum;
    cout << "请你输入a除b分别是" << endl;
    cin >> a >> b;
    cout << "请你输入c除d分别是" << endl;
    cin >> c >> d;
    sum = b * d;
    if (sum * a / b > sum * c / d)
    {
        cout << a << "/" << b << " >" << c << " /" << d;
    }
    else if (sum * a / b == sum * c / d)
    {
        cout << a<<"/"<< b<<" ="<< c<<" /"<< d;
    }
    else
    {
        cout << a << "/" << b << " <" << c << " /" << d;
    }
    return 0;
}

img

我想到的只有分子分母乘
就是交叉进行分子分母相乘,然后比较大小,分子参与相乘的,改值即作为其所在分数的结果,那个更大,则分子所在的结果代表的分数更大
比如4/5 和 6/7,比较47和56的大小,由于5*6更大,且6是分子,所以6/7更大

如果你想比较a/b和c/d的大小
那么两个数同时乘以bd
变成a*d和c*b比较大小不就得了


#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
    int num1,num2,den1,den2;
    scanf( "%d/%d %d/%d", &num1,&den1,&num2,&den2);
    if (num1*den2 > num2*den1)
    {
        printf ("%d/%d>%d/%d\n",num1,den1,num2,den2);
    }
    if (num1*den2 == num2*den1)
    {
        printf ("%d/%d=%d/%d\n",num1,den1,num2,den2);
    }
    else {
        printf ("%d/%d<%d/%d\n",num1,den1,num2,den2);
        }
    
    system("pause");
    return 0;
}

哪有那么复杂。。。
题目:a/b 和 c/d 的大小比较

  1. 如果ad > bc ,那就a/b > c/d;
  2. 如果ad == bc ,那就a/b == c/d;
  3. 如果ad < bc ,那就a/b < c/d;

这个是数学原理,对角乘就完事了。。。。。。。

仅供参考!谢谢!

img

img

img

img

img

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int compare(char *s1, char *s2)
{
    char *p1 = NULL;
    char *p2 = NULL;

    struct
    {
        char c1[15];
        char c2[15];
        int a;
        int b;
    } a, b;

    p1 = strchr(s1, '/');
    p2 = strchr(s2, '/');

    if (!p1 || !p2)
    {
        puts("不都是分数,自行比较!");
        return -2;
    }

    strncpy(a.c1, s1, p1 - s1);
    strcpy(a.c2, p1 + 1);
    a.a = atoi(a.c1);
    a.b = atoi(a.c2);
     strncpy(b.c1, s2, p2 - s2);
    strcpy(b.c2, p2 + 1);
    b.a = atoi(b.c1);
    b.b = atoi(b.c2);

    if (a.b == 0 || b.b == 0)
    {
        puts("分母为0无效!");
        return -3;
    }

    a.a *= b.b;
    b.a *= a.b;

    return a.a > b.a ? 1 : (a.a == b.a ? 0 : -1);

}


int main()
{
    int n = -8;
    char s1[15];
    char s2[15];
    puts("输入两个分数:");
    scanf("%15s", s1);
    scanf("%15s", s2);
    n = compare(s1, s2);
    if (n == 0)
        printf("%s = %s\n", s1, s2);
    else if (n == 1)
        printf("%s > %s\n", s1, s2);
    else if (n == -1)
        printf("%s < %s\n", s1, s2);
    else
        printf("输入无效!\n");

    return 0;
}