问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

呵呵,问一个C语言顺序、选择、循环结构的问题。

发布网友 发布时间:2022-05-06 13:44

我来回答

3个回答

热心网友 时间:2022-06-30 19:35

if ( a>b ) if ( c>b ) if ( c<x ) x=2; else x=3;

可以看作一个条件语句:if ( a>b ) ...,后面的语句if ( c>b ) if ( c<x ) x=2; else x=3;仅在a>b条件成立时被执行;由于a>b条件成立,执行if ( c>b ) if ( c<x ) x=2; else x=3;部分,你也可以看成这是一个条件语句即if ( c>b ) ...,当c>b不成立时,不会去执行if ( c<x ) ...; else ...;这个语句。对你来说这不是逻辑问题而是条件语句的问题,搞清楚层次关系就好办了:

if ( a>b ) { if ( c>b ) { if ( c<x ) x=2; else x=3; } }

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++;

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


追问呵呵,加百度hi好友更好提问。

热心网友 时间:2022-06-30 19:35

一、可以写成这样,走到第二个if的时候条件不成立所在x值不会变

if(a>b){
if(c>b){
if(c<x){
x=2;

}else{
x=3;

}

}

}
二、1、可以写成这样,C选项的if判断里存在a<=b的情况走到else赋值
if(a>b){
if(b>c){
x=1;

}else{
x=2;
}

}
2、前自减的优先级比比较要高并且成功后返回新值,x会在比较之前变为7,所以会先比较7>6(true)然后6>6(false)结果只输出一次
3、
for(初值k=4,判断++k<4,迭代k++){
循环体++k;

}

k初始为(k=2),先执行循环的判断k在判断前会前自增(k=3),然后执行循环体k(k=4),
然后执行循环的迭代(k=5),最后进入第二次循环,先进行判断判断自增符号比比较优先结果判断前又自增一次(k=6)然后判断false程序结束
三、k初始为4,执行判断为true进入循环break退出循环,结果k不变

总结一下就是
一、if语句if-else语句和for语句的整体都是一条语句
二、在这几个控制结构里边又允许内嵌一条语句,比如
if(判断)
语句
else
语句
又比如在上面的基础上又可以往里面加
if(判断1)
for(初值,判断,迭代)
for循环体

else
if(判断2)
语句2
三、其它语句一般会到第一个分号表示结束,空行不会算在内

四、花括号内的一组语句叫复合语句,会被视为单个语句
if(判断){
随便加语句

}else{
随便加语句

}
五、for和while循环在没花括号的时候循环体至少要有个分号
六、平常就直接用花括号括起来就结了,很少有人采会用那种简写。追问呵呵,上面的回答就提问解答得全面、易懂。你的回答好好,希望以后更好的向你学习。

热心网友 时间:2022-06-30 19:36

问题一,其实就是一个格式的问题,如果写成这样应该更便于理解
if(a>b) //成立
{
if(c>b) //不成立 ,所以根本没执行内部的代码。所以x的值未被改变

{
if(c<x)

{
x=2;

}

else

{
x=3;

}

}
}追问呵呵,加百度hi好友更好提问。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 c语言顺序结构的问题 C语言、顺序结构,求解,很急,求帮忙 C语言 利用顺序结构语句编写程序,用格式控制符打印一下图形 (还有一些题目) C语言顺序结构两道题目求解 C语言顺序结构 C语言小问题,顺序结构 C语言顺序结构程序题目两道求解 国二C语言 顺序结构小题 c语言顺序结构练习题 内酯豆腐可以用来炸成油果吗? 皮肤怎么变白,身体有些地方比较黑!! 我的皮肤天生比较黑,怎么才能变白 我是后天变黑的,如何全身美白? 全身晒得很黑,怎么快速美白? 身体黑怎么变白 宽带猫的默认ip地址是192.168.1.1 路由器的默认ip地址是192.168.0.1 怎么办 我女朋友长得挺漂亮,气质是淑女,我很爱她。就是经常放屁,一天至少要放四五十次,放的屁还很臭,声音又 女生放屁会害羞吗? 宿舍有个女生,是女神,天天在宿舍放屁,,都烦死了,该怎么办? 蔡依林花蝴蝶封面照的内只大蝴蝶美甲是怎么做的啊? c语言顺序结构程序 立体几何计算题怎么编写啊啊?求解 C语言版数据结构上机题:利用已有的顺序表的代码完成以下题。 一道C语言结构题,求大神解答: n个人依次报数,每报到m从圈中退出,依次输出退出人的号码(用数组) 迷你世界棉花树长什么样 迷你世界如何让桃花变的正方形呢 广州优必格文化传媒有限公司怎么样? 怎么经营一个文化传播公司 广州帛铎文化传播有限公司怎么样? 广州不出名文化传媒有限公司怎么样? 广州懂点文化传媒有限公司怎么样? 广州市闪扑文化传媒有限公司怎么样? 广州市千信文化传媒有限公司怎么样? 为什么手机无法下载东西了? 不是储存空间不够的原因 手机为什么下载不了东西了 为什么手机下载不了东西 手机突然下载不了东西了,网络是没问题的,求帮助 为什么有时候苹果手机下载不成东西? 为什么我的手机下载不了东西 为什么我的手机下载不了东西了~ 为什么手机下载不了东西?