for循环后边的if语句为什么不能跟break,求教一下高手!

#include<stdio.h>voidmain(){inta,b;for(a=0;a<10;a++)for(b=0;b<10;b++)if((30+a)*4356+(... #include<stdio.h>
void main()
{
int a,b;
for(a=0;a<10;a++)
for(b=0;b<10;b++)
if((30+a)*4356+(b*10+8)*832==196360)break;
printf("a=%d,b=%d\n",a,b);
}

最后输出的竟然是a=10,b=10;
展开
 我来答
expection1985
推荐于2016-03-02 · TA获得超过286个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:155万
展开全部
因为“if((30+a)*4356+(b*10+8)*832==196360)break;”中的break是跳出 for(b=0;b<10;b++)这个循环。而外循环for(a=0;a<10;a++)还是继续执行的。
我帮你改一下程序即可:
#include<stdio.h>
void main()
{
int a,b,c = 0;
for(a=0;a<10;a++)
{ for(b=0;b<10;b++)
{ if((30+a)*4356+(b*10+8)*832==196360)
{
c= 1;
break;
}
}
if (c == 1) break;
}
printf("a=%d,b=%d\n",a,b);
}
结果是 a= 4 b=5
caizhenghu
2011-03-11
知道答主
回答量:13
采纳率:0%
帮助的人:2.4万
展开全部
这个肯定输出是10,因为break只跳出了内部的循环,外面的循环没有跳出来。假如从内部的循环跳出来但a<10条件成立,程序又会进入内部的循环,只有当a=10,b=10,也就是说两个循环的条件都不成立了,程序就走到输出语句了,这时候输出的当然是10了。你在break的后面再加一个break,也就是这样
if((30+a)*4356+(b*10+8)*832==196360)break;
break;
原因是这个,但这个方法能不能行没有验证,你试试看,我没试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户82818
2011-03-11 · TA获得超过385个赞
知道答主
回答量:373
采纳率:100%
帮助的人:344万
展开全部
个变量,判断一下。

int flag=1;
for(表达式1;表达式2&&flag;表达式3) /*加一个变量*/
for(表达式4;表达式5;表达式6)
} /*break之前,将flag置0*/
语句二;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
warch1986
2011-03-11
知道答主
回答量:16
采纳率:0%
帮助的人:7.3万
展开全部
break; —— 退出此次循环,执行下一次循环,你用break后,即使得到解,也会循环玩,a,b最后都为10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
馃悰姣涙瘺铏Al
2011-03-11 · TA获得超过501个赞
知道答主
回答量:103
采纳率:0%
帮助的人:104万
展开全部
应为你的表达式不对,方程无解,怎么会有值。。

#include<stdio.h>
void main()
{
int a,b;
for(a=0;a<1000;a++)
for(b=0;b<1000;b++)
if((30+a)*4356+(b*10+8)*832==196360) printf("a=%d,b=%d\n",a,b);

getchar();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式