有哪位高手帮小弟看看这道题c语言题!!!不明白!

2025-06-22 22:06:02
推荐回答(4个)
回答1:

第一个,因为else是与在他之前与他最近的if配套,所以第一个程序相当于是这样的:
#include
void main()
{
int a=2,b=-1,c=2;
if(a {if(b<0)
c=0;
else c++;}
printf("%d\n",c);
}所以第一个if里判断是假,就不执行下面的程序,直接执行printf语句。
第二个你要弄清楚for的执行过程。先判断x>8是否成立,成立及执行下面的语句,所以输出了10 10(x--知道是先取值在减吧),然后执行y=++i语句,之后是一样的,在判断执行,所以最终结果是10 10 9 1。
第三个同样是for和j--的问题,第一次10%3=1,为真,所以执行j--,然后两次--j,此时j=7,输出,此时还要执行一次for语句里的j--,此时j=6,判断j任然大于3,所以继续执行,但6%3=0,所以if里为假,不执行j--,但还是要执行两次--j,此时j=4,输出,在执行此j--,j=3,判断不满足,for循环结束。

回答2:

第1题因为 else与它前面最近一个if配对;
if(a if(b<0)
c=0;
else c++;
中 if(b<0)
c=0;
else c++;是一个整体;

2
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
for(式1;式2;式3){ }
执行 式1->判断式2(错误就退出)->执行{ }->执行式3->判断式2(错误就退出)->执行{ }->执行式3->->
执行i=0->判断x>8(正确)->输出(x--)=10,y=10(此时x=9,y=10)->执行y=++i(x=9,y=1)->判断x>8(正确)->输出(x--)=9,y=1(此时x=8,y=1))->执行y=++i(x=8,y=2)->判断x>8(错误并退出)
结果 是10 10 9 1
printf("%d",x--);等价于 先 printf("%d",x);后x=x-1;
printf("%d",--x);等价于 先x=x-1;后printf("%d",x);

3
for(j=10;j>3;j--)
{
if(j%3)
j--;
--j;
--j;
printf("%d",j);
}

由第2题for的执行,j为3的陪数时
j=10--> { if(10%3)j--;--j;--j;输出j }(j=7)-->{ j-- (j=6)-->({if(6%3)j--;--j;--j;输出j}(j=4)-->{ j-- }(j=3)-->j>3不成立退出

回答3:

1.
a2.
a++,整体返回值为a,再a+=1;
++a,整体返回值为a+1.
依次思想自己推推可得
3.
。。。。参照2的思想

回答4:

第一个程序是if语句的用法,其实质是:
#include
void main()
{
int a=2,b=-1,c=2;
if(a {
if(b<0) c=0;
else c++;
}
printf("%d\n",c);
}
由于a>b,所以if语句不执行,c的值仍为2.

第二个程序是for语句的用法,首先判断第二个句子是否满足条件,若满足,执行printf语句,然后执行第三句,否则,退出循环。因此,x=10时,满足条件,执行printf语句,x=10,y=10,其中,x--表示先输出x,后减一,x=9,然后,i++,i=1,y=1;所以输出x=9,y=1;此后x=8,退出循环。

第三题,j=10,j%3=1;if语句执行,j减一次,随后j减两次,j=7;然后执行第三句,j=6;j%3=0,if语句不执行,j减两次,j=4;然后执行第三句,j=3;循环结束。

建议:多看看谭浩强的c语言。