红白黑三个小球c语言,面试题目C语言(答案1).docx

1、 编写一段程序实现以下功能:

输入一个整数n ;

A、 如果n是一位整数,则输出n,否则将各个位上的数加起来得到结果n,

B、 继续步骤A

例子:输入n=45699

1、 各位之和为4+5+6+9+9=33 不是一位数,则n=33

2、 继续各位之和为:3+3=9;结果为一位数,得到最后结果为9

2、输入一个整数N,和一个整数M,则由1到N的各个整数围成一个圆,现要求你从1开始数到M并将第M个数从此列中去掉,并存入已给出的数组,继续从你取出的数的后一位从1开始数,再次数到M为止,从此列中去掉,并存入已给出的数组,一直这样数,直到剩余一个数,最后把你存入数组的数和最后一个数分别打印出来。

例子:

N=10,M=3;

A、1 2 3 4 5 678910

3、从1开始数数到M(3)则将3取出,并存入数组,剩余数为

B、1 2 4 5 678910

4、从下一位(4)作为1开始数,数到M(3)即6,则将6取出,并存入数组,剩余数为

C、1 2 4 5 78910

(依此规律继续,直到剩余最后一个数为止)……………………

最后打印结果为:

从圆中一次取出的数据为:3692718510

最后剩余的数位:4

funA(int *x,int a,int b){

return a*b;

}

funB(int*x,int a,int b){

return a%b;

}

funC(int (*t)(), , int x ,int y){

return (*t)(y,x);

}

Main(){

Int x,a,b;

A = 9;

B = 3;

X = funa(b,a);

X += funC(funB,a,b);

Printf(“%d”,x);

}

求输出结果

下列哪种定义方式是错误的

Char w[2][40];w[1]=”string1”;

Char *w[2];w[1] = “string2”;

Char w[][40] = “string3”;

Char w[] = “string4”;

Java

求结果

Public Test{

Public void do(){

Static int I;

++I;

}

Public static void main(String[] args){

Test test = new Test();

test.do();

system.out.println(i);

}

}

数据库的题目也有一些,比如某个数据库,三个值 A B score

要查找score的平均成绩,按B分组,如果分数相同,按B的降序显示,还要按平均Score的升序显示

5、内存和指针使用的理解

Linux系统(核心技术点)

1、进程有独立的地址空间

2、进程间通信的机制

3、描述OSI分层结构

———————————————————————————————————————

1、存储区有哪些,static int a存在哪个区

2、二维数组指针定义,int指针定义,行指针定义,返回int型方法的指针带char型参数

3、合法的ip地址选择

4、在局部变量是否可以和全局变量同名

5、strcpy的实现

6、const char * p ,char const *p,char * const p的区别

7、堆和栈的区别

8、heap和stack的区别

9、判断程序错误有一条程序 printf(str);(str是char型)

10、写出程序运行结果里有一条程序 x &=....(不知道&=是什么)

11、写出你接触过最复杂的数据处理

12、写了一个链表插入节点的方法

13、比较注重线程的操作

——————————————————————————————————————

单选题

1. 以下程序的输出结果是_____a

Main( )

{

Int n=4;

While (n- -)

Printf(“%d”,- -n);

}

a.) 2 0 b.) 3 1 c.) 3 2 1 d.) 2 1 0

2. 设有以下宏定义:

#define N 4

#define Y(n) ((N+1)*n) /*这种定义在编程规范中是严格禁止的*/

则执行语句:Y(5+1)为_____c

a.) 30 b.) 28 c.) 26 d.) 24

3. enum ENUM_A

{

X1

Y1

Z1=5

A1

B1

};

enum ENUM_A enumA=Y1;

enum ENUM_A enumB=B1;

请问 enumA=( ); enumB=( ); b

a.) 1,4 b.) 1,7 c.) 2,4 d.) 1,5

4.若有函数max(a,b),并且函数指针变量p已指向函数,当调用该函数时正确的调用方法:______c

a.) (*p)max(a,b); b.) *pmax(a,b); c.) (*p)(a,b); d.) *p(a,b);

5. 对栈S进行下列操作:push(1),push(5),pop(),push(2),pop(),pop()。则此时栈顶元素是______ d

a.) 1 b.) 2 c.) 0 d.) 不确定

6.在一个32位的操作系统中,设void *p=malloc(100)。请问sizeof(p)的结果是___b_

a.) 100 b.) 4 c.) 2 d.) 6

7. 若已定义:int a[9],*p=a,并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是_____c

a.) p+1 b.) a+1 c.) a++ d.) ++p

8.设有如下定义:

Unsigned long pulArray[]={6,7,8,9,10}

Unsigned long *pulPtr;

则下列程序段的输出结果为______d

{

pulPtr=pulArray;

*(pulPtr+2)+=2;

Printf(“%d,%d\n”,*pulPtr,*(pulPtr+2));

}

a.) 8,10 b.) 6,8 c.) 7,9 d.) 6,10

9.以下程序运行后,输出结果是 d(c)

Void main( )

{

Char *szStr=”abcde”;

szStr +=2

printf(“%lu\n”,szStr);//printf(“%d\n”, *szStr);

return;

}

a.) cde b.) 字符c的ASCLL码值 c.) 字符c的地址 d.) 出错

10. 给出以下定义: C

Char X[ ]=”hello”;

Char Y[ ]={‘h’,’e’,’l’,’l’,’o’};

则正确的叙述为______

a.) 数组X和数组y等价 b.) 数组X和数组Y的长度相同

c.) 数组X的长度大于数组Y的长度 d.) 数组X的长度小于数组Y的长度

11. 在32位X86下,有下列程序

#include{

Union

{

Int k;

Char i[2];

}*s,a;

S=&a;

s->i[0]=0x39;

s->i[1]=0x38;

printf(“%x\n”,a.k);

}

输出结果是______a(d)

a.) 3839 b.) 3938 c.) 380039 d.) 不可预知

12.有如下函数定义:

Unsigned long MyFunc(unsigned long ulKey)

{

return ( ((ulKey &0x000000ffUL)<<24)

|((ulKey &0x00000ff00UL)<<8)

|((ulKey &0x00ff0000UL)>>8)

|((ulKey &0xff000000UL)>>24)

}

MyFunc(0x12345678)的返回值_____c

a.) 0x12345678 b.) 0x87654321 c.) 0x78563412 d.) 0x12563478

13. ((a>b)?a:b)代表什么含义______b

a.) 代表a,b之中较小的那个值 b.) 代表a,b之中较大的那个值

c.) 代表a是否比b大 d.) 语法错误

14.某系统总线的一个总线周期包含3个时钟周期,每个总线周期可以传送32位数据。若总线的时钟频率为33MHz,则总线带宽为_____MB/s。d(33*32)/3= 44

a.) 11 b.) 22 c.) 33 d.) 44

15.如下定义,则s在内存中占多大空间______a

#pragma pack (1)

Union

{

Struct

{

Unsigned char aa:4;

Unsigned char ab:4;

} a;

Unsigned char c;

Unsigned char d;

} s;

a.) 1byte b.) 2byte c.) 3byte d.) 4byte

16. 如下定义:

Union tagAAAA

{

Struct

{

Char ucFirst;

Short usSecond;

Char ucThird;

}half_a;

Long li

}number;

在按1字节对齐情况下:sizeof(union tagAAAA)大小是____a

在按4字节对齐情况下:sizeof(union tagAAAA)大小是_____c

a.) 4byte b.) 6byte c.) 8byte d.) 12byte

17. 0x12345678在采用BigEndian中内存的排列顺序是__a___,在采用LittleEndian内存中的排列顺序是_c____(答案从左到右内存地址依次增加)

a.) 12 34 56 78 b.) 34 12 78 56 c.) 78 56 34 12 d.) 56 78 12 34

18.关于静态变量,下面说法“不正确”的有_______a

a.) 静态变量在堆栈中分配;

b.) 静态变量的作用域一定是局部的,例如在一个文件内或一个函数内;

c.) 静态变量可分为静态局部变量和静态全局变量;

d.) 静态变量存在于数据段中;

19. 下面正确的有_____a

a.) 在中断中,不能同步获取信号量,但可以释放信号量;

b.) 在中断中,可以使用系统调用sleep函数来等待一会儿;

c.) 每一个进程有自己的独立地址空间,每一个线程也有自己的独立地址空间;

d.) CPU占有率为60%,意思是CPU有60%时间在运行指令;40%时间没有运行指令;

20.设有如下定义:int(*ptr)( );则以下叙述中正确的是_____c

a.) ptr是指向一维组数的指针变量;

b.) ptr是指向int型数据的指针变量;

c.) ptr是指向函数的指针,该函数返回一个int型数据;

d.) ptr是一个函数名,该函数的返回值是指向int型数据的指针;

21.在Windows95环境下,定义数组:int **a[2][4];则数组a所占用的内存单位为_____b

a.) 8字节 b.) 32字节 c.) 64字节 d.) 不能确定

22.由国际标准化组织(ISO)和国际电信联盟(ITU-T)共同提出的开放系统互连(OSI)参考模型中共有__b_层,参考模型的最高层则为___c__层。

a.) 4 b.) 7 c.) 应用 d.) 会话

23.关于以太网中的ARP协议,描述错误的是_____a_

a.) 根据IP地址查询其对应的MAC地址;

b.) 根据MAC地址查询其对应的IP地址,便于IP通信;

c.) 通过ARP协议产生的IP和MAC地址的映射,超时会淘汰;

d.) ARP请求中的MAC地址为广播地址;

24.关于TCP、UDP及其上层的应用,描述错误的是____b___

a.) TCP协议时面向连接的,UDP协议是面向无连接的;

b.) UDP不保证数据的可靠传送,而文件的传递时要求必须无错传送的,因而所有基于文件传递的应用都不能基于UDP,如TFTP;

c.) telnet是基于TCP的终端应用,连续输入的多个字符可能会被封装到一个TCP包中;

d.) 在同一节点上,基于TCP和UDP的应用端口号可以重叠;

25、下面合法的IP地址是:(c )。

A. 129,1,150,115

B. 211.260.218.244

C. 192.168.192.1

D. 24.128.12

改错题

1. 请指出下面程序的错误

Unsigned char i=10;// int i = 10;

Char b=100;

Char *p;

Void f( void )

{

//p = &b;

While(- -i >=0)

{

*(p++)=d;// (*p)++;//*p = d

}

}

2.下面函数要实现打印hello world的功能,请问程序中有何错误?

Void *GetMemory(void)

{

Char str[ ] =”hello world”;// char *str = ”hello world”;

Return str;

}

Void Test(void)

{

Char *str = NULL;

Str = (char *) GetMemory();

Printf(str);//printf(“%s”, str);

}

3.请问如下代码有什么错误

#define MAX_SIZE 1000

#define NULL 0//不要

#define TRUE 1

#define FALSE 0

Struct XXX

{

Unsigned short a;

Unsigned short b;

};

Int demo (struct XXX *p, unsigned long size)

{

Struct XXX *temp;

Temp=(struct XXX *)malloc(sizeof(struct XXX) *MAX_SIZE);

If(NULL==temp)

{

Return FALSE;

}

Memcpy(temp,p, sizeof(struct XXX)*size);

。 。 。(其他正常操作)

Free(temp);

//temp = NULL;

Return TRUE;

4.如下程序用于把“blue”字符串返回,请指出其中的错误:

Char *GetBLUE(void)

{

Char* pcColor;

Char* pcNewColor;

pcColor=”blue”;

pcNewColor=(char*)malloc(strlen(pColor));//pcNewColor=(char*)malloc(strlen(pColor)+1)

//memset(pcNewColor, 0, strlen(pColor)+1);

strcpy(pcNewColor,pcColor);

return pcNewColor;

}

5.请问如下程序段有什么错误

Main( )

{

Unsigned long i = 0,*p,*p1;

P=(unsigned long *)malloc(10000);// P=(unsigned long *)malloc(10000*4)

P1=p;

For (i=0;i<9999;i++)

{

*p1=0x100;

P1++;

}

。 。 。(其他操作)

free(p);

//p = NULL:

编程题

对称数判断问题

请编写一段程序,判断一个正整数是否为对称数(对称数即左右对称数字,如3、22、121、1331、34543等),不允许利用C语言将数字转换为字符串的库函数。

BOOL JudgeNumberSymmetry(unsigned long ulNumber)

排队队列问题

n个人,排成1对,(p1,p2,p3….pn)从第1个人开始从1报数,报数到3的人离开队列,队列里的下一个人继续从1开始报数,依次反复,当数到队列尾时,从队列头部继续报数,这样周而复始,直到队列剩一人。

给一个简单例子:

1,2,3,4,5,6,7,共7人

报数结果如下:

1,2,4,5,7,第一轮,3,6离开队列,7报数1,然后从队列头部继续报数,那么第1个人报数2,如此

1,4,5这样第二轮,位置2和位置7离开队列,并且从队列头部继续报数,第1个人报数1,因为对队列尾部的7恰好报数到3。

1,2这样第3轮,5淘汰,

然后开始位置1的人报数1,最后位置1正好报数3,于是离开队列,最后剩下的人是2。

这样给定7个人,原始位置2的人是剩下的人。

请实现一个简单程序,实现上述问题,程序输入n,输出那个最后剩下的人的原始位置。

———————————————————————————————————————

基础题

1.196.183.27.0要划分为2个网段,子网掩码是多少

2.A类网址最多可以包含多少个网络

3.栈的定义 题目为英文,选择题

4.队列的定义题目为英文,选择题

5、

funA(int *x,int a,int b){

return a*b;

}

funB(int*x,int a,int b){

return a%b;

}

funC(int (*t)(), , int x ,int y){

return (*t)(y,x);

}

Main(){

Int x,a,b;

A = 9;

B = 3;

X = funa(b,a);

X += funC(funB,a,b);

Printf(“%d”,x);

}

求输出结果

6、

下列哪种定义方式是错误的

Char w[2][40];w[1]=”string1”;

Char *w[2];w[1] = “string2”;

Char w[][40] = “string3”;

Char w[] = “string4”;

Java

求结果

Public Test{

Public void do(){

Static int I;

++I;

}

Public static void main(String[] args){

Test test = new Test();

test.do();

system.out.println(i);

}

}

7、数据库的题目也有一些,比如某个数据库,三个值 A B score

8、要查找score的平均成绩,按B分组,如果分数相同,按B的降序显示,还要按平均Score的升序显示

9、Arraylist和linklist的区别

10、方法重载和隐藏的区别

11、在不同版本下INT的大小会不会改变

12、关于GC内存回收系统什么时候回收资源

13、==和equal的区别

14、接口和抽象类的区别和优点

15、关键字

16、Static的用法

———————————————————————————————————————

题目1:在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?

题目2:New delete 与malloc free 的联系与区别?

题目3:static有什么用途?

题目4:引用与指针有什么区别?

题目5:请实现排序函数。

void sort(int data[],int size)

{

}

题目 6:

void GetMemory(char *p)

{

p = (char *)malloc(100);

}

void Test(void)

{

char *str = NULL;

GetMemory(str);

strcpy(str, "hello world");

printf(str);

}

请问运行Test 函数会有什么样的结果?

题目7:已知strncmp 函数的原型是

int strncmp(char *str1, char *str2, int maxlen);

比较字符串str1和str2的大小,如果str1小于str2,返回值就<0,反之如果str1大于str2,返回值就>0,如果str1等于str2,返回值就=0,maxlen指的是str1与str2的比较的字符数。此函数功能即比较字符串str1和str2的前maxlen个字符。

不调用C++/C 的字符串库函数,请编写函数实现

题目8:查错,请找出如下API的错误。

/*函数功能,从传入的字符串查找某个特定字符 0x47f1 ,如果找到,返回1,如果没找到,返回0*/

int FindSpecialString(char* pString)

{

char i = 0;

char tmpString[5000];

memcpy(&tmpString, pString,sizeof(pString));

for( i = 0; i < 5000; i ++)

{

if( 0x47f1 == tmpString[i])

{

return 1;

}

}

}

——————————————————————————————————————

什么是预编译

何时需要预编译:

1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

char*constp;

charconst*p

constchar*p

上述三个有什么区别?

char*constp;//常量指针,p的值不可以修改

charconst*p;//指向常量的指针,指向的常量值不可以改

constchar*p;//和charconst*p

charstr1[]="abc";

charstr2[]="abc";

constcharstr3[]="abc";

constcharstr4[]="abc";

constchar*str5="abc";

constchar*str6="abc";

char*str7="abc";

char*str8="abc";

cout

2、嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。

while(1){}或者for(;;)

3、关键字static的作用是什么?

定义静态变量

4、关键字const有什么含意?

表示常量不可以修改的变量。

5、关键字volatile有什么含意?并举出三个不同的例子?

提示编译器对象的值可能在编译器未监测到的情况下改变。

——————————————————————————————————————

1、 编写一段程序实现以下功能:

输入一个整数n ;

A、 如果n是一位整数,则输出n,否则将各个位上的数加起来得到结果n,

B、 继续步骤A

例子:输入n=45699

1、 各位之和为4+5+6+9+9=33 不是一位数,则n=33

2、 继续各位之和为:3+3=9;结果为一位数,得到最后结果为9

2、输入一个整数N,和一个整数M,则由1到N的各个整数围成一个圆,现要求你从1开始数到M并将第M个数从此列中去掉,并存入已给出的数组,继续从你取出的数的后一位从1开始数,再次数到M为止,从此列中去掉,并存入已给出的数组,一直这样数,直到剩余一个数,最后把你存入数组的数和最后一个数分别打印出来。

例子:

N=10,M=3;

A、1 2 3 4 5 678910

从1开始数数到M(3)则将3取出,并存入数组,剩余数为

B、1 2 4 5 678910

从下一位(4)作为1开始数,数到M(3)即6,则将6取出,并存入数组,剩余数为

C、1 2 4 5 78910

(依此规律继续,直到剩余最后一个数为止)……………………

最后打印结果为:

从圆中一次取出的数据为:3692718510

最后剩余的数位:4

———————————————————————————————————————

1、存储区有哪些,static int a存在哪个区

2、二维数组指针定义,int指针定义,行指针定义,返回int型方法的指针带char型参数

3、合法的ip地址选择

4、在局部变量是否可以和全局变量同名

5、Strcpy的实现

6、const char * p ,char const *p,char * const p的区别

7、堆和栈的区别

8、heap和stack的区别

9、判断程序错误有一条程序 printf(str);(str是char型)

10、写出程序运行结果里有一条程序 x&=....(不知道&=是什么)

11、写出你接触过最复杂的数据处理

12、写了一个链表插入节点的方法

13、比较注重线程的操作

14、有一些C++和通讯协议方面

———————————————————————————————————————

选择题:(每题3分)

1.8673849483768,从两边度一样吗?

A、是B、否

2.工工人人工工人相对于2211221,那么工工人人工人人相对于

A.2211211 B.1122122 c.2222111 d.1111222

3.有红白黑三种球各三个,取三个球都是白色的概率是:

A.1/84 B.3/14C.1/14D.1/7

4.电灯开关,要是开关X1坏了不能通过,则从开关X2,X3通过,设每个开关坏了的概率是0.1那么灯泡不亮的概率是:(圆形为灯泡)

X3

X2

X1

开始

A 7.280B.0.981C.0.990D.1.000

还有一些图形逻辑题

编程题:(每题20分)

1.100个数,按照二分法查询一个数,要是有,就输出这个数的位置(数组的下标),没有,就输出NA。

用熟悉的语言写一个程序。

2.求指数平均

股市开市,每日都有指数平均,pt是收盘数。X是一个常数。

t是时间(天)

指数平均:当t = 1时EMAt = pt

当t > 1时EMAt = x*pt+(1-x)EMAt(这个EMAt为前一天的时间)

用熟悉的语言写一个程序。

——————————————————————————————————————

1. 数组中包含N个整数,从其中找出K个最小的数,写出你能想出的最快的方法。

2. 求Fiboncacci数列的第N项的值,1、1、2、3、5、8、13、21........,写出用循环的方法,写出用递归的方法,如果你还想到其他的方法,写下来吧。

3. 用数组实现一个栈(先进后出),只需简单的PUSH和POP操作,如果你还有空,加上栈满了自动扩容1倍的功能。

4. 输入一个整形数组,数组里有整数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值以及数组的开始位置和结束位置。要求时间负责度为0(n)。例如输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,-4,7,2,因此输出该子数组的和为18,数组开始位置和结束位置是2和6。

5. 输入一串不重复的字符串,;列出所有可能的组合,例如:输入字符串 abc 输出 abc acb bac bca cab cba

6.

1) 自己写一个二叉树的类。

2) 假设你初始化了一个数,树里的数据如上图所示,请你用代码遍历这个二叉树,使用方式只要前序,后序与中序遍历中的一个,并描述另外两个和你使用方式的区别。

3)假设你选择用代码写了中序遍历,那你还需要描述 前序,后序遍历与中序遍历的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值