c语言编程笔录

首页 >   > 笔记大全

笔记大全

c语言编程从1 2分之一 到100分之一

更新时间:2023-06-15

题目背景

小学一年级学生小明学习了分数的概念,老师留了一道作业:编程从1 2分之一 到100分之一。小明不仅要学会在程序中如何表示分数,还需要掌握如何循环输出。

解决方法

1. 浮点数表示分数

浮点数可以近似地表示分数,因此可以用float类型变量表示分子和分母后做除法操作,输出结果即为分数。

    float numerator = 1;
    float denominator = 2;
    float fraction = numerator/denominator;
    printf("分数为:%f\n", fraction);

2. 整型表示分数

如果浮点数的方式过于繁琐,可以使用整型表示分子和分母并求最大公约数简化代码。由于分子分母的最大公约数是1,1到100的分数可以用一个循环实现。

    int numerator, denominator, gcd;
    for(numerator = 1; numerator <= 100; numerator++) {
        denominator = 2;
        gcd = getGcd(numerator, denominator);
        printf("%d/%d\n", numerator/gcd, denominator/gcd);
    }
    int getGcd(int a, int b) {
        return (b == 0) ? a : getGcd(b, a % b);
    }

3. 分数类表示分数

使用面向对象的思想,定义一个分数类Fraction,将分子和分母作为类的成员变量,并实现结果输出的方法。在主函数中循环调用该方法输出1到100的分数。

    class Fraction {
        int numerator;
        int denominator;
    public:
        Fraction(int numerator, int denominator) {
            this->numerator = numerator;
            this->denominator = denominator;
        }
        void print() {
            int gcd = getGcd(numerator, denominator);
            printf("%d/%d\n", numerator/gcd, denominator/gcd);
        }
        int getGcd(int a, int b) {
            return (b == 0) ? a : getGcd(b, a % b);
        }
    };
    for(int numerator = 1; numerator <= 100; numerator++) {
        Fraction fraction(numerator, 2);
        fraction.print();
    }

总结

本题通过浮点数、整型和面向对象三种方式演示了如何在C语言中表示分数,并从中提取出通用的约分算法。通过编程实现,小明进一步巩固了分数概念和循环结构的应用。