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输出为什么是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,解释不了抱歉