有关C语言For循环跳出的问题!

看这两个程序:求满足A*B=N,使A+B最小,且A,B(A<=B)为正整数的A的值。输入正整数N输出满足条件的A第一个#include<stdio.h>#include<... 看这两个程序:

求满足A*B=N,使A+B最小,且A,B(A<=B)为正整数的A的值。

输入正整数N

输出满足条件的A
第一个
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,x,y,a,b;
scanf("%d",&n);
x=sqrt(n);
y=sqrt(n);
for(a=x; a>=0; a--)
{
for(b=y; b<=n; b++)
{
if(n==a*b&&n%a==0&&n%b==0&&a+b>=2*x)
break;
}
if(n==a*b&&n%a==0&&n%b==0&&a+b>=2*x)
break;
}

printf("%d\n",a);
return 0;
}
第二个
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,x,y,a,b;
scanf("%d",&n);
x=sqrt(n);
y=sqrt(n);
for(a=x; a>=0; a--)
{
for(b=y; b<=n; b++)
{
if(n==a*b&&n%a==0&&n%b==0&&a+b>=2*x)
printf("%d\n",a);

}
}

return 0;
}
为什么第一个对,第二个错误呢?他们有什么区别
展开
 我来答
云淡风轻in苏州
2014-11-04 · TA获得超过599个赞
知道小有建树答主
回答量:418
采纳率:0%
帮助的人:557万
展开全部
简单说来,一个break只能跳出一层循环,你第一个方法,连续break两次,条件都一样,可以从两层循环里跳出来。
第二个跳出一层循环后,还在外层循环内,所以继续循环,还会打印其他的结果,另外你输出的地方也不一样。
更多追问追答
追问
第二个不可以让他直接在内层循环输出吗?
追答
按照题目要求,最终应该只会输出1个值,你在内存循环输出,会输出多个结果的。
你非要在内层循环输出你就在if里写:

if(n==a*b&&n%a==0&&n%b==0&&a+b>=2*x)
{
printf("%d\n",a);
return 0;
}
通过return直接退出程序。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式