C语言最大公约数最小公倍数 5
#include"stdafx.h"main(){inta,b,num1,num2,temp;printf("请输入两个数,中间用英文逗号:\n");scanf("%d,...
#include "stdafx.h"
main()
{
int a,b,num1,num2,temp;
printf("请输入两个数,中间用英文逗号:\n");
scanf("%d,%d",&num1,&num2);
if(num1!=0&&num1>0&&num2!=0&&num2>0)
{temp=num1;
num1=num2;
num2=temp; }
else{
printf("请输入两个正确的数,中间用英文逗号:\n");
scanf("%d,%d",&num1,&num2); }
a=num1;
b=num2;
while(b!=0)
{temp=a%b;
a=b;
b=temp; }
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",num1*num2/a);
}
if的
temp=num1;
num1=num2;
num2=temp;
有什么作用?去掉显示一样 展开
main()
{
int a,b,num1,num2,temp;
printf("请输入两个数,中间用英文逗号:\n");
scanf("%d,%d",&num1,&num2);
if(num1!=0&&num1>0&&num2!=0&&num2>0)
{temp=num1;
num1=num2;
num2=temp; }
else{
printf("请输入两个正确的数,中间用英文逗号:\n");
scanf("%d,%d",&num1,&num2); }
a=num1;
b=num2;
while(b!=0)
{temp=a%b;
a=b;
b=temp; }
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",num1*num2/a);
}
if的
temp=num1;
num1=num2;
num2=temp;
有什么作用?去掉显示一样 展开
2个回答
展开全部
无用,if语句判断逻辑也不妥,改如下较好——
int main(void){
int x,num1,num2,temp;
while(1){
printf("请输入两个数,中间用英文逗号:\n");
if(scanf("%d,%d",&num1,&num2),num1>0 && num2>0){
x=num1*num2;
break;
}
printf("输入错误,重新输入:");
}
while(num2!=0){
temp=num1%num2;
num1=num2;
num2=temp;
}
printf("最大公约数:%d\n",num1);
printf("最小公倍数:%d\n",x/num1);
return 0;
}
更多追问追答
追答
“不能判断负数”是什么意思?num1和num2只要有一个是负数就为“假”,只有都为正数时才为“真”。我是说像num1!=0&&num1>0这种逻辑肯定不妥,num1>0成立了num1!=0还有什么意义?所以用一个num1>0就够了。当然num1!=0&&num1>0效果是能达到的……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询