1062. 最简分数(20)

1062. 最简分数(20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

一个分数一般写成两个整数相除的形式:N/M,其中M不为0。最简分数是指分子和分母没有公约数的分数表示形式。

现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数。

输入格式:

输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔。题目保证给出的所有整数都不超过1000。

输出格式:

在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间以1个空格分隔。行首尾不得有多余空格。题目保证至少有1个输出。

输入样例:
7/18 13/20 12
输出样例:
5/12 7/12

提交代


/*
先通分操作再月份操作即可 
*/ 
#include<stdio.h>   
double a,b,c,d,e;   
double a1,a2,a3;  
  
int Gcd(int  a,int b){  
    return a%b==0 ? b : Gcd(b,a%b);  
}  
  
int main(){  
    scanf("%lf/%lf",&a,&b); a1 = a/b;  
    scanf("%lf/%lf",&c,&d); a2 = c/d;  
    if(a1>a2){  
        double temp = a1;  
        a1 = a2;  
        a2 = temp;  
    }  
      
    scanf("%lf",&e);  
  
    int flag = 1;  
    for(double i=1 ;i<e ;i++){  
        a3 = i/e;  
        if(a1<a3&&a3<a2){  
            if(Gcd(i,e)==1){  
                if(flag){  
                flag = 0;  
                    printf("%.0f/%.0f",i,e);  
                }else{  
                    printf(" %.0f/%.0f",i,e);  
                }  
            }  
              
        }  
    }  
    printf("\n");   
      
    return 0;  
}  


C语言中,我们可以创建一个程序来计算一组分数的总和,并将其简化为最简形式。通常分数由分子和分母表示,例如`3/5`。首先,我们需要存储每个分数,然后将它们加在一起。最后,可以使用辗转相除法(也叫欧几里得算法)来找到最大公约数(GCD),从而简化分数。 下面是一个简单的示例程序: ```c #include <stdio.h> #include <stdlib.h> // 引入求最大公约数函数 // 函数来计算两个整数的最大公约数 int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); } // 函数用于化简分数 void simplify_fraction(int *num, int *den) { int temp = gcd(*num, *den); *num /= temp; *den /= temp; } // 主函数 int main() { int n, i; float scores[100], total = 0; // 假设有最多100个分数 printf("请输入分数的数量:"); scanf("%d", &n); for(i = 0; i < n; i++) { printf("请输入第%d个分数(分子/分母形式,如 3/5):", i + 1); char input[50]; scanf("%s", input); // 获取用户输入的分数字符串 sscanf(input, "%d/%d", &scores[i].num, &scores[i].den); total += scores[i].num / scores[i].den; // 将分数转换成小数并累加 } printf("总分数是:%.2f\n", total); // 简化每个分数并输出 for(i = 0; i < n; i++) { simplify_fraction(&scores[i].num, &scores[i].den); printf("第%d个分数简化后是:%.2f/%.2f\n", i + 1, scores[i].num, scores[i].den); } return 0; } ``` 在这个程序中,我们首先获取用户的分数输入,然后计算总和,最后对每个分数进行化简。注意,这个程序假设输入的分数都是合法的,实际应用中需要增加错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值