约分最简式
题目:分数可以表示为分子/分母的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
解析:首先输入分子和分母,通过if()语句判断分子和分母哪个大,如果分子大于分母(或分母大于分子),进行for循环,找到能整除a和b的数,进行约分,最后输出最简约分数。
#include<stdio.h>
int main(){
int i,a,b;
printf("请输入一个分数:");
scanf("%d/%d",&a,&b);
if(a==0){ //如果分子为0,则直接输出0
printf("0");
return 0;
}
if(a>=b){ //如果分子大于或等于分母
for(i=b;i>0;i--){
if(a%i==0&&b%i==0){
a=a/i;
b=b/i;
}
}
printf("%d/%d",a,b);
}
else //如果分子小于分母
{
for(i=a;i>0;i--){
if(a%i==0&&b%i==0){
a=a/i;
b=b/i;
}
}
printf("%d/%d",a,b);
}
return 0;
}
结果测试:
请输入一个分数:66/120
11/20注意:分子大于分母时,for循环要从分母数开始(分母大于分子时,for循环要从分子开始)而不是从1开始。如果从1开始循环,可能最后不是最简约分式。例如4/8:
if(a>=b){
for(i=1;i<=b;i++){
if(a%i==0&&b%i==0){
a=a/i;
b=b/i;
}
}
printf("%d/%d",a,b);
}
else
{
for(i=1;i<=a;i++){
if(a%i==0&&b%i==0){
a=a/i;
b=b/i;
}
}
printf("%d/%d",a,b);
}测试结果:
请输入一个分数:4/8
2/4版权声明:本文为Sjuanye原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。