文档库 最新最全的文档下载
当前位置:文档库 › 程序试题(9t)2

程序试题(9t)2

金山软件有限公司西山居工作室

程序类笔试试卷

(考试时间:120分钟)

个人信息(必填)

基本信息姓名:__张海明___ 性别:____男_____ 年龄:___22_____ 学校名称:___西电______ 学院名称:__计算机学院__

专业:__教育技术学_

学历:__本科________ 毕业日期:201_2__年

联系方式手机:_136********_______QQ:_616856157__ 电子邮箱:__lear.chang@https://www.wendangku.net/doc/0d18435253.html,______

紧急联系人:_汪璐______ 手机:___139********____

一、填空题

1.2字节有符号整型数据可表示的数据范围为:-32768______~___32767___

char a[] = "abc\0d"; char * b = a;

printf("%d, %d, %d\n", sizeof(a), sizeof(b), strlen(a));

以上程序片段的输出为(32位编译环境):

___5___, _____4_, _____3_

int n = 0;

for (int i = 0; i < 8; i++) n = 1 << i | n >> 1;

printf("0x%x\n", n);

以上程序片段的输出为:___128___

int f(int a)

{

if (a & 1) return f(--a) + 1;

else if (a > 0) return f(a >>= 1);

else

return 1;

}

调用f(5)的返回值是:______

2.用一条语句将a,b 两个数值做交换:____________;

二、简答题

1.TCP建立连接过程,为什么要3次握手?

2.static关键字有哪些用法?分别是什么作用?

3.程序运行时出现间程序无响应,CPU占用100%。此时可能是出现了什么问题?该

如何确认问题所在?

4.内存泄露一般是如何产生的?如何避免?

5.分别写一个宏和一个函数来获取数组元素个数,如COUNT(a)会得到a数组元素个

数。

6.按照你的猜测,一个含客户端程序的网络游戏,从玩家开启客户端主程序到进入游

戏世界,客户端与服务端需要进行哪些必须的网络协议交互?

7.对于以上各题(填空和简答),你觉得回答很有困难的是哪几道?离开考场后如果

有必要,你会如何寻求这几道题的正确答案?

三、改错题

请找出下面代码片段的错误和不足,并作出更正。附MultiByteToWideChar函数的MSDN文档说明。

(https://www.wendangku.net/doc/0d18435253.html,/en-us/library/ee488225.aspx右侧从“This function maps a character string to a wide-character (Unicode) string.”开始,到“the function returns 0 and sets GetLastError with the error ERROR_NO_UNICODE_TRANSLATION.”结束)

代码片段如下:#define KGLOG_PROCESS_ERROR(Condition) \

do \

{ \

if (!Condition) \

{ \

printf("KGLOG_PROCESS_ERROR(%s) at line %d in %s\n", #Condition, __LINE__, __FUNCTION__ ); \

goto Exit0; \

} \

} while (false)

#define KD_N_CODE_PAGE 936 // 936 ANSI/OEM - Simplified Chinese (PRC, Singapore)

// 函数作用:打印字符的特定子串(针对可能含有中文的情况)

// 参数nSubStart:子串起始索引

// 参数nSubLen:子串长度

// 返回是否执行成功

BOOL PrintSubStr(LPCSTR pszStr, INT nSubStart, INT nSubLen)

{

BOOL bResult = FALSE;

LPWSTR pwszOut;

INT nBufLen;

INT nOutLen;

KGLOG_PROCESS_ERROR(pszStr == NULL);

KGLOG_PROCESS_ERROR(nSubStart >= 0);

KGLOG_PROCESS_ERROR(nSubLen >= 0);

nBufLen = MultiByteToWideChar(KD_N_CODE_PAGE, 0, pszStr, -1, NULL, 0);

KGLOG_PROCESS_ERROR(nBufLen >= 0);

pwszOut = new WCHAR[nBufLen];

KGLOG_PROCESS_ERROR(pwszOut != NULL);

nOutLen = MultiByteToWideChar(KD_N_CODE_PAGE, 0, pszStr, -1, pwszOut, nBufLen * sizeof(WCHAR));

KGLOG_PROCESS_ERROR(nOutLen == nBufLen);

pwszOut[nSubLen] = L'\0';

setlocale(LC_ALL,"chs"); // 设定本地语言为中文简体,为下面printf做准备

printf("%ls\n", pwszOut + nSubStart);

bResult = TRUE;

if (pwszOut)

delete[] pwszOut;

Exit0:

return bResult;

}

四、编程题

1.自定义一个链表结构。并用任意方法实现一个对给定链表进行排序的函数。

2.游戏内举行一个活动。设有56张民族卡片,每天每个玩家可以参与活动并获得N

张随机卡片,活动持续30天。假定玩家会每天都参加活动,即每人可得30*N张

卡片。

1)实现函数float Check1(int N)粗略计算对于不同的N,玩家集齐56张卡

片的概率。(如果你能答出下面一问,这一问可以不用答)

2)实现函数float Check2(int N, int C)粗略计算对于不同的N,玩家集齐

C张卡片的概率。

3.实现一个内存缓冲区类(用char数组做缓冲即可),至少实现:创建定长缓冲区、

类拷贝、扩大缓冲区长度(保留数据)三个主要功能。

相关文档
相关文档 最新文档