有关c语言的问题

1下列程序执行后,s得值为( )
int k,s=0;
for (k=1;k<=0:++k)

s=s+k;
答案结果是11

2下面语句执行后,x的值是()
int x,s=0;
for(x=0;x<10;x++)
s+=x
答案结果是0+1+2+3+4+5+6+7+8+9

3下面程序运行后输出结果是()
int a=4
do
{
printf("2%d,a-=3");
}
while(!(--a));
答案结果是1 -3
我很想知道这是什么意思(!(--a)) 这程序是咋执行的。
4下列程序运行后输出结果是()
int a=1,m=0;
while(a-->=0)
m++;
printf("%d,%d\n",a,m);
答案是-2,2 帮我讲一下是咋运行的
1 2 题麻烦也讲一下

    s=0而不是11。

    如果s+=x后有个分号的话,最后s=45,而不会输出那一长串。

    输出结果是2%d,a-=3而不是1 -3。其中!(--a)的意思是将a减1后取逻辑反,你这里是4-1=3,!3=0;所以循环只做一次。

    进入while时,a=1>0,然后a-1=0,所以m++后m=1。返回去a=0符合a>=0的条件,所以再循环,a--=-1,m++=1+1=2;再返回去,a=-1不符合a>=0的条件,所以循环终止不再执行m++,m仍为2。要注意的是a还要做a--运算所以a最后为-2。这是因为“循环终止”终止的是循环体,而a--不再体内。所以最后结果是-2,2。

不知为什么,你提供的题目只有这最后一题的答案是正确的!

温馨提示:答案为网友推荐,仅供参考