菜鸟求教C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 15:11:48
本人刚学C语言,遇到一些基础问题无法解答。还请个位达人帮忙!
以下是我总结的一些问题:
①设int型变量i的初值为1,表达式(i++)+(++i)+i的计算过程为1+3+3
表达式++i+i+i++的计算过程为2+2+2 (请解释下是如何得出以上两个过程的,我一直想不透)
②设int型变量a的初值为12,赋值表达式a+=a-=a*a的值为-264 (请解释下如何得出这个数,越详细越好)
③main()
{ int a,b;
for(a=1,b=1;a<=100;a++)
{ if (b>=20)break;
if(b%3==1)
{b+=3;
continue;
}
b-=5;
}
printf("a=%d\n",a);
}
运行后输出结果为8
(请问是怎么得出来的,每步都详细解释一下。我比较笨,嘿)

谢谢大家帮忙额,小弟不胜感激!

① i++的意思是i=i+1 和++i是有区别的
i++ 先使用i的值再把i+1
先把i+1 再使用i
(i++)+(++i)+i i++ 要先使用i再加1,所以 i++的i仍然是1;++i 要先加1再使用,但是前面的i使用了后i已经变成2了,所以++i=i+1=2+1=3,
整个表达式为: 1+3+3
② 表达式a+=b的意思是 a=a+b a-=b就是 a=a-b
a+=a-=a*a我们要从后面来, 先算a*a=144,得出 a+=a-=144 再算 a-=144
得出a=a-144 因为a=12 所以结果为12-144=-132,注意,这个时候a已经变为 -132 (a=12-144) 得出 a+=-132 , 即a=a+(-132)变化下的 a=a-132
以前已经得出现在a已经变为-132,所以 a=a-132=-132-132=-264

③ 知道了这些,第3题就可以自己算算了,
如果B不能被3整除,那么B就+3,如果能被3整除,那么B就-5,求,几次循环之后B才能>=20
其实B每次都不能被三整除的,所以b-5的情况不会发生,因为if里有continue语句终止下面代码的运行
所以B的值依次是 1,4,7,10,13,16,19,22 刚好8次,第8次时候B为22,已经>=20了,所以break退出循环.

1,2无意义.

我只说三:

首先a=1,b=1;
b%3=1;
b=b+3=4;

a=2,b=4;
b%3=1;
b=b+3=7;

因为每次loop,b总是=3n+1,所以b%3总是=1;
所以一次类推.

a=3 => b=10;
a=4 => b=13;
a=5 => b=16;
a=6 => b=19;
a=7 => b=22;

注意这时虽然b>20,但是loop还没有结束,a还是要+1.