c语言中break怎么一次退出多个循环

#include"stdio.h"#include"math.h"intmain(void){inti,k;floatj;for(i=100;i<=200;i++){j=... #include "stdio.h"
#include "math.h"
int main(void)
{
int i,k;
float j;
for ( i = 100; i <= 200; i++)
{
j = sqrt(i);
for ( k=2; k <= j; k++)
{
if (i % k == 0)
{
break;
}
}
printf("%d " , i );
}
return 0;
}
在上面如果我想让if成立时,既退出第二个for,又让第一个for在执行printf之前重新进行新一轮的循环,即相当于在printf之前执行continue。有什么办法么?
展开
 我来答
吉祥二进制
高粉答主

推荐于2016-08-09 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84560

向TA提问 私信TA
展开全部

1、break语句退出循环时,它将退出离它最近的那层循环,无法退出多个循环。比如下面的代码,定义一个两维数组,不希望输出第2行。

#include<stdio.h>
int main()

int a[3][3] = { {1,2,3}, //第一行
              {4,5,6},   //第二行
              {7,8,9}    //第三行
};
for (int i=0; i!=3; ++i) {
for (int j=0; j!=3; ++j)
{
if (a[i][j] == 4) break; //进入第二行时break跳出,只跳出离它最近的for循环
printf("%d\n", a[i][j]);
}
}
return 0;
}

2、要退出多重循环,可以使用goto语句

#include <stdio.h>
int main()
{
for (; ; ) {
while (1)
{
goto end;
}
}
end:
printf("跳出轮回!\n");
return 0;
}
avalonsz
推荐于2017-11-26 · TA获得超过1275个赞
知道小有建树答主
回答量:719
采纳率:33%
帮助的人:371万
展开全部
简单的设个人工标志位吧。
#include "stdio.h"
#include "math.h"
int main(void)
{
int i,k;
char aaa=0;
float j;
for ( i = 100; i <= 200; i++)
{
j = sqrt(i);
for ( k=2; k <= j; k++)
{
if (i % k == 0)
{
aaa=1;//要break之前,把标志位置1.
break;
}
}
if(aaa==1)//如果标志位等于1,说明已经经历过break了。
{
aaa=0;//把标志位清零,为下一次做准备
continue;//这是你的要求,break以后就continue
}
printf("%d " , i );
}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuzewei_
2013-09-22 · TA获得超过154个赞
知道答主
回答量:86
采纳率:0%
帮助的人:78.9万
展开全部
有两个办法:
1、使用goto语句。但是不推荐使用
2、设置一个标志flag,
#include "stdio.h"
#include "math.h"
int main(void)
{
int i,k;
float j;
int flag = 0;
for ( i = 100; i <= 200; i++)
{
j = sqrt(i);
flag = 0; //每次进入第二个for循环之前初始化flag = 0;
for ( k=2; k <= j; k++)
{
if (i % k == 0)
{
flag = 1; //为1表示退出第二个for循环并且在printf之前continue
break;
}
}
if(flag == 1) continue;//判断是否continue
printf("%d " , i );
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
freeeeeewind
2013-09-22 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1282万
展开全部
#include "stdio.h"
#include "math.h"
int main(void)
{
int i,k;
int flag = 0; //增加一个标志变量
float j;
for ( i = 100; i <= 200; i++)
{
j = sqrt(i);
for ( k=2; k <= j; k++)
{
if (i % k == 0)
{
flag = 1;
break;
}
flag = 0;
}

//标志为真则continue
if(flag) continue;

printf("%d " , i );
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友be1617a
2013-09-22 · TA获得超过356个赞
知道小有建树答主
回答量:142
采纳率:75%
帮助的人:49.5万
展开全部
#include "stdio.h"
#include "math.h"
int main(void)
{
int i,k;
float j;
for ( i = 100; i <= 200; i++)
{
j = sqrt(i);
for ( k=2; k <= j; k++)
{
if (i % k == 0)
{
break;
}
}
if (k>j) printf("%d " , i ); //增加条件判断,跳过printf
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式