
代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//最大公约数1034
int cmp(const void *a,const void *b){
return *(int *)a-*(int *)b;//升序
}
int gys(int a,int b){ //公约数
int y=a%b;
while(y){
a=b;
b=y;
y=a%b;
}
return b;
}
int main()
{
int n1,m1,n2,m2,k;
scanf("%d/%d",&n1,&m1);
scanf("%d/%d",&n2,&m2);
scanf("%d",&k);
n1=n1*k;//m1不变
n2=n2*k;
//寻找最大公约数
if(gys(n1,m1)!=m1)//存在公约数 才进行除法
{
int gy_1=gys(n1,m1);
n1=n1/gy_1;//7*2/3 分子分母化为最简
m1=m1/gy_1;
}
if(gys(n2,m2)!=m2){
int gy_2=gys(n2,m2);
n2=n2/gy_2;
m2=m2/gy_2;
}
//14/3和39/5 70/15,117/15
n1=n1*m2;n2=n2*m1;
m1=m1*m2;m2=m1;//通分
int x=0;
int end[10001];//存储符合条件的
// for(iny i=0;i<)
if(n1<n2){
for(int i=n1;n1<n2;n1++){
if(i%m1==0){//能整除
end[x]=i/m1;
x++;
}
}
}
if(n1>n2){
for(int i=n2;n2<n1;n2++){
if(i%m1==0){
end[x]=i/m1;
x++;
}
}
}
int len=x;//能整除的个数代表着end数组的长度
qsort(end,len,sizeof *end,cmp);
for(int i=0;i<len;i++){
printf("%d/%d ",end[i],k);
}
return 0;
}
在devc++中运行时,输入测试案例,无法得到输出,且提交到pta后全部报错,请问我的代码哪里有问题?