作业帮 > 综合 > 作业

thank you~前两个题是一样的,第一个:以下程序运行后的输出结果是?{int=1,j=2,k=3;if(i++==

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 19:53:09
thank you~
前两个题是一样的,
第一个:以下程序运行后的输出结果是?
{int=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d%d%d\n,i,j,k);
}
结果是2 3 3,为什么?
第二个:
#include
main()
{int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2||c--!=2)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
}
第三个:
以下程序执行后输出结果是3,为什么?
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
thank you~前两个题是一样的,第一个:以下程序运行后的输出结果是?{int=1,j=2,k=3;if(i++==
(1)讲下 && 运算,比如表达式:(条件1)&&(条件2);先执行判断条件 1是否成立,再执行判断条件2是否成立 ,若1 和2 都为“真”,则整个表达式的值为1; 若执行判断条件1的时候,得到条件1为 “假" 的结果,则跳过条件2的判断 ,直接返回0 .
(2)对于 || 运算,(条件1)&&(条件2);执行判断条件 1是否成立,再执行判断条件2是否成立 ,若1 和2 都为“假”,则整个表达式的值为0; 若执行判断条件1的时候,得到条件1为 “真" 的结果,则跳过条件2的判断 ,直接返回1 .
(3)顺便说下运算符的优先级由大到小的顺序为:后置++,前置++,!=,&&,||
第一题:
{
int i=1,j=2,k=3; (你这写的时候是不是掉了一个 i )
if(i++==1&&(++j==3||k++==3))
printf("%d%d%d\n,i,j,k);
}
你if 语句里面的 条件1 是 i++==1 ,先执行 i ++,i++的值为1,i自加1 变为2 ,正确,再判断(++j==3||k++==3) ,同理先判断 ++j==3 是否成立,j自加1变为3,显然++j 值为3是正确的,所以跳过 k++==3的判断,得到(++j==3||k++==3) 的值为1,因此没有执行k++,k的值不变.
第二题
{int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2||c--!=2)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
}
你 if,else语句的缩进不合理,导致你程序难以读懂,可将其改为:
if(a==1&&b++==2)
if(b!=2||c--!=2) printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
理解清楚你的else和if的匹配,哪个if 和哪个else 匹配要搞清楚,然后按照上面讲解的 && ,++,- -,!= 运算法则自己慢慢理解
第三题,
说一下 if(a>b>c)
执行 a>b>c时,先 判断 a>b是否成立,显然成立,返回值1,再判断a>b返回的值是否大于c ,显然1 是小于c 的,最终 表达式 a>b>c 的值 为0 ; 其它部分参考 第一题和第二题 的讲解
!
再问: 谢谢你的回答啊,别的都挺明白的。但是我第二题的c的值还是不明白。b!=2只为0,c--!=2值为1,它俩或为1,然后输出c的时候就不是跳过了,c--是3,那c不应该是2了吗?最终结果不应该是2吗?
再答: #include main() {int a=1,b=2,c=3,d=0; if(a==1&&b++==2) if(b!=2||c--!=2) printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); } 先来看 第一个 if 里面的判断语句 :(a==1&&b++==2),先判断 a==1 吗? 显然是等于的,此不能确定这个表达式的值,再判断 b++==2 吗? b++ 的值是为2 的,也正确,故表达式(a==1&&b++==2)的值为1,由于上面 b++了,以后 b 的值变为3。 再来看 第二个 if 里面的判断:(b!=2||c--!=2) , 先判断 b!=2 吗? 显然 b 是不等于2的,返回1,因为上面有一个 b++,|| 运算符后面的 c--!=2 就不用执行了,直接跳过!