【c语言】比较两个分数的大小

#include<stdio.h>
int divisor(int a,int b){
    int temp=1;
    
    if(a<b){
        temp=a;
        a=b;
        b=temp;
    }
    while(1){
        temp=a%b;
        if(temp!=0){
        a=b;
        b=temp;
        }else{
            return b;
        }
    }
}

int multiple(int a,int b){
    int m;
    m=divisor(a,b);
    return a*b/m;

}
int compare(int a,int b,int c,int d){
    int t,m,n;
    t=multiple(b,d);
    m=t/b;
    n=t/d;
    return (a*m-c*n);
}
void main(){
    int a,b,c,d,m;
    while(1){
    printf("请输入第一个数的分子和分母:");
    scanf("%d,%d",&a,&b);
    printf("\n");
    printf("请输入第二个数的分子和分母:");
    scanf("%d,%d",&c,&d);
    printf("\n");
    m=compare(a,b,c,d);
    if(m>0){
        printf("a/b大于c/d!\n");
    }
    if(m==0){
        printf("a/b等于c/d!\n");
    }
    if(m<0){
        printf("a/b小于c/d!\n");
    }

}
}

备注: if(m==0){
        printf("a/b等于c/d!\n");
    }这段代码,得注意等号,不是赋值号,不要问我是怎么知道的!!!血的教训!

时间: 2024-12-27 08:36:22

【c语言】比较两个分数的大小的相关文章

[经典面试题][百度]数组A中任意两个相邻元素大小相差1,在其中查找某个数。

题目 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置.如数组:[1,2,3,4,3,4,5,6,5],找到4在数组中的位置. 思路 这道题目最差时间复杂度也是O(N),所以重点在于能不能找到一种尽可能减少比较次数的方法. 如数组:[1,2,3,4,3,4,5,6,5],找到4在数组中的位置.4和1比较,差为3,那么即使最好情况(递增或者递减),4也就是在a[3]的位置,可以跳过a[1]a[2].这样在特定数组(目标值和a[1]相差很大)的情况下或许可以

【C语言】两个指针(地址)相减

两个指针相减,为两个指针之间间隔这两个指针类型的数目. 如:int *p,*q; p-q=(p地址-q地址)/sizeof(int) #include <stdio.h> int main() { int a[9]={1,2,3,4,5,6,7,8,9}; char *p,*q; int *p2,*q2; p=(char*)a; q=(char*)&a[2]; printf("p=%08X q=%08X a[%d]=%d\n",p,q,q-p,a[q-p]); //

c语言 保留两位小数

用C其实也挺简单的,有个投机取巧的办法我的想法是,既然希望保留两位小数,那么就必须看第三位小数,如果大于5,就进位,那么我们可以让第三位加上5,因为最后第三位是舍掉的,因此无论怎么改变第三位也没有问题.这样就想起了强制类型转换,呵呵,自己乘上100,然后加上0.5,再强制类型转换成int,将第三位舍掉,自己除100,恢复原来的数字. #include<iostream>using namespace std;int main(){  float length=1.9865;  length*=

C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.所以,在C语言中两个相同类型的结构体变量之间是可以相互赋值的.但是要注意指针的浅层复制问题. 下面是一个简单的验证代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdlib.h> struct test

比较两个整数的大小

比较两个整数的大小 说明:使用if条件从句比较两个整数的大小.使用传参方法时,需要对传参个数及传入的参数是否是整数进行判断. 思路 第一,先判断输入的是两个数,对输入个数进行判断: 第二,再判断输入的两个数是整数: 第三,最后比较两个数的大小. 脚本1如下 #!/bin/bash #write by wtf #date:2017-7-5 a=$1 b=$2 if [ $# -ne 2 ];then echo "Please enter two Numbers!" exit 1 fi e

C语言中怎么求动态数组大小

先来个简单的例子 int a[] = {1,2,3}; int arr_len = 0; arr_len = sizeof(a)/sizeof(int); 解释:sizeof() 关键字是求出对象所占用的内存空间的大小,so, sizeof(a)是算出整个数组占用的空间的大小. 因为是整数数组,一个整数在32位系统上占用4个字节,不同的系统数值可能不同, 用sizeof(int)可以计算出 一个整数占用的内存空间大小.所以用sizeof(a)/sizeof(int)数组中有几个整数,也即算出了数

PHP中比较两个时间的大小与日期的差值

在这里我们全用到时间戳 mktime(hour,minute,second,month,day,year,[is_dst])     其参数可以从右向左省略,任何省略的参数都会被设置成本地日期和时间的当前值. 参数 描述 hour 可选.规定小时. minute 可选.规定分钟. second 可选.规定秒. month 可选.规定用数字表示的月. day 可选.规定天. year 可选.规定年.在某些系统上,合法值介于 1901 – 2038 之间.不过在 php教程 5 中已经不存在这个限制

JS 判断两个数字的大小

今天使用 Javascript 比较两个数字的大小,发现了 19 > 100 的现象,什么原因呢? 解决: var 定义的变量默认是字符串,比较两个字符串变量和比较两个数字的规则不同.所以应该先把字符串转化成数字,再去比较大小,如下代码: var counts = $("input[name='counts']").val(); var realCounts = $("input[name='realCounts']").val(); // 错误的比较方法 i

C语言中两位ASCLL码可以表示汉字

最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ********************************************************************** 参考资料一:http://zhidao.baidu.com/link?url=YDoT2OLdKEElDQ86Ce_wEtKt9Nrn2yJ8TIb9JkasvaLvi8D66RRwSvxn2DkFRVM_OOnq4fCoJPA-19AmpPeypa ?"206 210