C语言 求解答 c语言求解答

C\u8bed\u8a00\u6c42\u89e3\u7b54

C \u8bed\u8a00\u4e2d\u7684\u5b57\u7b26\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u6570\u5b57\uff0c\u901a\u8fc7\u4e00\u5f20 ASCII \u8868\u6765\u786e\u5b9a\u5b57\u7b26\u548c\u6570\u5b57\u7684\u5bf9\u5e94\u5173\u7cfb\uff1a

\u6839\u636e\u8fd9\u4e2a\u8868\u5f97\u5230\u5b57\u6bcd\u7684\u89c4\u5f8b\uff1a
\u5c0f\u5199\u5b57\u6bcd a-z \u4ece 97 \u5230 122
\u5927\u5199\u5b57\u6bcd A-Z \u4ece 65 \u5230 90
\u5bf9\u540c\u4e00\u4e2a\u5b57\u6bcd\uff0c\u5c0f\u5199\u5b57\u6bcd\u6bd4\u5927\u5199\u5b57\u6bcd\u591a 32
\u6709\u4e86\u8fd9\u4e2a\u4e09\u4e2a\u89c4\u5f8b\uff0c\u5bf9\u4e8e\u4e00\u4e2a\u8f93\u5165\u7684\u5b57\u7b26\uff0c\u6211\u4eec\u7684\u7b97\u6cd5\u5c31\u51fa\u6765\u4e86:
\u5982\u679c\u4e00\u4e2a\u5b57\u7b26\u7684\u503c\u5728 97 \u548c 122 \u4e4b\u95f4\uff0c\u8bf4\u660e\u5b83\u662f\u5c0f\u5199\u5b57\u6bcd\uff0c\u628a\u5b83\u51cf32\uff0c\u5c31\u5f97\u5230\u5927\u5199\u5b57\u6bcd
\u5982\u679c\u5b83\u7684\u503c\u5728 65 \u5230 90 \u4e4b\u95f4\uff0c\u8bf4\u660e\u5b83\u662f\u5927\u5199\u5b57\u6bcd\uff0c\u628a\u5b83\u52a032\uff0c\u5f97\u5230\u5c0f\u5199\u5b57\u6bcd
\u5982\u679c\u90fd\u4e0d\u5728\u8fd9\u4e24\u4e2a\u533a\u95f4\u91cc\u9762\uff0c\u8bf4\u660e\u5b83\u662f\u5176\u5b83\u5b57\u7b26\uff0c\u4e0d\u5bf9\u5b83\u505a\u4fee\u6539
\u6240\u4ee5\uff0c\u6211\u4eec\u7684\u4ee3\u7801\u5c31\u662f\u8fd9\u6837\u7684\uff1a

if(i%6==5\uff09\uff1bputchar('\n');
\u8981\u4e48\u662f\u5199\u9519\u4e86\uff0c\u8981\u4e48\u5c31\u4e0d\u80fd\u8d77\u5230\u5e94\u6709\u7684\u4f5c\u7528\u3002\u56e0\u4e3aif\u8bed\u53e5\u5728\u5706\u62ec\u53f7\u540e\u9762\u5199\u4e86\u4e00\u4e2a\u5206\u53f7\uff0c\u8fd9\u5c31\u662f\u6761\u4ef6\u6ee1\u8db3\u65f6\u6267\u884c\u4e00\u4e2a\u7a7a\u8bed\u53e5\uff0c\u7136\u540e\u540e\u9762\u7684\u4e00\u4e2a\u8bed\u53e5\u5c31\u662f\u65e0\u6761\u4ef6\u6267\u884c\u7684\u4e86\u3002
\u5047\u5982\u628a\u8fd9\u4e2a\u62ec\u53f7\u53bb\u6389\u7684\u8bdd\uff0c\u5b83\u7684\u4f5c\u7528\u5c31\u662f\u5f53AI\u00f76\u7684\u4f59\u6570\u7b49\u4e8e\u4e94\u7684\u65f6\u5019\u5c31\u8f93\u51fa\u4e00\u4e2a\u6362\u884c\uff0c\u4e5f\u5c31\u662f\u8bf4\u6bcf\u516d\u4e2a\uff0c\u6362\u4e00\u884c\u3002

【第一行】:
x=1,y=1,z=1;
if((x=2)&&(y=2)&&(z=2))
首先,x=2是赋值,执行后x==2,并且此等式的值为2,所以if (x=2)的结果是true。

其次,按照if的判断规则,遇到a&&b&&c这样的判断,当a为true后,会进行b的判断,如果b也为true,就继续进行c的判断。所以这一行会依次进行x=2,y=2,z=2的赋值并且总的判断结果是true (true&&true&&true),结果打印出222。

【第二行】:
一样的,先进行x=0的赋值和判断。赋值后x的值为零。但是由于x=0这个等式的值为0即false,所以此处(x=0)&&(y=2)&&(z=2)总的结果也为false,并且后面的y=2和z=2的赋值并不进行,因为第一项为false了,后两项就不进行判断了(效率上的优化),无论后两项是true还是false,总的结果都是false。所以此时x==0,y==1,z==1,但是不会打印。

【第三行】:
一样的,先进行x=2的赋值和判断,结果为true,此时x==2。
但是注意此时是if(a||b||c)这样形式的判断,如果a是true了,无论后两项结果是什么,总的结果都是true,后两项就 不进行赋值和判断了(效率上的优化)。所以此时x==2,y==1,z==1。
打印出211。

【第四行】:
先进行x=0的赋值和判断,此时x==0,(x=0)的结果是false,所以需要继续进行y=2的赋值和判断。此时y==2,并且(y=2)的值为true。
此时总的结果是false||true||?,为true,第三项不需要进行赋值和判断了(效率上的优化)。

打印出此时xyz的值021

【第五行】:
先进行x=0的赋值和判断,此时x==0,(x=0)的结果是false,所以(x=0)&&(y=2)的结果就是false了,y=2这一步不进行赋值和判断了(效率上的优化),y的值仍旧为1。
因为(x=0)&&(y=2)的结果是false,所以需要进行和它相或的z=2的赋值和判断,此时z==2,并且(z=2)的值为true,总的结果是(false&&?||true),为true。
打印出此时xyz的值012

【总的原则】:
a&&b&&c...的时候,只要遇到false的,总的结果就是false了,后面的就不必进行了。
a||b||c...的时候,只要遇到true的,总的结果就是true了,后面的就不必进行了。
这题考的就是这种提高效率的机制。

以上,未理解的话可以继续追问。

看影子像妹子。。。拍反光了你

看影子像妹子。。。拍反光了你

&& 从左往右,如果左边为假,表达式返回假,且不再计算后面的

|| 从左往右,如果左边为真,表达式返回真,且不再计算后面的

第一个
x=2,表达式值2非零为真,继续,y=2表达式值2非零为真,继续,z=2表达式值2非零,结束判断,if表达式为真,此时x:2 y:2 z:2,输出 222,

第二个
x=0,表达式值0为零为假,不再继续,结束判断,if表达式为假,此时x:0 y:1 z:1,不输出,
第三个
x=2,表达式值为2非零为真,不再继续,结束判断,if表达式为真,此时x:2 y:1 z:1,输出211

第四个
x=0,表达式值为0为零为假,继续,y=2表达式值为2非零为真,不再继续,结束判断,if表达式为真,此时x:0,y:2,z:1,输出021

第五个
要换着方式理解下&&优先级高于||,if表达式修改下就是if( ((x=0)&&(y=2)) || (z=2) )

x=0,表达式值0为零为假,&&表达式结束计算,|| 表达式左边计算结果为假,继续,z=2,表达式值为2非零为真,||表达式为 0||1,为真,if表达式为真,此时x:0,y:1,z:2,输出012

直接用电脑截图多省事,难道电脑没联网?
1)x=2赋值表达式的计算结果就是2,当这个表达式出现在if语句逻辑表达式位置上的时候,它的计算结果是被当作逻辑值处理的,在C语言中用整型数表示逻辑量,非零表示“真”,所以这是一个永真式;这个if的逻辑条件永远不会为假。
也就是说,这里所表达的逻辑条件并不是“a的内容是否等于2”,而是向变量x中送入数据2。
所以x、y、z的值在每次打印前都被判断语句改变了一次。
2)x=2作为判断条件,等于if(2),故if(x=0)就是if(0)。
3)||号在判断前面的值为0后,后面的内容就不知行了。
3)鉴于是个妹子,那多说两句,郝斌C语言视频教程是我看过的最好的C语言入门视频,看过后你能省好多时间和精力。

第一条if((x=2)&&(y=2)&&(z=2)),由于()的运算优先级高于&&,所以先算x=2,y=2,z=2这三个赋值表达式,即此时x的值为2,y的值为2,z的值为2,这三个表达式的结果都非0,因此if语句成立,执行后面的printf语句,输出222。
第二条if语句由于x=0语句使得if的条件为0,不执行。
第三条if,由于x=2,即x非0,||运算中只要有一个非零就成立,并且不会再去计算后面的表达式,所以y和z未被重新赋值,即x=2,y=1,z=1,输出211。
剩下的分析方法类似,主要是注意&&和||运算的优先级以及它们运算时的特点,当&&中有一个式子=0,系统就不会再往下计算,这个表达式就为假;当||中有一个式子非0,系统不会继续计算,该表达式为真

注意== 和 =
&& 全真则真 遇到0,后面不用看了
|| 一真则真 遇到1,后面不用看了


扩展阅读:c语言必背100代码 ... 扫一扫题目出答案 ... c语言编译器在线编译 ... c语言基础知识入门 ... c++搜题专用软件 ... 大一c语言必背知识点 ... c语言在线编程网站 ... c语言符号大全表解释 ... c语言题目及答案网站 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网