上海先锋商贸科技有限公司面试

来源:互联网 发布:mac免费翻墙回国软件 编辑:程序博客网 时间:2024/04/28 03:13
面试题内容(C,C++嵌入式)
题目我记不全了,大楷内容有:
1。c的基础知识(字符串数组,指针等)
2。数据结构,队列,双向列表,替归,堆栈,二叉树遍历
3。地图着色问题
4。模拟计算器
四大内容
 
主管面试
1。项目经验
2。考一个C语言的题目
 
--------------------------------------------------------出自
http://club.163.com/viewElite.m?catalogId=385130&eliteId=385130_100e22e183800b7
在网上找到类似题目
阅读以下程序说明和C程序,将应填入__(n)__处的字句,写在答卷的对应栏内。 
[程序说明] 
一个相连的区域被不规则地分割成n个不同的小区域;每个小区域与若干其它小区域相邻接。现用cn种不同颜色为该区域着色,要求每个小区域着同一种颜色,相邻小区域着不同颜色。 
设小区域被顺序编号为0,1,…,n-1。每个小区域与其它小区域的邻接关系用两维数组bordering表示,元素bordering[i][j]表示i号小区域与j 号小区域之间的邻接关系: 
0 j小区域与i小区域不邻接 
bordering[i][j]= 
1 j小区域与i小区域相邻接 
程序中,把计算结果存入于两维数组colored中,颜色编号为0,1,…,cn-1,元素colored[coler][j]的含义是 
0 j小区域不用颜色color着色 
colored[color][j]= 
1 j小区域用颜色color着色 
函数colorcountry(bordering,colored,n,cn)根据所给的小区域邻接关系数组bordering、小区域个数n 、颜色数cn,将找到的着色方案记录在数组colored中。函数采用试探法找解。首先从第一个小区域着第一种颜色开始顺序为各小区域找着色方案。对某个小区域,当为它找到一种未被它的相邻小区域着色的颜色时,就用该颜色对该小区域着色,并准备处理下一个小区域。当不能为某个小区域找到一个未被它的相邻小区域着色的颜色时,就回溯。如最终为全部小区域找到着色方案,函数返回1;否则,函数返回0。 
程序假定小区域个数不超过20,颜色数为4。 
[程序] 
#include 
#define n 20 
#define CN 4 
int colorcountry(int bordering[][N], int colored[][N], int n,int cn) 
{ int color,used,i,c; 
for(color=0;colorn;i++)colored[color][i]=0; 
c =0; /*从第1个小区域开始*/ 
color =0; /*从着第1种颜色开始试控*/ 
while(cc;i++) 
if(____(2)____)used=1; 
if(!used)break; /*当前颜色未被相邻小区域着色*/ 
color++ 

if(!used) 
{ /*找到一种可用颜色,用此色着色,并准备处理下一个小区域*/ 
____(3)____=1; color=0; 
}else{/*未找到一种可用颜色,回溯*/ 
c--;if (cfor(color=0;____(4)____;color++); 
____(5)____=0 


return 1; 

print(int colored[ ][N],int n,int cn) /*输出结果*/ 
{ char *colort[ ]={“RED”,”BLUE”,”GREEN”,”YELLOW”}; 
int color,i; 
for(color=0;colorn;i++) 
if(colored[color][i]) printf(“ %d”,i); 
printf(“ ”); 


int colored[CN][N],bordering[N][N]; 
main() 
{ int c,i,j,n; 
printf(“Enter number of areas.”); scanf(“%d”,&n); 
printf(“Enter bordering: ”); 
for(i=0;in;j++)bordering[i][j]=0; 
for(i=0;i0 to next). ”,i); 
scanf(“&d”,&j); 
while(j>=0) 
{ if(i !=j) bordering[i][j]=bordering[j][i]=1; 
scanf(“%d”,&j); 


if(colorcountry(bordering,colored,n,CN)) 
print(colored,n,CN); 
else printf(“No Solution. ”); 

答案:
(3分) color < cn 
答color < 4给3分;答 color <= cn给2分。 

(3分)bordering [c ] [ i ] && colored [ color ] [ i ] 
答bordering [c ] [ i ] ==1 && colored [ color ] [ i ] == 1 给3分。 

答bordering [c ] [ i ] * colored [ color ] [ i ] == 1 给3分,而将其中相等运算符“==”写成赋值运算符“=”时,只给1分。其中bordering [c ][ i ]可写成bordering[ i ][c ]。运算符‘&&’左右只对一半给2分。 

(3分)colored [ color ] [ c++ ] 
答colored [ color ] [ c ]给2分。 

答colored [ color ] [ … ]给1分。 

答c++ 给1分。 

(3分) colored[color][c] == 0或! colored [ color ] [ c ]或colored [ color ] [ c ] !==1 
(3分)colored [ color ++ ] [ c ] 
答colored [ color ] [ c ]给2分, 

答colored [ color ] [ … ]给1分。 
 
我只能想起这些了,总之需要有扎实的C语言功底
面试时,他们是要看项目经验的,很看中你是否跟他们的要求相近(你做过的和他们现在的)!
好了,祝大家好运!