9. 以下程序的输出结果是 ( ) #include"stdio.h" void fun(int a,int b,int c)

9. 以下程序的输出结果是 ( )
#include"stdio.h"
void fun(int a,int b,int c)
{a=456;b=567;c=678; }
main( )
{int x = 10,y =20,z=30;
fun(x,y,z);
printf("%d%d%d",x,y,z);
}
A. 30,20,10 B. 10,20,30 C. 456,567,678 D. 678,567,456 答案是A,为什么会是A?

10.以下程序的输出结果是 ( )
#include"stdio.h"
int abc(int u ,int v);
main( )
{ int a=24,b=16,c;
c=abc(a,b);
printf ("%d\n",c);}
int abc(int u ,int v)
{int w;
while(v)
{w=u%v;u=v;v=w;}
return u; } A.6 B.7 C.8 D.9 答案为C,为什么会是C?

12.以下程序的输出结果是 ( )
#include<stdio.h">
#define PT 5.5
#define S(x) PT*x*x
main ( )
{ int a=1,b=2;
printf("%4.1f\n",S(a+b));} A.49.5 B.9.5 C.22.0 D.45.0 答案为B,为什么?定义宏时参数没有用圆括号括起来是怎么算的?

14.下列程序的输出结果是()
#include"stdio.h"
f(int a)
{ int b=0;static c=3;
a=c++,b++;
return(a);}
main ( )
{ int a=2,i,k;
for (i=0;i<2;i++)
k==f(a++);
printf("%d\n",k); }
A.3 B.0 C.5 D.4 答案为D,怎么来的?

17.下列程序的输出结果是()
#include"stdio.h"
#define f(x) x*x
main ( )
{int a=6,b=2,c;
c= f(a)/f(b);
printf("%d\n",c); }
A.9 B.6 C.36 D.18 答案为C,不知怎么的出来的?宏定义时参数没有用圆括号括起来是怎么算的?

9,x,y,z为实际参数,a,b,c为形式参数,在调用的时候取的是实际参数的值,所以A
10,w=u%v=8;u=v=16;v=w=8;继续循环;w=u%v=0;u=v=8;v=w=0;循环结束(v=0)return u = 8;
12,宏定义就是一模一样的抄下来的,S(a+b):PT*x*x:PT*a+b*a+b:PT*1+2*1+2=9.5;
14, a=c++,b++;这句话没看太懂;
17, c= f(a)/f(b):c= a*a/b*b=6*6/2*2=36;追问

你好,非常感谢你的帮助!
第9题的x,y,z输出为什么是30,20,10,而不是10,20,30 ?
12. S(a+b):PT*x*x:到PT*a+b*a+b是怎么得来的,还是没看懂啊 ?不是pt*(a+b)*(a+b)?
14.a=c++,b++;是题目中就这样给的
17. c= f(a)/f(b):c= a*a/b*b=6*6/2*2=36;,f(a)=6*6=36,f(b)=2*2=4,两数相除怎么得到36的?

追答

你好
9,抱歉,答案是B,没看清楚
12,宏定义是照样搬过来的,PT*x*x:到PT*a+b*a+b,不会自己给你加括号
14, k==f(a++)不是复制而是对比,k的值不会改变,题目有错
17,与12是一样的,宏定义是照样搬过来的,而不是和你想的一样,c= f(a)/f(b)即c= a*a/b*b=6*6/2*2=36,宏定义不会帮你加括号的,多看看讲解宏定义的例子你就会明白的

追问

14, k==f(a++)不是复制而是对比,k的值不会改变,题目有错
不好意思,14题是我输错了,原题为k=f(a++),这样题目就没错了
下列程序的输出结果是()
#include"stdio.h"
f(int a)
{ int b=0;static c=3;
a=c++,b++;
return(a);}
main ( )
{ int a=2,i,k;
for (i=0;i<2;i++)
k=f(a++);
printf("%d\n",k); }
A.3 B.0 C.5 D.4

追答

for (i=0;i<2;i++)
第一次循环:a=2,k=f(2),a=c++=3,c=4;return a = 3;k=3;
第二次循环:a=2,k=f(2),此时因为C是静态变量,将上一次的结果作为下一次的初始值,c=4,a=c++=4,c=5,return a =4;k=4;
这题考的主要是先运算,再++,还有静态变量

别忘了采纳噢

追问

非常感谢你的帮助,当然不会忘记采纳!!!
顺便再问一个问题: C语言中,函数的隐含存储类别是( )A.auto B.static C. extern D.无存储类别,有的人说是A,有的人说是C,书上也没找到相应的答案,具体是哪个我也不太明白,能否解释一下?

追答

答案是C,解释不了抱歉

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-27
第2个回答  2011-07-27
同意一楼回答
第3个回答  2011-07-27
恩,楼上说的对