两个for语句是怎么执行的
for(i=0;i<k-1;i++)for(j=i+1;j<k;j++)if(b[i]>b[j]){m=b[i];b[i]=b[j];b[j]=m}请帮我讲一下这段程序的...
for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
if(b[i]>b[j])
{m=b[i];b[i]=b[j];b[j]=m}
请帮我讲一下这段程序的执行顺序是怎么样的?
我想问的是两个for是怎么执行的,两个for有什么关系,如i=0时,执行一次
for(j=i+1;j<k;j++)直到j>k时,再执行第一个for(i=0;i<k-1;i++)将i赋值成1再执行for(j=i+1;j<k;j++)知道循环结束,是这样执行的吗?为什么我将第二个for语句去掉程序仍成立???
如果看不明白请给我举个例子两个for语句是怎么执行的,谢谢了!!!
但是为什么我去掉第二个for语句,程序仍然正确,第二个for语句是不是没用啊?完整程序如下。。。
main()
{
int a[20],b[20],i,j,k,m;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
k=0;
for(i=0;i<20;i++)
{for(j=2;j<a[i]-1;j++)
if(a[i]%j==0) break;
if(j>=a[i]-1)
{b[k]=a[i];k++;}
}
for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
if(b[i]>b[j])
{m=b[i];b[i]=b[j];b[j]=m;}
for(i=0;i<k;i++)
printf("%5d",b[i]);
pritnf("\n");
}
(1)请说一下与k有关的程序
(2)然后就是for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
为什么去掉第二个for程序仍然正确,是不是第二个for语句多余啊?
(3)后面的排序程序用的什么方法是“选择法”还是“冒泡法”,我看不出来。。
谢谢。。。 展开
for(j=i+1;j<k;j++)
if(b[i]>b[j])
{m=b[i];b[i]=b[j];b[j]=m}
请帮我讲一下这段程序的执行顺序是怎么样的?
我想问的是两个for是怎么执行的,两个for有什么关系,如i=0时,执行一次
for(j=i+1;j<k;j++)直到j>k时,再执行第一个for(i=0;i<k-1;i++)将i赋值成1再执行for(j=i+1;j<k;j++)知道循环结束,是这样执行的吗?为什么我将第二个for语句去掉程序仍成立???
如果看不明白请给我举个例子两个for语句是怎么执行的,谢谢了!!!
但是为什么我去掉第二个for语句,程序仍然正确,第二个for语句是不是没用啊?完整程序如下。。。
main()
{
int a[20],b[20],i,j,k,m;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
k=0;
for(i=0;i<20;i++)
{for(j=2;j<a[i]-1;j++)
if(a[i]%j==0) break;
if(j>=a[i]-1)
{b[k]=a[i];k++;}
}
for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
if(b[i]>b[j])
{m=b[i];b[i]=b[j];b[j]=m;}
for(i=0;i<k;i++)
printf("%5d",b[i]);
pritnf("\n");
}
(1)请说一下与k有关的程序
(2)然后就是for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
为什么去掉第二个for程序仍然正确,是不是第二个for语句多余啊?
(3)后面的排序程序用的什么方法是“选择法”还是“冒泡法”,我看不出来。。
谢谢。。。 展开
展开全部
这两个for是属于包含的关系。
给你个简单的例子,你好理解。
for(int i=0;i<10;i++) (1)
for(int k=0;k<5;k++)(2)
意思是先从i=0开始,然后执行下面的for5次,执行完后,把i加为1,再把下面执行10次,依次类推。总循环次数为50.
你的程序是可以用于排序,具体点是冒泡排序。
比如说b数组为1 3 5 7 2
那么从1开始,依次和后面的3 5 7 2 比较,这是一次大的循环。(1)
而在(1)中又有4个小循环。(2)
给你个简单的例子,你好理解。
for(int i=0;i<10;i++) (1)
for(int k=0;k<5;k++)(2)
意思是先从i=0开始,然后执行下面的for5次,执行完后,把i加为1,再把下面执行10次,依次类推。总循环次数为50.
你的程序是可以用于排序,具体点是冒泡排序。
比如说b数组为1 3 5 7 2
那么从1开始,依次和后面的3 5 7 2 比较,这是一次大的循环。(1)
而在(1)中又有4个小循环。(2)
展开全部
循环语句for按照以下5个步骤执行:
(1)求解初值表达式。
(2)判断循环条件表达式,如果值为真(非0),则执行for语句循环体内部的语句,然后执行第3步;如果值为假(0),则跳出循环,执行第(5)步。
(3)求解更新表达式。
(4)跳回第(2)步重复执行。
(5)循环结束,执行for循环体后面的语句。
(1)求解初值表达式。
(2)判断循环条件表达式,如果值为真(非0),则执行for语句循环体内部的语句,然后执行第3步;如果值为假(0),则跳出循环,执行第(5)步。
(3)求解更新表达式。
(4)跳回第(2)步重复执行。
(5)循环结束,执行for循环体后面的语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的是For循环的嵌套吧,外循环For子句每执行一次,内循环For全部执行。反复如此,直到外循环执行完。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的,你理解的没有问题,外层的for执行第一次,然后里面的for执行完,在执行外层的for,在执行里面的for,如此循环知道外层执行完。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果想知道怎么运行的你可以调试下试试。
如果你想更直观的了解可以加个大括号
如果你想更直观的了解可以加个大括号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询