欢迎来到千学网!
您现在的位置:首页 > 实用文 > 其他范文

C网络游戏程序员笔试题

时间:2022-12-23 08:19:12 其他范文 收藏本文 下载本文

以下是小编整理的C网络游戏程序员笔试题,本文共9篇,欢迎阅读分享。

C网络游戏程序员笔试题

篇1:C网络游戏程序员笔试题

1 请写代码打印100之内的素数,讲求效率(请做你的解法的效率分析)

2 求m,n的最大公约数

3 输入10个字符串,打印出其中重复的字符串以及重复的次数

4 请画图例(UML最好),给出windows下的文件目录的设计模式

5 用OO表示狼吃羊羊吃草

问答题:

1 什么是subversion?它与vss,cvs的区别在哪?或者有什么优势?

2 什么是wiki,关于程序项目的wiki你使用过哪些?wiki对你有什么帮助吗?wiki与程序文挡的差别在哪?

3 什么是tdd?你使用过吗?tdd的关键在哪?跟传统的单元测试相比,有什么优越性?

4 什么是单元测试?你用过哪些单元测试工具?他们的区别和好处各有哪些?你主要倾向于哪一种?

5 什么是编程规范?你倾向于什么样的规范?他的好处在哪?

6 什么是mfc?你经常使用那些mfc类?那么为什么很多人不主张使用mfc?

7 什么是头文件依赖?你注意过这些问题吗?你注意过编译的时间吗?你怎么改进编译时间?

8 什么是面向对象?你在哪些方面用过面向对象?带来了什么好处?又有什么弊端?

9 什么是接口编程.com,他带来了什么好处?适用于什么地方?

10 什么是设计模式?使用设计模式有什么好处?列举你使用过的设计模式

后面还有一道文学诗歌,一道历史常识题以及三道逻辑推理题。

篇2:C网络游戏程序员笔试题

1. New delete 与malloc free 的联系与区别?

答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.

2. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?

答案:i 为30.

3. 有哪几种情况只能用intialization list 而不能用assignment?

答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。

4. C++是不是类型安全的?

答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

5. main 函数执行以前,还会执行什么代码?

答案:全局对象的构造函数会在main 函数之前执行。

6. 描述内存分配方式以及它们的区别?

1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。

2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。

3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

7.struct 和 class 的区别

答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和 class 在其他方面是功能相当的。

从感情上讲,大多数的开发者感到类和结构有很大的差别。感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。既然大多数人都这么认为,那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的!)时,你也许应该使用 struct 关键字,否则,你应该使用 class 关键字。

8.当一个类A 中没有生命任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)

答案:肯定不是零。举个反例,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。

9. 在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel)

答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。

篇3:C网络游戏程序员笔试题

1. “引用”与指针的区别是什么?

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。此外,就是上面提到的对函数传ref和pointer的区别。

2. 什么时候需要“引用”?

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。

篇4:C程序员笔试题

1、不正确的附值或赋初值方式为__

a、char str=“string”;

b、char str[10]; str=“string”;

c、char *p=“string”; c

d、char *p; p=“string”;

2、对于以下的变量定义,表达式___是正确的

struct node {

char s[10];

int k;

} p[4];

a、p->k=2;

b、p[0].s=“abc”;

c、p[0]->k=2;

d、p->s='a';

3、在64位高档机中,long占字节数为

a、4 b、8 c、32 d、64 b

4、函数中局部变量生成于__中

a、堆 b、栈 c、静态存储区 d、代码存储区 c

5、下面程序的输出__

#pragma pack(1) //如果#pragma pack(4)

void main

{

struct test {

char c;

short s1;

short s2;

int i;

};

cout<

}

a、9 b、10 c、12 d、16

6、下面的程序段:

char a[3],b=“china”;

a=b;

printf(“%s”,a);

a、输出china b、ch c、chi d、编译出错

篇5:C程序员笔试题

1、下列函数中,可作为虚函数的是————

a、全局函数 b、构造函数

c、静态全局函数 d、析构函数

2、对静态成员不正确的描述是——

a、静态成员不属于对象,是类的共享成员

b、要在类外定义初始化

c、调用时,要通过类或对象激活,所以静态成员函数拥有this指针

d、非静态成员函数也可以操作静态数据成员

3、在创建派生对象时,构造函数的执行对象是——

a、对象成员构造函数、基类构造函数、派生类本身的构造函数

b、派生类本身的构造函数、基类构造函数、对象成员构造函数

c、基类构造函数、派生类本身的构造函数、对象成员构造函数

d、基类构造函数、对象成员构造函数、派生类本身的构造函数

4、假设V为抽象类,下列声明哪个正确

a、V fun(int) b、V *p

c、int fun(V) d、V Obj

5、假设已定义变量float data;

以二进制方式把data值写入输出文件流对象outfile中去,正确的是:

a、outfile.write((float *)&data, sizeof(float));

b、outfile.write((float *)&data, data);

c、outfile.write((char *)&data, sizeof(float));

d、outfile.write((char *)&data, data);

6、如下类定义:

class Foo {

public:

Foo(int v):value(v) //a

~Foo //b

private:

Foo //c

int value=0; //d

};

有错误的是____

7、下列关于栈的叙述正确的是

a、在栈中只能插入数据 b、只能删除数据

c、栈是先进先出的线性表 d、是先进后出的线性表

8、一个队列入列顺序是1,2,3,4,则输出顺序是

a、4321 b、1234 c、1432 d、3241

19、若执行语句: Point a(2), b[3], *c[4];

则Point类的构造函数被调用几次

a、1 b、2 c、3 d、4

篇6:C程序员笔试题

1、在x86架构的计算机上运行下面程序输出为_____

void main

{

int i=0x01020304;

unsigned char *pc=(unsigned char *)&i;

for(int j=0;j

cout<<*pc++<<“\t”; cout<<(int)*pc++<<“\t”;

}

}

a、4 3 2 1 b、1 2 3 4.

c、3 4 2 1 d、2 1 4 3

2、在SUN SPARC工作站上运行上面的程序结果为__

3、不是建立函数的目的选项是:

a、提高程序的运行效率

b、提高程序可读性

c、减少程序篇幅

d、减少程序文件所占内存

4、函数原型为void func;以下哪个函数指针类型定义是正确的

a、typedef FUNC void (*)

b、typedef void FUNC

c、typedef void (*FUNC);

d、typedef FUNC void;

篇7:C/C++程序员常见笔试题

C/C++程序员常见笔试题

试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)

解答:

BOOL型变量:if(!var)

int型变量: if(var==0)

float型变量:

const float EPSINON = 0.00001;

if ((x >= – EPSINON) && (x <= EPSINON)

指针变量: if(var==NULL)

剖析:

考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思,

一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量 (short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。

浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。如果写成if (x == 0.0),则判为错,得0分。

试题2:以下为Windows NT下的`32位C++程序,请计算sizeof的值

void Func ( char str[100] )

{

sizeof( str ) = ?

}

void *p = malloc( 100 );

sizeof ( p ) = ?

解答:

sizeof( str ) = 4

sizeof ( p ) = 4

剖析:

Func ( char str[100] )函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

数组名的本质如下:

(1)数组名指代一种数据结构,这种数据结构就是数组;

例如:

char str[10];

cout << sizeof(str) << endl;

输出结果为10,str指代数据结构char[10]。

(2)数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;

char str[10];

str++; //编译出错,提示str不是左值

(3)数组名作为函数形参时,沦为普通指针。

Windows NT 32位平台下,指针的长度(占用内存的大小)为4字节,故sizeof( str ) 、sizeof ( p ) 都为4。

试题3:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?

least = MIN(*p++, b);

解答:

#define MIN(A,B) ((A) <= (B) ? (A) : (B))

MIN(*p++, b)会产生宏的副作用

剖析:

这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换,

程序员对宏定义的使用要非常小心,特别要注意两个问题:

(1)谨慎地将宏定义中的“参数”和整个宏用用括弧括起来。所以,严格地讲,下述解答:

#define MIN(A,B) (A) <= (B) ? (A) : (B)

#define MIN(A,B) (A <= B ? A : B )

都应判0分;

(2)防止宏的副作用。

宏定义#define MIN(A,B) ((A) <= (B) ? (A) : (B))对MIN(*p++, b)的作用结果是:

((*p++) <= (b) ? (*p++) : (*p++))

这个表达式会产生副作用,指针p会作三次++自增操作。

除此之外,另一个应该判0分的解答是:

#define MIN(A,B) ((A) <= (B) ? (A) : (B));

这个解答在宏定义的后面加“;”,显示编写者对宏的概念模糊不清,只能被无情地判0分并被面试官淘汰。

试题4:为什么标准头文件都有类似以下的结构?

#ifndef __INCvxWorksh

#define __INCvxWorksh

#ifdef __cplusplus

extern “C” {

#endif

/*…*/

#ifdef __cplusplus

}

#endif

#endif /* __INCvxWorksh */

解答:

头文件中的编译宏

#ifndef __INCvxWorksh

#define __INCvxWorksh

#endif

的作用是防止被重复引用。

作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在symbol库中的名字与C语言的不同。例如,假设某个函数的原型为:

void foo(int x, int y);

该函数被C编译器编译后在symbol库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。_foo_int_int这样的名字包含了函数名和函数参数数量及类型信息,C++就是考这种机制来实现函数重载的。

为了实现C和C++的混合编程,C++提供了C连接交换指定符号extern “C”来解决名字匹配问题,函数声明前加上extern “C”后,则编译器就会按照C语言的方式将该函数编译为_foo,这样C语言中就可以调用C++的函数了。

试题5:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”

函数头是这样的:

//pStr是指向以’\0′结尾的字符串的指针

//steps是要求移动的n

void LoopMove ( char * pStr, int steps )

{

//请填充…

}

解答:

正确解答1:

void LoopMove ( char *pStr, int steps )

篇8:C笔试题

C笔试题

1) 读文件file1.txt的内容(例如):

12

34

56

输出到file2.txt:

56

34

12

(逆序)

2)输出和为一个给定整数的所有组合

例如n=5

5=1+4;5=2+3(相加的数不能重复)

则输出

1,4;2,3,

第一题,注意可增长数组的应用.

#include

#include

int main(void)

{ int MAX = 10;

int *a = (int *)malloc(MAX * sizeof(int));

int *b;

FILE *fp1;

FILE *fp2;

fp1 = fopen(“a.txt”,”r”);

if(fp1 == NULL)

{printf(“error1″);

exit(-1);

}

fp2 = fopen(“b.txt”,”w”);

if(fp2 == NULL)

{printf(“error2″);

exit(-1);

}

int i = 0;

int j = 0;

while(fscanf(fp1,”%d”,&a[i]) != EOF)

{i++;

j++;

if(i >= MAX)

{

MAX = 2 * MAX;

b = (int*)realloc(a,MAX * sizeof(int));

if(b == NULL)

{printf(“error3″);

exit(-1);

}a = b;

}}

for(;–j >= 0;)

fprintf(fp2,”%d\n”,a[j]);

fclose(fp1);

fclose(fp2);

return 0;

}

第二题.

#include

int main(void)

{unsigned long int i,j,k;

printf(“please input the number\n”);

scanf(“%d”,&i);

if( i % 2 == 0)

j = i / 2;

else

j = i / 2 + 1;

printf(“The result is \n”);

for(k = 0; k < j; k++)

printf(“%d = %d + %d\n”,i,k,i – k);

return 0;

}

#include

void main

{unsigned long int a,i=1;

scanf(“%d”,&a);

if(a%2==0)

{ for(i=1;i printf(“%d”,a,a-i);

}

else

for(i=1;i<=a/2;i++)

printf(” %d, %d”,i,a-i);

}

兄弟,这样的.题目若是做不出来实在是有些不应该, 给你一个递规反向输出字符串的例子,可谓是反序的经典例程.

void inverse(char *p)

{ if( *p = = ‘\0′ )

return;

inverse( p+1 );

printf( “%c”, *p );

}

int main(int argc, char *argv[])

{

inverse(“abc\0″);

return 0;

}

借签了楼上的“递规反向输出”

#include

void test(FILE *fread, FILE *fwrite)

{ char buf[1024] = {0};

if (!fgets(buf, sizeof(buf), fread))

return;

test( fread, fwrite );

fputs(buf, fwrite);

}

int main(int argc, char *argv[])

{ FILE *fr = NULL;

FILE *fw = NULL;

fr = fopen(“data”, “rb”);

fw = fopen(“dataout”, “wb”);

test(fr, fw);

fclose(fr);

fclose(fw);

return 0;

}

在对齐为4的情况下

struct BBB

{ long num;

char *name;

short int data;

char ha;

short ba[5];

}*p;

p=0×1000000;

p+0×200=____;

(Ulong)p+0×200=____;

(char*)p+0×200=____;

解答:假设在32位CPU上,

sizeof(long) = 4 bytes

sizeof(char *) = 4 bytes

sizeof(short int) = sizeof(short) = 2 bytes

sizeof(char) = 1 bytes

由于是4字节对齐,

sizeof(struct BBB) = sizeof(*p)

= 4 + 4 + 2 + 1 + 1/*补齐*/ + 2*5 + 2/*补齐*/ = 24 bytes (经Dev-C++验证)

p=0×1000000;

p+0×200=____;

= 0×1000000 + 0×200*24

(Ulong)p+0×200=____;

= 0×1000000 + 0×200

(char*)p+0×200=____;

= 0×1000000 + 0×200*4

你可以参考一下指针运算的细节

篇9:c经典笔试题

有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中.

#include

#include

int main(int argc,char* argv)

{

FILE* fp;

int i,j,k,num,NUM;

char c[50],t,ch;

if((fp=fopen(“A”,“r”))==NULL)

/*can be replaced by open

* int fd=open(“A”,O_RDONLY|O_CREAT);*/

{

printf(“fileA cannot be opened\n”);

exit(0);

}

printf(“\nA contents are:\n”);

for(i=0;(ch=fgetc(fp))!=EOF;i++)/*一个字符一个字符读*/

{

c[i]=ch;

putchar(c[i]);

}

num=i+1;

fclose(fp);

if((fp=fopen(“B”,“r”))==NULL)

{

printf(“fileB cannot be opened\n”);

exit(0);

}

printf(“\nB contents are :\n”);

for(i=0;(ch=fgetc(fp))!=EOF;i++)

{

c[num+i]=ch;

putchar(c[num+i]);

}

fclose(fp);

NUM=num+i+1;

for(k=0;k

{

for(j=0;j

{

if(c[j]>c[j+1])

{

t=c[j];

c[j]=c[j+1];

c[j+1]=t;

}

}

}

printf(“\nC fileis:\n”);

fp=fopen(“C”,“w”);

for(i=0;i

{

putc(c[i],fp);/*将字符一个个写入文件中*/

putchar(c[i]);/*一个个输出字符*/

}

fclose(fp);

return 1;

}

笔试题

DELL笔试题

人人笔试题

法务笔试题

爱立信笔试题

求职笔试题

笔试题编译器

笔试题智力

笔试题汉译英

飞利浦笔试题

《C网络游戏程序员笔试题(精选9篇).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

点击下载本文文档