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语言中表示分数,并从中提取出通用的约分算法。通过编程实现,小明进一步巩固了分数概念和循环结构的应用。