C程序。。。弄不懂啊。

来源:百度知道 编辑:UC知道 时间:2024/04/30 12:55:04
main()
{
int num1,num2,i,min;
scanf("%d%d",&num1,&num2);
min=num1<num2?num1:num2;
for(i=min/2;i>0;i--)
if(num1%i==0&&num2%i==0) break;
printf("最大公约数为%d\n",i);
}
min=num1<num2?num1:num2;这句是什么意思呀?
if(num1%i==0&&num2%i==0)这句呢?

min=num1<num2?num1:num2;这句可以拆开来理解
拆成:if(num1<num2)min=num1;
else min=num2;
if(num1%i==0&&num2%i==0)这句意思就是如果num1和num2都能被i整除
&&是逻辑与
%是取余运算

%i==0&&num2%i==0) break%i==0&&num2%i==0) break

第一句:如果num1<num2 min=num1 (就是:号前面的数) 否则min=num2
第二句:如果num1能整除i而且num2能整除i,执行if后面的语句