标题:some easy questions
只看楼主
黑白格子布
Rank: 1
等 级:新手上路
威 望:1
帖 子:67
专家分:0
注 册:2005-12-11
得分:0 

下面的是从love_me的回复贴过来的,只是为了说清楚问题,没有别的含义,谢谢

第一题,while(a=14)括号里是个赋值语句,不是判断语句,至于y的那个判断y在多次循环中值是保留的,所以每次循环都是增加值的,这个循环也正是由这个条件作为跳出条件的,第1题的答案是对的
# include <stdio.h>
void main ()
{
int a,y;
a=10;y=0;
do {
a+=2;
y+=a;
if (y>50)break; //多余的判断 10+2能大于50么?
printf ("a=%d y=%d\n",a,y);
}while (a=14); //12能等于14么? 就算等于也应该是==不是=,满足了条件后循环是空的,让人郁闷~
printf ("a=%d y=%d\n",a,y);
}

a=12 y=12
a=16 y=28
a=16 y=44
a=16 y=60
why the result is not 18,60

第2题,i的初值-1,-1<=i这个判断为真,则为1,再判断<1为假,所以for循环不执行只打印i,是-1
# include <stdio.h>
void main ()
{
int a,i;
for (a=1,i=-1;-1<=i<1;i++) //这里不对
{
a++;printf ("%2d",a);
}
printf ("%2d",i); //这里无法理解,因为for不对
}

第3题,我做的答案是31-1
switch语句根本就不起作用,对2取模,不是1就是0,和进入条件4,6都不匹配
#include<stdio.h>
void main()
{
int i=5;
do {
switch (i%2)
{
case 4:i--;break; 4/2的余数是5,口算都算得出来,2个case在这里没用处
case 6:i--;continue; //case只能用break退出循环
}
i--;i--; //2个i-- ?
printf ("%d",i);
}while (i>0); //whiel条件又是空循环
}

I don't understand at all,I hope you can explain it to me >_<


2006-01-21 22:10
kankanba
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-10-24
得分:0 
a=14确实是个赋值语句,但是也可以理解为“1”,也就是非0。其实第一题很好理解。
2006-01-21 22:26
bestee
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2006-1-19
得分:0 

最后一题:冒号前面是语句的简写,因为始终不满足case条件,所以都跳过了
第一趟:
int : i=5
switch : jump
i-- : i=4
i-- : i=3
printf : 3

第二趟:
int : i=3
switch : jump
i-- : i=2
i-- : i=1
printf : 1

第三趟:
int : i=1
switch : jump
i-- : i=0
i-- : i=-1
printf : -1

测试与vc6运行结果一致

[此贴子已经被作者于2006-1-21 22:42:14编辑过]


欢迎光临我的blog! http://blog./bestee
2006-01-21 22:39
ADALE
Rank: 2
等 级:新手上路
威 望:4
帖 子:483
专家分:0
注 册:2005-11-18
得分:0 
超级感谢各位,本人已经明白了

喜欢宁静的平凡生活
2006-01-22 10:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-43569-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.840963 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved