语言试题
一 : 单项选择题
1.
void Example(char acHello[])
{
printf("%d", sizeof(acHello));
return;
}
void main()
{
char acHello[] = "hello";
Example(acHello);
return;
}
的输出是 ()
A 4B 5C 6D不确定
2. 网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转
换;如果主机是大字节序, 为了程序的一致性及可移植性, 最好也在程序中加上字节序转换的操作(空操作)。 ( )
正确 B. 错误
int *(*ptr)();
则以下叙述中正确的是 ( )
A) ptr是指向一维组数的指针变量
ptr是指向 int 型数据的指针变量
ptr是指向函数的指针 , 该函数返回一个 int 型数据
D) ptr是指向函数的指针, 该函数的返回值是指向int型数据的指针
此函数实现把 32 位 IP 地址 ( 网络序 ) 以字符串的方式打印出来:
char *IpAddr2Str(unsigned long ulIpAddr)
{
char szIpAddr[32];
unsigned long ulLocIpAddr = ntohl(ulIpAddr);d.%d.%d", ulLocIpAddr >> 24, (ulLocIpAddr >> 16) & 0xff, (ulLocIpAddr >> 8) & 0xff, ulLocIpAddr &
0xff);
return szIpAddr;
}
下面描述正确的是():
A、数组 szIpAddr空间不够;
B、函数返回局部数组szIpAddr变量地址;
C、输出的IP 地址次序颠倒;
5.
#define OK
0
#define ERR1
#define ERROR
(-1)
#define BUFFER_SIZE256
char *GetMemory(unsigned long ulSize)
{
char *pcBuf = NULL;
pcBuf = (char *)malloc(ulSize);
if(NULL == pcBuf)
{
return ERROR;
}
return pcBuf;
}
void Test(void)
{
char *pszBuf = NULL;
pszBuf = GetMemory(BUFFER_SIZE);
if(NULL != pszBuf)
{
strcpy(pszBuf, "Hello World!\r\n");
printf(pszBuf);
free(pszBuf);
}
return;
}
如下描述正确的是:
A、 pszBuf 指向的内存不能超过255
B、 GetMemory 函数的异常分支返回了-1 ,是一个非法地址
C、 GetMemory 中异常分支没有释放空间;
D、 pcBuf 为局部指针,指向的内存将在GetMemory 被调用后释放
6、 #include ""
unsigned short *Sum(unsigned char a, unsigned char b)
{
unsigned short s = 0;
s = a + b;
return &s;
}
int main()
{
unsigned short *p = NULL;
unsigned char a = 1, b = 2;
p = Sum(a, b);
printf("%u+%u", a, b);
printf("=%u\n", *p);
return 0;
}
程序执行结果是()
+2=0+2=3+2=NULLD.不可预测
7、设有如下定义:
BOOL gStatusA = FALSE;
BOOL gStatusB = TRUE;
int gVarA = 100;
int gVarB = 100;
则执行 main 函数后gVarA 和 gVarB 的值分别为 ()
BOOL CheckA()
{
if(gStatusA)
{
gVarA++;
}
else
{
gVarA--;
}
return gStatusA;
}
BOOL CheckB()
{
if(gStatusB)
{
gVarB++;
}
else
{
gVarB--;
}
return gStatusB;
}
int main(int argc, char* argv[])
{
if(CheckA() && CheckB() )
{
printf( “ Status OK ” );
}
return 0;
}