向前辈们请教几道C语言的题目!!!

来源:百度知道 编辑:UC知道 时间:2024/05/21 18:47:07
向前辈们请教几道C语言的题目!!!
悬赏分:20 - 离问题结束还有 14 天 23 小时
1.以下选项中,与k=n++完全等价的表达式是
a) k=n,n=n+1 b)n=n+1,k=n c)k=++n d)k+=n+1

2.设x为int类型,期值为11,则表达式:(x++*1/3)的值是:
a) 3 b)4 c)11 d)12

3.若a,b,c均被定义成整型并已赋大于1的值,能正确表示代数式1/a.b.c(.为乘号)的C语言表达式是
a)1/(float)a*b*c b)1/(a*b*c) c)1.0/a/b/c d)1/a/b/(float)/c

4.设a,b,c为整型数,且a的值为2,b的值为3,c的值为4,表达式:a*=16+(b++)-(++c)的值是_______。

最好能帮我解释一下。

1.A 如果是k=++n,那么等价n=n+1 ,k=n
2 x++*1/3=3 道理和上面一样,x++*1/3等价x*1/3,x++
其他的自己用上面的原理分析吧

1.a 后++表示运算结速后再对变量本身加一
2.a 因为是x++不是++x,所以运算式中x值还是11,然后是11*1,为11,然后"/"号进行整除运算,得3
3.a 如果运算式中各操作数均为整数,则"/"运算是整除运算,1整除以一个大于一本身的数则得0;所以要对进行第一步运算的变量进行强制转换成浮点数,同样也可以1.0/a*b*c
4.28 因为有++c,所以先进行c加一运算,可化为a*=16+3-5,得a*=14,可化为a=a*14,a=2*14,a=28

1,A
2, A
3, A
4, 28
分析如下:
1,n++与++n,前者是先用n的原值(还未增1)进行运算,运算完毕后再另行单独增1,后者其实是将n+1作为n的值参与运算的,运算以一条语句为准(即以分号结束),如n++;与语句++n;就是一样的,因为大家最终都完成了增1,它们的不同只是体现在运算表达式中!
2,先用X的值,即11去乘1,当然仍然为11(注意是整型的),再用11去对3取整,自然就是3了.
3,对于\运算,是这样的,若上下都是整型的,则是取整.若有一个不是整型的,则理解为通常的除法运算,所以要保证运算的精确,必需强制转换其中的一个.这里(float)就起这个作用!
4,这就是前面说的前增量与后增量的问题了,你可以照上面分析的去试一下,答案是:28(实际的表达式为:16+3-5,结果再去乘以2得到的.
最后:好好学习,天天向上啊.呵呵!