C语言试题一:单项选择题1. void Examplechar acHello printfquotdquot sizeofacHello return void main char acHello quothelloquot ExampleacHello 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 IpAddr2Strunsigned long ulIpAddr char
szIpAddr32 unsigned long ulLocIpAddr ntohlulIpAddr//把网络序转话为主机序voidVOS_sprintfszIpAddr quotd.d.d.dquot ulLocIpAddr gtgt 24 ulLocIpAddr gtgt 16 amp 0xff ulLocIpAddr gtgt 8 amp 0xff ulLocIpAddr amp 0xff return szIpAddr 下面描述正确的是A、数组szIpAddr空间不够B、函数返回局部数组szIpAddr变量地址C、输出的IP地址次序颠倒  5. define OK 0 define ERR 1 define ERROR -1 define BUFFER_SIZE 256 char GetMemoryunsigned long ulSize char pcBuf NULL pcBuf char malloculSize ifNULL pcBuf return ERROR return pcBuf void Testvoid
char pszBuf NULL pszBuf GetMemoryBUFFER_SIZE ifNULL pszBuf strcpypszBuf quotHello Worldrnquot printfpszBuf freepszBuf return 如下描述正确
的是A、pszBuf指向的内存不能超过255 B、GetMemory函数的异常分支返回了-1是一个非法地址C、GetMemory中异常分支没有释放空间D、pcBuf为局部指针指向的内存将在GetMemory被调用后释放6、include quotstdio.hquot unsigned short Sumunsigned char a unsigned char b unsigned short s 0 s    a    b return amps int main unsigned short p NULL unsigned char a    1 b    2 p Suma b printfquotuuquot a b printfquotunquot p return 0 程序执行结果是A.120 B.123 C.12NULL D.不可预
测7、设有如下定义: BOOL gStatusA FALSE BOOL gStatusB TRUE int gVarA 100 int gVarB 100 则执行main函数后gVarA和gVarB的值分别为BOOL CheckA ifgStatusA gVarA else gVarA-- return gStatusA BOOL CheckB ifgStatusB gVarB else gVarB-- return gStatusB int mainint argc char argv ifCheckA ampamp CheckB printf“Status OK” return 0    A 99和100 B 99和101 C 99和99 D 101和99 8.下面的代码中函数Test执行完毕后希望输出无符号长整型的1。void VarInitunsigned char pucArg pucArg    1 return void Test unsigned long ulGlobal VarInitampulGlobal printfquotluquot ulGlobal return 下面描述正确的是  A.给VarInit 函数传递的参数类型错误  B.printf输出格式错误C.传给VarInit 中参数pucArg的值为空指针9、void AddFunc unsigned int a unsigned int b unsigned int    c
c    a    b voi
d mainvoid unsigned char
e 200 unsigned char
f 100 unsigned char g
0 AddFuncunsigned inteunsigned intfunsigned int ampg printfquotd quotg 下面说法正确的是  A 对g进行类型转换导致函数调用时写内存越界B 对e、f进行类型转换导致函数调用时写内存越界C 函数调用时不能改变g的值。10、void mainvoid unsigned char a 200 unsigned char b 100 unsigned char c 0 cab printfquotd dquotabc
下列程序的执行结果为A 300 300 B 44 44 C 300 44 D 44 300 11、在X86VC6.0环境下有下列程序include ltstdio.hgt int main char cA unsigned char ucB unsigned short usC cA 128 ucB 128 usC cA ucB printfquot0xx quotusC usC cA shortucB printfquot0xx quotusC usC unsigned charcA ucB printfquot0xx quotusC usC cA
charucB printfquot0xx quotusC return 0 输出结果是  A 0x0 0x0 0x100 0xff00 B 0x0 0x100 0x100 0xff00 C 0x0 0x100 0x100 0x0 D 0x0 0x0 0x100 0x0 12.switchc中的c的
数据类型可以是char、long、float、unsigned、bool.    A. 正确  B. 错误13.void Example int i char acN
ew20 fori 0 i lt 10 i acNewi 0 printfquotdnquot strlenacNew return 的输出为  A 0 B 10 C 11 D不确定14.如下程序用于把quotbluequot字符串返回char GetBluevoid char pcColor char pcNewColor pcColor quotbluequot pcNewColor charmallocstrlenpcColor ifNULL pcNewColor return NULL strcpypcNewColor pcColor return pcNewColor 下面描述正确的是A、字符串“blue”存放在栈内B、函数GetBlue返回局部变量地址C、内存空间分配长度不够strcpy函数拷贝越界15.给出以下定义: char acX quotabcdefgquot char acY abcdefg 则正确的叙述为  A 数组acX和数组acY等价  B 数组acX和数组acY的长度相同  C 数组acX的长度大于数组acY的长度  D 数组acX的长度小于数组Y的长度16.有以下程序段char acArr quotABCDEquot char pcPtr forpcPtr acArr pcPtr lt acArr    5 pcPtr printfquotsnquot pcPtr return 输出结果是  A ABCD B A C E D ABCDE B D BCDE C C CDE D B DE E A E 17.void Example int i char acNew20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 fori 0 i lt 10 i acNewi 0 printfquotdnquot strlenacNew return 的输出为  A 0 B 10 C 11 D不确定18.如下程序用于把quotbluequot字符串打印出来void PrintBlue char pcBlue blue printfquotsquotpcBlue return 下面描述正确的是A、pcBlue数组初始化时没有字符串结束符B、数组pcBlue定义时必须指明长度19.如下代码实现中FuncA为每毫秒定时执行的函数在该函数中需要实现每TIME_INTERVAL毫秒执行一次
DO_Something的操作。请指出段代码中的错误define ULONG unsigned long define TIME_INTERVAL 200 void DoSomethingvoid /..../ return void FuncA static ULONG ulPreCall 0 ULON
G ulNowInMsHigh 0 ULONG ulNowInMsLow 0 VOID VOS_Tm_Now ampulNowInMsHigh ampulNowInMsLow / 获取当前的时间以毫秒为单位用64bits表示ulNowInMsHigh为高32位ulNowInMsLow为低32位/ if 0 ulPreCall ulNowInMsLow gt ulPreCall TIME_INTERVAL ulPreCall ulNowInMsLow else return DoSomething return A、函数FUNC_A第一次被调用时不执行Do_Something操作B、函数FUNC_A功能在一段时间后失效因为ulNowInMsLow溢出翻转C、ulPreCall不应该定义为静态变量20、define NULL 0 define MEM_OK 0 define MEM_ERR 1 enum ENUM_STAT_ITEM STAT_ITEM0 STAT_ITEM1 STAT_ITEM_BUTT typedef struct tag_PERM_COUNT_STAT_INFO unsigned short stat_item unsigned short number _SPermCountStatInfo
_SPermCountStatInfo pcsiSTAT_ITEM_BUTT STAT_ITEM0 16000
STAT_ITEM1 50000 unsigned long pulStatDataBuffer NULL unsigned short AllocPermMemoryvoid unsigned short usBufferSize 0 unsigned short usLoop 0 forusLoop 0 usLoop lt STAT_ITEM_BUTT usLoop usBufferSize
c语言中struct
pcsiusLoop.number pulStatDataBuffer unsigned longmallocsizeofunsigned long usBufferSize if NULL pulStatDataBuffer return MEM_ERR return MEM_OK 下面说法正确的是A unsigned short 类型不能表
示循环体中将16000与50000相加的和66000 B 数组pcsi的number域是unsigned short类型不能表示50000这么大的数字C 循环条件应该改为usLoopltSTAT_ITEM_BUTT 21.请指出下面这段代码中的错误unsigned long FuncB unsigned long ulCount unsigned long ulSum 0 while 0 lt
ulCount ulSum ulCount ulCount-- return ulSum void testvoid unsigned long ulTotal 0 ulTotalFuncB10 printfquotluquot ulTotal 下面描述正确的是A、while循环判断始终为真B、test打印输出55 C、循环体内在执行2的32次方后ulSum 开始溢出翻转22.请指出下面程序的错误: void Testvoid char szStr char
malloc100 ifNULL szStr return strcpyszStr quothelloquot freeszStr ifNULL szStr strcpyszStr quotworldquot printfquotsquotszStr return 下面描述正确的是A、strcpy没有将结尾符拷贝到szStr中B、对释放空间的指针进行拷贝操作C、szStr 被free后szStr即为空。23.define BUFFER_SIZE 256 void GetMemorychar ppszBuf ifNULL ppszBuf ASSERT0 return ppszBuf char mallocBUFFER_SIZE return void Testvoid char pszBufNULL GetMemoryamppszBuf strcpypszBuf quothello worldrnquot printfquotsquot pszBuf freepszBuf return 下面说法正确的是A、pszBuf 的值永远为NULL B、malloc内存后没有判断是否成功C、strcpy拷贝越界D、GetMemory无法将申请的内存地址传递给pszBuf 24、请问下面函数中1、2、3应该填入什么语句才合理A、不添不添不添B、freepMsg freeptmpMsg不添C、freepMsgfreeptmpMsgfreeptmpMsg D、不添freepMsgfreeptmpMsg E、freepMsg freepMsg freeptmpMsg F、不添不添freeptmpMsg define COMM_MSG_LEN 100 char GetMessageBufferint m
alloc_len char ptrNULL ptrchar mallocmalloc_len return ptr
int FuncTestvoid int malloc_len COMM_MSG_LEN char pMsgNULL char ptmpMsgNULL pMsg GetMessageBuffermalloc_len ifNULL pMsg ____1___ return ERROR fillMessagepMsg sendMessagepMsg ptmpMsg GetMessageBuffermalloc_len ifNULL ptmpMsg ____2___ return ERROR FillMessageptmpMsg SendMessageptmpMsg freepMsg ____3___ return OK 25.以下
叙述中不正确的是  A 在不同的函数中可以使用相同名字的变量B 函数中的形式参数是在栈中保存C 在一个函数内定义的变量只在本函数范围内有效D 在一个函数内的复合语句中定义的变量在本函数范围内有效复合语句指函数中的成对括号构成的代码26.全局变量可以定义在被多个.C文件包含着的头文件中。  A. 正确  B. 错误27.在函数内部定义的变量静态变量、寄存器变量等特殊变量除外的内存是在栈内存中所以在定义函数内部的变量的时候一定要保证栈不能够溢出。如果临时变量占用空间较大应该使用内存申请的方式这样该变量指向的内存就是在堆内存中了。  A. 正确B. 错误28.局部变量可以和全局变量重名编译的时候不会出现错误但一旦不小心就可能导致使用错误变量所以在定时局部变量的时候不要和全局变量重名。  A. 正确  B. 错误29.设有如下定义: unsigned long pulArray    6 7 8 9 10 unsigned long pulPtr 则下列程序段的输出结果为pulPtr pulArray pulPtr    2    2 printf quotddnquot pulPtr pulPtr    2 A810 B68 C79 D610 30. struct stu int num char name10 int age void Funstruct stu p printfquotsnquot p.name return void main struct stu students3 9801quotZhangquot20 9802quotWang
quot19 9803quotZhaoquot18 Funstudents    2 return 输出结果是  A Zhang BZhao C Wang D 18 31.以下程序运行后输出结果是void main char szStr quotabcdequot szStr    2 printfquotlu nquotszStr return    A cde B 字符c的ASCLL码值C quotabcdequot这个常串中字符c
所在的地址  D 出错32.设有以下宏定义: define N 3 define Yn N1n /这种定义在编程规范中是不允许的如果你在实际中这么用了请自打手心三下/ 则执行语句:z    2 N Y5 1后z的值为  A 出错  B 42 C 48 D54 33、有如下宏定义和结构定义define MAX_SIZE AB struct _Record_Struct unsigned char Env_Alarm_ID :4 unsigned char
para1 :2 unsigned char state unsigned char avail:1 Env_Alarm_Record pointer struct _Record_Struct malloc sizeofstruct _Record_Struct MAX_SIZE 当A2 B3时pointer分配个字节的空间。注意机器是按照4字节对齐A20 B15 C11 D 9 34、请问下面题目中abc输出值为多少A、1021030 B、100210300 C、110210310 D、10021030 E、11020030 include ltstdio.hgt define FUNCA A A 10 int mainint argc char argv int a 10 int b 20 int c 30 ifa gt 10 FUNCa ifb gt 20 FUNCb ifc gt 30 FUNCc printfquotadbdcdrnquotabc return 0 35.在X86下有下列程序include ltstdio.hgt void main union int k char i2 sa s ampa s-gti0 0x39 s-gti1 0x38 printfquotxnquot a.k 输出结果是  A 3839 B 3938 C 380039 D 不可预知36、define MAX_MEM_SIZE 100 int GetMemint iLen void ppMem ifNULLppMem return 1 ifiLenlt0 return 0 else ifiLenltMAX_MEM_SIZE ppMemmallociLen return iLen else ppMemmallocM
AX_MEM_SIZE return MAX_MEM_SIZE void main char pMyMem int i int j i GetMemi voidamppMyMem ifNULLpMyMem forj0 jlti j pMyMemj0 下面说法正确的有A、因为pMyMem未初始化main函数中的GetMem可能会返回1 B、因为i未初始化main函数中GetMem可能会返回比
MAX_MEM_SIZE大的值C、因为pMyMem未初始化for循环内的赋值操作可能会导致写内存异常D、无论pMyMem i j为何值时main函数内都不会出现写内存异常37、define MAX_MEM_SIZE 100 int GetMemint iLen void ppMem ifiLenlt0 return -1 else if0iLen return 0 else ifiLenltMAX_MEM_SIZE ppMemmallociLen return iLen else ppMemmallocMAX_MEM_SIZE return MAX_MEM_SIZE void main char pMyMem int ik unsigned int j jGetMemi amppMyMem ifjgt0 fork0 klti k
pMyMemk0 下面说法正确的有A、只要将pMyMem初始化为NULL可以避免main函数内的for循环出现写内存异常B、虽然i和pMyMem均未初始化只要将ifjgt0改为if0ltjampampjltMAX_MEM_SIZE可以避免出现for循环内写内存异常C、虽然i 和pMyMem均未初始化只要将main函数内的for循环比较由klti改为kltj可以避免出现for循环内写内存异常D、上面三种说法都不对。二:多项选择题1. 定义结构体时有下面几种说法请指出正确的多选___ A、结构体中的每个部分最好进行四字节对齐B、结构体的总长度最好是四字节对齐C、结构中成员的存放不用考虑字节对齐情况  2. 0x12345678 在采用BigEndian中内存的排列顺序是______在采用LittleEndian
内存中的排列顺序是______. 答案从左到右内存地址依次增加A.12 34 56 78 B.34 12 78 56 C.78 56 34 12 D.56 78 12 34 3.下面程序期望输出str hello world: char GetStrchar p p quothello worldquot return p void main char str NULL ifNULL GetStrstr printfquotrn str squotstr return 下面描述正确的是A、str始终为NULL B、函数GetStr返回值始终不为空C、该程序无法得到预期的输出结果因为GetStr函数无法将字符串地址带给实参4、下面程序期望得到g_Variable的值并打印出来。unsigned char g_Variable void GetGlobalAddrunsigned char p p ampg_Variable
void main unsigned char temp NULL_PTR GetGlobalAddrtemp printfquotrn Got glo.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。