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
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/03 22:38:33
![thank you~前两个题是一样的,第一个:以下程序运行后的输出结果是?{int=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf(](/uploads/image/z/5305265-17-5.jpg?t=thank+you%7E%E5%89%8D%E4%B8%A4%E4%B8%AA%E9%A2%98%E6%98%AF%E4%B8%80%E6%A0%B7%E7%9A%84%2C%E7%AC%AC%E4%B8%80%E4%B8%AA%EF%BC%9A%E4%BB%A5%E4%B8%8B%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E5%90%8E%E7%9A%84%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%E6%98%AF%3F%EF%BD%9Bint%3D1%2Cj%3D2%2Ck%3D3%3Bif%28i%2B%2B%3D%3D1%26%26%28%2B%2Bj%3D%3D3%7C%7Ck%2B%2B%3D%3D3%29%29printf%28%22%25d%25d%25d%5Cn%2Ci%2Cj%2Ck%29%3B%7D%E7%BB%93%E6%9E%9C%E6%98%AF2+3+3%2C%E4%B8%BA%E4%BB%80%E4%B9%88%3F%E7%AC%AC%E4%BA%8C%E4%B8%AA%EF%BC%9A%23include+main%28%29%7Bint+a%3D1%2Cb%3D2%2Cc%3D3%2Cd%3D0%3Bif%28a%3D%3D1%26%26b%2B%2B%3D%3D2%29if%28b)
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
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&&(++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
(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 ; 其它部分参考 第一题和第二题 的讲解
!