C语言面试题分享(5)

一、下列程序的执行结果是_________。

#include <stdio.h>

union un
{
    
    
	int i;
	char c[2];
};

void main()
{
    
     
	union un x;
	x.c[0]=10:
	x.c[1]=1printf(%d\n”,x.i);
}

A)266 B)11 C)265 D)138

答案:A

评析:由于本题定义的是共用体,所以成员列表中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266,即0x010A。

二、下列程序执行后输出的结果是_________ 。

#include <stdio.h>

f(int a)
{
    
    
	static c=0;
	c=a+c++;
	return(c);
}

void main(void)

{
    
    
	int a=2, i, k;

	for(i=O;i<2;i++)

	k=f(a++);

	printf(%d\n”,k);
}

答案:7

评析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

三、下面程序执行后输出的结果是_________ 。

#include <stdio.h>

int m=13;

int fun(int x,int y)
{
    
    
	int m=3;

	return(x*y-m);
}

void main(void)
{
    
    
	int a=7,b=5;

	printf(%d\n”,fun(a,b)/m);
}

答案:2

评析:考察同名变量,在函数中优先取局部变量。
本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(xy-m)的值为75-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。

猜你喜欢

转载自blog.csdn.net/weixin_44788542/article/details/111936468