满意答案
lengwei241
2013.03.25
采纳率:43% 等级:13
已帮助:11778人
18
与数学式子3乘以x的n次方/(2x-1)对应的C语言表达式是
3*x^n/(2*x-1)
3*x**n/(2*x-1)
3*pow(x,n)*(1/(2*x-1))
3*pow(n,x)/(2*x-1)
答案是3*pow(x,n)*(1/(2*x-1))
为什么
解答:其中pow(x,n)为C语言的库函数,其头文件为“stdio.h”,其作用为:求x的n次方。
第一种和第二种答案不符合C语言的语法规则。
第四种pow(n,x)求的是n的x次方。
19
设有定义:long x=-123456L;, 则以下能够正确输出变量x的语句是
printf("x=%dn")
printf("x=%ldn")
printf("x=%8dLn")
printf("x=%LDn")
答案是printf("x=%ldn")
为什么
解答:因为x为长整型变量,所以长整型变量的输出格式字符是%ld。
第一种输出的是整型变量。
第三种输出一个占8列的整型变量,然后输出字母L
第四种错误在于C语言是大小写敏感的语言,输出格式应该用小写字母,而不应该用大写字母。
20
main() {int k=2,i=2,m; m=(k+=i*=k); printf("%d,%d,n",m,i);}
输出结果是:6,4
为什么
解答:赋值运算符的结合性是自右向左的,所以赋值表达式
m=(k+=i*=k); 的计算顺序是,赋值表达式的值等于赋值号左边变量的值。因此该表达式的计算顺序为:先计算右边的表达式i*=k,等价于i=i*k,运算以后i的值变为4,同时表达式i*=k的值为4;然后计算表达式k+=i*=k的值,其中i*=k的值为4,所以该式等价于k+=4,运算以后k的值变为6,整个表达式的值也为6 ,最后计算表达式m=(k+=i*=k); 因为表达式(k+=i*=k)的值为6,所以m的值为6,因此输出结果为6,4。
21
int x=3,y=4,z=5
!(x+y)+z-l&&y+z/2
结果是1
为什么
解答:该表达式的运算顺序为(!(x+y)+z-l)&&(y+z/2)即:先计算(x+y)的值,结果为7,然后对其取非结果为假(即为0)然后计算0+z-1结果为4(非0,所以为真),然后计算(y+z/2)结果为6(非0,所以为真)两个真值进行“与运算”,结果为真(即1)。在C语言中没有布尔型的变量,真用1表示,假用0表示。
23
与k=n++完全等价的表达式是
k=n, n=n+1
n=n+1,k=n
k=++n
k+=n+1
答案是k=n, n=n+1
解答:n++为后缀表达式,后缀表达式的值为变量加1之前的值,并且自增运算符有副作用,即经过运算后变量的值发生变化,经行加1运算。
因此整个表达式的等价于:k=n(变量加1之前的值),n=n+1(变量自身进行加1运算)
这就是我对以上题目的理解,希望对你有帮助。
40分享举报