c语言问题求详解不要只有答案

1. [单选题] 以下叙述中正确的是(  )。

A

全局变量的作用域一定比局部变量的作用域范围大

B

静态(static)类别变量的生存期贯穿于整个程序的运行期间

C

函数的形参都属于全局变量

D

未在定义语句中赋初值的auto变量和static变量的初值都是随机值
2. [单选题]

以下程序的输出结果是(  )。

#define MAX(x,y) (x)>(y)?(x):(y)

main()

{

int a=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

printf("%d\n",t);

}

A

70

B

60

C

7

D

6

3. [填空题]

下面程序段的运行结果是____。

int m=10;

int f(int x,int y)

{int m=5;

m+=x*y;

return m;

}

void main()

{int a=6,b=7;

printf("%d",f(a,b)/m);

}

 [填空题]

下面程序段的运行结果是___。  

int f(int a);

void main()

{for(int i=0;i<3;i++)

printf("%d",f(i));

return;

}

int f(int a)

{int b=0;

static int c=3;

b=b+1;

c=c+1;

return(a+b+c);

}

第1空:
5. [填空题]

以下程序的输出结果是___。

#define SELECT(a,b)  a<b?a:b

int main()
{

int m=2,n=4;

printf(“%d\n”,SELECT(m,n));

}

第1题 b
a选项,例:
void f()
{
int i;
...
...
...
...
}
int j;
int main()
{
return 0;
}
很明显 全局变量j的作用域仅限于main函数
局部变量i作用域为f函数,但main函数中未使用j,
实际上j的作用域为无。
c选项 函数的形参都是局部变量
d选项 auto变量只有调用的时候才赋值,调用结束就释放,所以无初值
static变量是静态变量,程序启动时就在全局区分配了空间,
而且被初始化为0或者空(NULL)
第2题 结果是 7
#define MAX(x,y) (x)>(y)?(x):(y)
宏定义,编译的时候是直接替换,
t=MAX(5+2,3+3)*10等效于
t=(5+2)>(3+3)?(5+2):(3+3)*10
=> t=7>6?7:60
结果为 7
第3题 结果是 4
int m=10; 定义全局变量m;
int m=5; 定义了一个局部变量m,作用域仅在f函数内部
两个m变量地址不同,互不干涉,所以f(6,7)的结果是47,
47/10 的结果取整为4。
第4题 结果是 579
static int c=3;定义的是一个静态变量,
它仅在声明时被首次初始化,即以后的函数
调用不再进行初始化,
第一次循环f(0)中c的值为4,a+b+c等效于0+1+4=5;
第二次循环f(1) 中c的值为5,a+b+c等效于1+1+5=7;
第三次循环f(2) 中c的值为6,a+b+c等效于2+1+6=9;
第5题 结果是 2
#define SELECT(a,b) a<b?a:b
宏定义,编译的时候是直接替换,
printf(“%d\n”,SELECT(2,4))等效于
printf(“%d\n”,2<4?2:4);其结果为 2.
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-28


先发前两题,剩下的等会写

第2个回答  2019-04-27
c语言远程详解
相似回答