| 查看: 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); } 哪位大侠把这三个程序如何运行详细说明一下?????谢谢!!! |
» 猜你喜欢
导师想让我从独立一作变成了共一第一
已经有9人回复
博士读完未来一定会好吗
已经有23人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
申请2026年博士
已经有6人回复
时飞: 回帖置顶 2012-03-23 08:16:53
|
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
qqhegg
荣誉版主 (文坛精英)
珊瑚小美-----小元家的九妹
- 程序强帖: 2
- 应助: 10 (幼儿园)
- 贵宾: 3.115
- 金币: 23915.9
- 散金: 14806
- 红花: 179
- 沙发: 138
- 帖子: 11542
- 在线: 770.7小时
- 虫号: 1212338
- 注册: 2011-02-24
- 性别: MM
- 管辖: 基金申请交流
【答案】应助回帖
★ ★ ★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+2, 感谢参与 2012-03-21 01:42:22
时飞: 金币+3, ★★★★★最佳答案, 谢谢啊 2012-03-21 12:38:59
感谢参与,应助指数 +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
【答案】应助回帖
★ ★
感谢参与,应助指数 +1
时飞: 金币+2, ★★★很有帮助, 谢谢 2012-03-21 12:39:44
感谢参与,应助指数 +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
4楼2012-03-21 10:55:48













回复此楼