若有定义:int i ,k ;则for循环语句:for(i=0,k=-1;k=1;i++,k++);是(C)

1.若有定义:int i ,k ;则for循环语句:for(i=0,k=-1;k=1;i++,k++);是(C)
A)循环零次 B)循环1次 C)循环无穷多次 D)循环结束条件不合法

2.以下循环体的执行次数是(C)
Void main()
{ int i,j; for(i=0,j=1;i<=j+1;i+=2,j--)printf(“%d\n”,i);}
A)3 B)2 C)1 D)0
请各位贤能人士可以详细写出所得结果的原因。非常感谢~!

第一题:i=0,k=-1是初始化i和k的值,k=1是判断循环结束的条件。
因为k=1表示将1赋值给k,其结果是返回true,所以不管后面i和k怎么变化,每次都会返回true,故循环无穷多次。

第二题:第一次执行循环时,i=0,j=1。i<=j+1成立(因为0<=2成立),所以循环结束后,由i+=2可知,i变成了2,由j--可知j变成了0。
执行第二次循环时,i<=j+1不成立(因为2<=1不成立),所以循环结束,故只执行了一次。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-08
第一题循环无数次是因为k=1,也就是永真,即表达式2永远成立,如果将k=1改为k==1,则该for循环将循环0次。
第二题很简单,第一次循环i=0,0<2,所以循环一次,接着i变为2,j变为0,因为2不小于1,所以结束for循环,故只循环一次。
有不理解可再问。。就是没有悬赏分有点不厚道。。。呵呵
第2个回答  2010-02-08
第一个如果可以这么理解的话:循环条件为真循环即进行......不知道是不是
第二个... 不能理解
第3个回答  2020-05-02
第一题:i=0,k=-1是初始化i和k的值,k=1是判断循环结束的条件。
因为k=1表示将1赋值给k,其结果是返回true,所以不管后面i和k怎么变化,每次都会返回true,故循环无穷多次。
第二题:第一次执行循环时,i=0,j=1。i<=j+1成立(因为0<=2成立),所以循环结束后,由i+=2可知,i变成了2,由j--可知j变成了0。
执行第二次循环时,i<=j+1不成立(因为2<=1不成立),所以循环结束,故只执行了一次。
相似回答