3/18分数

蓝桥杯真题:分数

填空题:1/1+1/2+1/4+1/8+⋯每项是前一项的一半,如果一共有 20 项,求这个和是多少,结果用分数表示出来。类似:3/2,当然,这只是加了前 2 项而已。分子分母要求互质。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        // 分子分母由1开始
        int fz = 1;
        int fm = 1;
        // 循环计算
        for(int i = 1; i < 20; i++){
          // 后一分母是前一分母的2倍
          fm *= 2;
          // 计算:3/2,7/4,15/8
          // 分子变化为:后分子=前分子+后分母
          fz += fm;
        }
        System.out.println(fz+"/"+fm);
        scan.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是代码实现: ```c++ #include <iostream> using namespace std; // 求最大公因数 int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } class Fraction { private: int numerator; // 分子 int denominator; // 分母 public: Fraction() { // 默认构造函数 numerator = 0; denominator = 1; } Fraction(int a, int b = 1) { // 构造函数 if (b < 0) { // 负数情况,分子分母同号 a = -a; b = -b; } int d = gcd(abs(a), abs(b)); // 求最大公因数 numerator = a / d; denominator = b / d; } // 重载运算符= Fraction operator=(const Fraction& f) { numerator = f.numerator; denominator = f.denominator; return *this; } // 重载运算符+ Fraction operator+(const Fraction& f) const { int a = numerator * f.denominator + denominator * f.numerator; int b = denominator * f.denominator; return Fraction(a, b); } // 重载运算符- Fraction operator-(const Fraction& f) const { int a = numerator * f.denominator - denominator * f.numerator; int b = denominator * f.denominator; return Fraction(a, b); } // 重载运算符* Fraction operator*(const Fraction& f) const { int a = numerator * f.numerator; int b = denominator * f.denominator; return Fraction(a, b); } // 重载运算符/ Fraction operator/(const Fraction& f) const { int a = numerator * f.denominator; int b = denominator * f.numerator; return Fraction(a, b); } // 输出结果 void display() const { int a = numerator; int b = denominator; int d = gcd(abs(a), abs(b)); // 求最大公因数 a = a / d; b = b / d; if (b == 1) { // 分母为1,只输出分子 cout << a << endl; } else if (abs(a) >= b) { // 带分数 cout << a / b << " " << abs(a) % b << "/" << b << endl; } else { // 真分数 cout << a << "/" << b << endl; } } }; int main() { Fraction x, y, result; cout << "Input x: "; cin >> x.display(); cout << "Input y: "; cin >> y.display(); result = x + y; cout << "x+y="; result.display(); result = x - y; cout << "x-y="; result.display(); result = x * y; cout << "x*y="; result.display(); result = x / y; cout << "x/y="; result.display(); return 0; } ``` 注:以上代码考虑了分母为负数的情况,分子、分母都除以了它们的最大公因数,输出结果为最简分数或带分数形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值