关于C语言continue在嵌套循环语句下的作用.
#include<stdio.h>#defineN5#defineM4voidmain(){inta[M][N],i,j,flag,max,maxj,k;printf("...
#include <stdio.h>
#define N 5
#define M 4
void main()
{
int a[M][N],i,j,flag,max,maxj,k;
printf("enter array a: ");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]); //输入一个二维数组
printf("\n");
for(i=0;i<M;i++)
{
max=a[i][0]; //开始假设a[i][0]最大
maxj=0; //将列号0赋给maxj保存
for(j=0;j<N;j++) //找出i行的最大数
if(max<a[i][j])
{
max=a[i][j]; //将本行中最大数赋给max
maxj=j; //将最大数所在列号赋给maxj
}
flag=1; //先假设是鞍点,做个标记
for(k=0;k<M;k++)
if(max>a[k][maxj]) //将最大数与该列元素比较
{
flag=0; //max不是同列中最小,即不是鞍点,使flag=0 标记!
continue;
}
if(flag) //如果flag是1,表示有鞍点
{
printf("the array a 的鞍点是a[%d][%d]=%d\n",i,maxj,max); //输出按点的值和所在位置
break;
}
}
if(!flag) //如果flag为0,表示没有鞍点
printf("Ti is not exist\n");
}
我想请问下对于这个程序中continue到底是结束当前循环之后的语句之后是返回到当前循环还是上一级循环中,又或者是无论如何都返回到第一级循环语句中.
也就是在程序执行到continue后是k++,还是i++
如果执行到continue后是k++, 完全没有意义啊.但是如果按照书上的解释和例子来看是结束本次循环,接着进行下一次是否执行循环的判定,但是在这个嵌套循环中理解起来就有点模糊了 展开
#define N 5
#define M 4
void main()
{
int a[M][N],i,j,flag,max,maxj,k;
printf("enter array a: ");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]); //输入一个二维数组
printf("\n");
for(i=0;i<M;i++)
{
max=a[i][0]; //开始假设a[i][0]最大
maxj=0; //将列号0赋给maxj保存
for(j=0;j<N;j++) //找出i行的最大数
if(max<a[i][j])
{
max=a[i][j]; //将本行中最大数赋给max
maxj=j; //将最大数所在列号赋给maxj
}
flag=1; //先假设是鞍点,做个标记
for(k=0;k<M;k++)
if(max>a[k][maxj]) //将最大数与该列元素比较
{
flag=0; //max不是同列中最小,即不是鞍点,使flag=0 标记!
continue;
}
if(flag) //如果flag是1,表示有鞍点
{
printf("the array a 的鞍点是a[%d][%d]=%d\n",i,maxj,max); //输出按点的值和所在位置
break;
}
}
if(!flag) //如果flag为0,表示没有鞍点
printf("Ti is not exist\n");
}
我想请问下对于这个程序中continue到底是结束当前循环之后的语句之后是返回到当前循环还是上一级循环中,又或者是无论如何都返回到第一级循环语句中.
也就是在程序执行到continue后是k++,还是i++
如果执行到continue后是k++, 完全没有意义啊.但是如果按照书上的解释和例子来看是结束本次循环,接着进行下一次是否执行循环的判定,但是在这个嵌套循环中理解起来就有点模糊了 展开
4个回答
TableDI
2024-07-18 广告
2024-07-18 广告
`VLOOKUP` 函数是 Excel 中一个常用的函数,用于在表格或区域中查找值,并返回该值所在行中指定列的对应值。当需要匹配两个表格的相同数据时,可以利用 `VLOOKUP` 来实现。具体来说,首先确保两个表格中有一个共同的列(例如ID...
点击进入详情页
本回答由TableDI提供
展开全部
执行到continue之后,跳出当前循环,即k的循环不做了,继续执行k循环后面的语句,这里就是对flag的判断语句,而后,再继续执行i++,continue与break 都是只能跳出一层循环~多层循环的跳出可以尝试return的用法,或者直接程序结束exit~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(k=0;k<M;k++)
if(max>a[k][maxj]) //将最大数与该列元素比较
{flag=0; //max不是同列中最小,即不是鞍点,使flag=0 标记!
continue;
}
回到 k 循环,做下一个 (k=k+1) 循环
if(max>a[k][maxj]) //将最大数与该列元素比较
{flag=0; //max不是同列中最小,即不是鞍点,使flag=0 标记!
continue;
}
回到 k 循环,做下一个 (k=k+1) 循环
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
鱼鱼爱叶子 说得对执行k++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询