24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2154  |  回复: 11
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

时飞

银虫 (小有名气)

[求助] c语言

1、main()
{int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d%d\n",i,j,k,);
}


2、mian()
{int y=10;
while(y--);printf("y=%d\n",y);
}


3、main()
{int k=5,n=0;
while(k>0)
{switch(k)
{default:break;
case 1: n+=k;
case 2:
case 3:n+=k;
}k--;
}printf("%d\n",n);
}

哪位大侠把这三个程序如何运行详细说明一下?????谢谢!!!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

时飞

银虫 (小有名气)

时飞: 回帖置顶 2012-03-23 08:16:53
引用回帖:
8楼: Originally posted by lurencyj at 2012-03-21 21:53:52:

慢慢来,没有问题的。要记清楚书上的重点内容。

1.#inculd
main()
{int x=8;
for(;x>0;x--)
{if(x%3) {printf("%d,',x--);continue;}
printf("%d,",--x);
}
}
该程序如何运行?每一个怎么出来的?   答案8,5,4,2

2.n=10;while(n);{n--;}
这个能构成无限循环吗?该在N=0时结束啊。。答案却不是
。。为什么

3.for(i=0;i<4;i++)
for(k=1;k<3;k++);
printf("*";
我认为该输出8个*     答案只有一个*  为什么???

4.#inculd
main()
{char s[]={"012xy"};int i, n=0;
for(i=0;s!=0;i++)    \*我认为i=0时就该结束了*\
if(s>'a'&&s<='z')n++;
printf("%d\n",n);
}
答案:2    为啥????
请帮忙解决一下,当然越详细越好!!!!

谢谢!!!
9楼2012-03-22 14:03:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

qqhegg

荣誉版主 (文坛精英)

珊瑚小美-----小元家的九妹

优秀版主优秀版主

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+2, 感谢参与 2012-03-21 01:42:22
时飞: 金币+3, ★★★★★最佳答案, 谢谢啊 2012-03-21 12:38:59
1、main()
{int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d%d\n",i,j,k,);
}
解释:i++后加所以先运算在相加即i==1成立返回1,i+1=2
++j前加,先加为3,3==3返回1,因为或有1则为1所以后面不用运算即K=3
所以结果2,3,3
2.2、mian()
{int y=10;
while(y--);printf("y=%d\n",y);
}
循环结构但是循环什么都不做,循环结束后输出y的值,但因为是后--所以可不可以这样理解y==1,y--.当y==1时,依旧成立,y=0,0==1不成立,但是y--还要进行,y=-1
3.main()
{int k=5,n=0;
while(k>0)
{switch(k)
{default:break;
case 1: n+=k;
case 2:
case 3:n+=k;
}k--;
}printf("%d\n",n);
}

这个是多条case通用相同的语句相当于下面的:
main()
{int k=5,n=0;
while(k>0)
{switch(k)
{default:break;
case 1: n+=k;
case 2:n+=k;
case 3:n+=k;
}k--;
}printf("%d\n",n);
}
所以最后3+2+1=7n=7
每天都是新的一天,每天上帝都会给你不同的惊喜
2楼2012-03-20 22:21:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lgdji

新虫 (初入文坛)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
时飞: 金币+2, ★★★很有帮助, 谢谢 2012-03-21 12:39:44
1.&&和||运算符都是短路判断:&&左边的表达式为假的情况下不会判断右边的表达式,||左边的表达式为真的情况下不会判断右边的表达式。i++==1:后缀运算符使得i先进行判断再加1,此时为真;然后进行判断(++j==3||k++==3):前缀表达式使j先加1再使用它的值进行判断,此时++j==3为真,那么表达式(++j==3||k++==3)一定为真,无需判断k++==3,所以结果为2 3 3。
2.while语句后面的是空语句,什么也不做;循环停止的点是(y--)等于0的时候,在后面打印的时候,此时y的值已经减1了,所以最终打印的值为-1。
3.楼主应该能明白循环过程中只有当k等于3、2和1的时候会改变n的值:当k=3的时候,n=0+3=3;k=2时,n=3+2=5;注意当k=1时,此时n改变两次,在case 1:处,n=5+1=6,但是由于语句没有break语句,后面的语句还会继续执行,所以,在case 3:下的语句执行为n=6+1=7。所以最终的结果为7.
3楼2012-03-21 10:37:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zxliu

银虫 (小有名气)

感谢参与,应助指数 +1
zzy870720z: 应助指数-1, 鼓励交流,希望下次不要选择应助回帖 2012-03-21 16:25:20
哇塞在这程序得输入多长时间啊 哈哈 得有耐心啊
4楼2012-03-21 10:55:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见