C语言试题
一:单项选择题
1.
void Example(char acHello[])
{
printf("%d", sizeof(acHello));
return;
}
void main()
{
char acHello[] = "hello";
Example(acHello);
return;
}
的输出是( )
A 4 B 5 C 6 D不确定
2.网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。( )
A. 正确 B.错误
3. int *(*ptr)();
则以下叙述中正确的是( )
A) ptr是指向一维组数的指针变量
B) ptr是指向int型数据的指针变量
C) ptr是指向函数的指针,该函数返回一个int型数据
D) ptr是指向函数的指针,该函数的返回值是指向int型数据的指针
4.此函数实现把32位IP地址(网络序)以字符串的方式打印出来:
char *IpAddr2Str(unsigned long ulIpAddr)
{
char szIpAddr[32];
unsigned long ulLocIpAddr = ntohl(ulIpAddr);//把网络序转话为主机序
(void)VOS_sprintf(szIpAddr, "%d.%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 ERR 1
#define ERROR (-1)
#define BUFFER_SIZE 256
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 "stdio.h"
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;
}
程序执行结果是()
A.1+2=0 B.1+2=3 C.1+2=NULL D.不可预测
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;
}
A, 99和100 B, 99和101 C 99和99 D 101和99
8.下面的代码中,函数Test执行完毕后,希望输出无符号长整型的1。
void VarInit(unsigned char *pucArg)
{
*pucArg = 1;
return;
}
void Test()
{
unsigned long ulGlobal;
VarInit(&ulGlobal);
printf("%lu", ulGlobal);
return;
}
下面描述正确的是:( )
A.给VarInit( )函数传递的参数类型错误
B.printf()输出格式错误
C.传给VarInit( )中参数pucArg的值为空指针
9、
void AddFunc (unsigned int a, unsigned int b, unsigned int * c)
{
*c = a + b;
}
void main(void)
{
unsigned char e = 200;
c语言下载什么 unsigned char f = 100;
unsigned char g = 0;
AddFunc((unsigned int)e,(unsigned int)f,(unsigned int *)&g);
printf("%d ",g);
}
下面说法正确的是():
A 对g进行类型转换导致函数调用时写内存越界;
B 对e、f进行类型转换导致函数调用时写内存越界;
C 函数调用时不能改变g的值。
10、void main(void)
{
unsigned char a =200;
unsigned char b =100;
unsigned char c = 0;
c=a+b;
printf("%d %d",a+b,c);
}
下列程序的执行结果为()
A 300 300
B 44 44
C 300 44
D 44 300
11、在X86,VC++6.0环境下,有下列程序
#include <stdio.h>
int main()
{
char cA;
unsigned char ucB;
unsigned short usC;
cA = 128;
ucB = 128;
usC = cA + ucB;
printf("0x%x ",usC);
usC = cA + (short)ucB;
printf("0x%x ",usC);
usC = (unsigned char)cA + ucB;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论