坑点
给定的两个分数并没有说明哪个大,应先判断。
#include<stdio.h>
struct fenshu{
int fenzi;
int fenmu;
};
bool cmp(struct fenshu a,struct fenshu b){
return a.fenzi*b.fenmu>a.fenmu*b.fenzi;
}
int gcd(int a,int b){
if(b%a==0) return a;
else return gcd(b,a%b);
}
int main(){
struct fenshu a,b,c;
int num;
int n[1010];
int count=0;
scanf("%d/%d %d/%d %d",&a.fenzi,&a.fenmu,&b.fenzi,
&b.fenmu,&num);
if(cmp(a,b)){
struct fenshu temp;
temp=a;
a=b;
b=temp;
}
c.fenmu=num;
for(c.fenzi=1;c.fenzi<=c.fenmu-1;c.fenzi++){
if(cmp(c,a)&&cmp(b,c)){
if(gcd(c.fenmu,c.fenzi)==1){
n[count++]=c.fenzi;
}
}
else{
continue;
}
}
for(int i=0;i<count;i++){
printf("%d/%d",n[i],c.fenmu);
if(i!=count-1) printf(" ");
}
}
本文介绍了一个关于分数比较及枚举所有位于两个分数之间的最简分数的算法实现。通过定义结构体来表示分数,并使用函数进行分数大小的比较及求最大公约数,最终输出指定区间内的所有最简分数。
4617

被折叠的 条评论
为什么被折叠?



