正确答案:
#include
int gcd(int a,int b){
return !b ? a:gcd(b,a%b);
}
int main(){
int n,a,b,c,d,p,q,m;
scanf("%d",&p);
while(p--){
scanf("%d%d%d%d",&a,&b,&c,&d);
n=b*d;
m=a*d+b*c;
q=gcd(n,m);
printf("%d %d\n",m/q,n/q);
}return 0;
}
!b ? a:gcd(b,a%b);和while(p--)分别是什么意思
关于后面的while语句,楼上都已经说了,就是循环。
!b ? a:gcd(b,a%b);这一句是一个三元表达式,也有人叫三目运算符、三元运算符,名字不重要。
这个语句的格式:“表达式?结果A:结果B”
根据这个,你上面的这个就是,b=0时,直接返回a,否则返回gcd(b,a%b)的结果
前面那句是求最大公因数的,后面那句的意思是当p--为真(不等于0)时循环
前面那句是求a和b的最大公因数的,后面的那句是判断while语句是否执行的条件,
当P--大于等于1时候,执行while循环语句,当不满足大于1时候,就跳出while循环。