C语言面试题分享(5)

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

#include <stdio.h>

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

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

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

答案:A

评析:由于本题定义的是共用体,所以成员列表中的整型变量x与字符数组c共占用同一个存储单元,通常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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾爱技术圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值