c语言循环结构比较大小Q,呵呵,问一个C语言顺序、选择、循环结构的问题。

匿名用户

1级

2013-11-22 回答

1. if ( a>b ) if ( c>b ) if ( c

可以看作一个条件语句:if ( a>b ) ...,后面的语句if ( c>b ) if ( cb条件成立时被执行;由于a>b条件成立,执行if ( c>b ) if ( cb ) ...,当c>b不成立时,不会去执行if ( c

if ( a>b ) { if ( c>b ) { if ( c

2. if ( a>b ) if ( b>c ) x=1; else x=2;这句要分析x=1和x=2的条件。

x=1:如果a>b成立且b>c成立,(a>b如果不成立后面的if语句就不会被执行导致x不会被赋值)

x=2:如果a>b成立且b<=c成立。

同理分析A~D中的条件,即可得到结论。

A.是这个条件语句的正确变形,等价于原语句(原语句因为条件a>b成立后只执行一个if语句所以省略了这个大括号)

B.if ( a<=b ) ; else if ( b>c ) x=1; else x=2;相当于原语句的

if ( a>b ) { if ( b>c ) x=1; else x=2; } else ;逻辑改写,这个也是等价的,如果感觉复杂,可以从x=1和x=2的条件来分析。

C.由于x=2的情况比原语句多了,所以不等价,原语句a<=b时什么也不做,现在语句都归入else的情况了。

D.从x=1和x=2的条件来判断,与原语句相同。

【例5】while ( --x>6 ) printf("*");相当于while ( x--,x>6 ) printf("*");

x=8,x--=7,x>6成立,累计输出: *

x=7,x--=6,x>6不成立,累计输出: *,结束循环,这题就是要搞清判断--x>6等同于先将x--执行了再进行判断x>6是否成立

【例6】同理for ( k=2;++k<4;k++ ) ++k;可写为:for ( k=2;k++,k<4;k++ ) k++;

3. for ( k=4;k>0;k-- ) { break; --k; }大括号表示其中的内容属于for语句的循环体

相当于:

k=4;

LOOP:  if ( k>0 )

{ break; //相当于 goto OUTLOOP;

--k;

goto LOOP;

}

OUTLOOP:

先执行的是赋值语句k=4;然后判断k>0,成立执行大括号中的第1语句break;是为跳出for语句,结果是循环体中后面语句不会被执行,k--;也不会被执行而结束循环。k=4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值