鱼C论坛

 找回密码
 立即注册
查看: 3372|回复: 7

c循环代码问题!!

[复制链接]
发表于 2012-8-9 21:05:20 | 显示全部楼层 |阅读模式
2鱼币
#include<stdio.h>
int main()
{
int t,a=1,b=2,c=2;
while(a<b<c)
{
t=a;
a=b;
b=t;
c--;
}
printf("%d,%d,%d",a,b,c);
printf("\n");
return 0;
}
输出为1,2,0,求解题全过程!!

最佳答案

查看完整内容

(刚刚学完C的教程,这是第一次给别人解答,颇感鸡冻~~~~) 首先要明确一下,、=这些关系运算符是自左向右运算的,其实你这么判断a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-9 21:05:21 | 显示全部楼层
(刚刚学完C的教程,这是第一次给别人解答,颇感鸡冻~~~~)

首先要明确一下,<、>、<=、>=这些关系运算符是自左向右运算的,其实你这么判断a<b<c是达不到
你的要求的。英语有“汉式思维”,这个就是“人性思维”了。

好了,这个程序开始运行了,到了while第一次循环前判断的时候了,自左向右,a<b?是的,为真,
这时这个判断会返回个“1”表示“真”,然后继续向右判断,注意这时左边的判断已经结束,就不是
判断b<c了,而是判断1<c,为真,好了,返回个“1”(当然这是编译器的工作,我们看不到),while
右边括号里为(1),是真,那么就进入下面的循环,第一次循环结束后a=2,b=1,c=1。

再按照这个过程判断,a<b?显然2不小于1,这个判断为假,返回个“0”,在向右,0<c? 是的,为真,
返回个“1”,判断结束,while的括号里为(1)。再进行循环,第二次循环后a=1,b=2,c=0.

再判断一次,a<b?为真,返回个“1”,在向右,1<c,为假,返回“0”,while(0),就不再循环了,
输出a,b,c的值,就是上次循环的结果1,2,0了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-10 08:20:27 | 显示全部楼层
while(a<b<c)   你如果想要这个表达式 试下 while(a<b&&(a<b)<c)  其他问题楼上正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-10 09:05:17 | 显示全部楼层
楼上正解 ,支持原创!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-11 12:44:54 | 显示全部楼层
飘过,学习一下了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-13 13:34:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-15 16:52:27 | 显示全部楼层
2楼正解                       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2012-8-20 17:49:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-18 13:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表