首页 > 试题广场 >

以下程序的输出结果是

[单选题]

以下程序的输出结果是

public class Print{
	static boolean out(char c){
		System.out.print(c);
		return true;
	}
	public static void main(String[] argv){
		int i = 0;
		for(out('A');out('B') && (i<2);out('C')){
			i++;
			out('D');
		}
	}
}


  • ABDCBDCB
  • BCDABCD
  • 编译错误
  • 运行错误
推荐
答案选A  解释:这道题考for循环执行顺序  参看 http://jingyan.baidu.com/article/7f766dafaa6ee04101e1d0e6.html

for循环的执行顺序用如下表达式:
for(expression1;expression2;expression3){
expression4;
}
执行的顺序应该是:
1)第一次循环,即初始化循环。
首先执行表达式expression1(一般为初始化语句);再执行expression2(一般为条件判断语句),判断expression1是否符合expression2的条件;如果符合,则执行expression4,否则,停止执行;最后执行expression3。

2)第N(N>=2)次循环
首先执行expression2,判断在expression3是否符合在expression2要求;如果符合,则继续执行在expression4,否则,停止执行。最后执行在expression3。如此往复,直至expression3不满足在expression2条件是为止。

总结:
总的来说,执行的顺序是一致的。先条件判断(expression2),再函数体执行(expression4),最后for执行(expression3)。往复......区别在于,条件判断的对象。第一次判断时,对象为初始化语句(expression1),后续的判断对象为执行后的结果(expression3)。
编辑于 2017-01-09 20:02:21 回复(0)
考察for循环执行顺序
发表于 2017-02-06 22:36:53 回复(0)
答案选A
for循环执行开始
首先执行out('A') 输出A;
然后执行out('B')&&(i<2)此时输出B,i=0,判断条件为真,执行for循环的循环体;
执行i++,out('D'),输出D i=1;
执行out('C'),输出C 
然后执行out('B')&&(i<2) 此时输出B,i=1 判断条件为真 ,执行for循环的循环体;
执行i++,out('D'),输出D i=2;
执行out('C'),输出C 
然后执行out('B')&&(i<2) 此时输出B,i=2,不满足i<2  判断条件为假 ,跳出循环;
所以结果为ABDCBDCB

发表于 2016-12-14 18:42:07 回复(6)
其实这题考察的是for(int i=0;i<10;i++){}循环的执行顺序:
1.int i=0;初始化这一步只执行一次;
2.i<10;进行条件判断;条件达成返回true 否则false不往下执行,跳出for循环圈
3.i++ ;  是最后执行的,当循环体内的代码执行完它才进行赋值。
发表于 2017-01-06 10:12:04 回复(0)
打印是换行的,哪有答案!
发表于 2018-07-12 09:37:53 回复(4)
简单的for循环执行流程,不难
发表于 2017-05-26 00:02:36 回复(0)

A

for(a;b;c){d}

对于for循环,第一次进来先执行性a,然后判断b,如果b通过则执行d,然后执行c再判断b, 如果b通过则执行c,然后执行d再判断b---

发表于 2017-04-03 21:30:36 回复(0)
for(expression1;expression2;expression3){expression4;} 执行的顺序: 1)第一次循环:执行表达式expression1(初始化语句),再执行expression2(条件判断语句),如果true则执行expression4,否则停止;最后执expression3。 2)第N(N>=2)次循环:首先执行expression2,为true则继续执行在expression4,否则停止执行;最后执行在expression3。
发表于 2021-10-14 04:41:35 回复(0)
其实这题考察的是for(int i=0;i<10;i++){}循环的执行顺序:
1.int
i=0;初始化这一步只执行一次;
2.i<10;进行条件判断;条件达成返回true
否则false不往下执行,跳出for循环圈
3.i++ ;  是最后执行的,当循环体内的代码执行完它才进行赋值。
发表于 2020-09-27 11:26:11 回复(0)
初始化语句也可以输出并有返回值!!
编辑于 2019-10-26 11:02:49 回复(0)
&&难道不是短路与吗 程序应该一直循环下去才对啊
发表于 2021-06-16 16:56:16 回复(1)
我不明白,out('A');与out('C');这两个地方为什么不报错
发表于 2020-01-11 01:03:00 回复(1)
………main(String[] argv) 不应该是编译出错?
发表于 2019-03-19 09:33:27 回复(2)
A
发表于 2017-01-09 11:41:37 回复(0)
对于循环for(exp1;exp2;exp3){exp4}来说:1.exp1不一定就是赋值语句 2.exp3是循环体内exp4执行完后才执行的3.每次exp3执行完后都需要执行exp2来确定是否执行exp4
发表于 2018-12-20 10:21:24 回复(0)
首先,main 方法被调用。
i 初始化为 0。
for 循环开始执行。
out('A') 被调用,输出字符 'A'。
out('B') 被调用,输出字符 'B'。
(i<2) 的判断为真,进入循环体。
out('D') 被调用,输出字符 'D'。
i 增加为 1。
out('C') 被调用,输出字符 'C'。
循环继续执行。
out('B') 被调用,输出字符 'B'。
(i<2) 的判断为真,进入循环体。
out('D') 被调用,输出字符 'D'。
i 增加为 2。
out('C') 被调用,输出字符 'C'。
循环继续执行。
(i<2) 的判断为假,退出循环。
main 方法执行完毕,程序结束
发表于 2023-11-16 16:55:14 回复(0)
A只输出一遍
发表于 2023-04-03 10:40:41 回复(0)
其实这题考察的是for(int i=0;i<10;i++){}循环的执行顺序: 1.int i=0;初始化这一步只执行一次; 2.i<10;进行条件判断;条件达成返回true 否则false不往下执行,跳出for循环圈 3.i++ ; 是最后执行的,当循环体内的代码执行完它才进行赋值。
发表于 2023-02-21 14:47:18 回复(0)
我去,这种题目,开始分析思路就错了,就是考你for循环的执行顺序
发表于 2021-10-17 12:37:47 回复(0)
很好,涨姿势了
发表于 2021-10-08 14:51:34 回复(0)
我运行了一下,tm居然结果是B
发表于 2021-03-03 13:56:31 回复(1)