24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2155  |  回复: 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的回帖

zxliu

银虫 (小有名气)

感谢参与,应助指数 +1
zzy870720z: 应助指数-1, 鼓励交流,希望下次不要选择应助回帖 2012-03-21 16:25:20
哇塞在这程序得输入多长时间啊 哈哈 得有耐心啊
4楼2012-03-21 10:55:48
已阅   回复此楼   关注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的回帖

hp2012

铜虫 (初入文坛)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-03-22 00:31:47
第一个程序:首先定义了三个有符号的整型变量分别为-i-j-k并进行了初始化如i=1等,下一句是判断语句,其中++j==3表示j先是加上1在与3进行比较,若相等则此语句为真,k++==3则表示先将k与3进行比较,若k等于3则此语句为真,而||是逻辑或运算符号,只要符号两边的语句有一句是真则整条语句(++j==3||k++==3)为真,&&是逻辑与运算符号,只要符号两边有一个是假则整个语句为假,很显然i++==1为真,而++j==3为真。即(++j==3||k++==3)为真,所以i++==1&&(++j==3||k++==3)为真,if语句是括号里面的语句为真的话,就执行最近的下面语句(包括复合语句)
执行printf();语句,此语句是用于输出的功能,printf("%d%d\n",i,j,k,);表示输出当前i,j的值因为只有两个%d,因而无法输出此时i==1;j==3;
5楼2012-03-21 18:23:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见