中兴软件面试题2 中兴软件研发面试题
本文来自CSDN博客,转载请标明出处:file:///E:/求职/中兴/中兴面试题/中兴软件面试题2 -Eddy_0825的专栏 - CSDN博客.mht
现在的公司招聘,都要笔试面试.如果你不是那种编程功底非常深厚的人,又不好好准备一番,在笔试面试中往往会处于被动局面.虽然有些笔试题是故意为难我们,有点钻牛角尖.但是很多笔试题面试题确实能够很好地看出我们的基础.
在这里,我就略去那些钻牛角尖的题.从csdn论坛我近半年的收集中选出10道有代表性的题目,难度基本上是逐渐加大.对数组,指针,数据结构,算法,字符串,文件操作等问题都有覆盖.主要以c语言的实现为主,也有c++的题.大家可以先做做这10道题,测试一下自己的水平.
1. 下面这段代码的输出是多少(在32位机上).
char *p;
char *q[20];
char *m[20][20];
int (*n)[10];
struct MyStruct
{
char dda;
double dda1;
int type ;
};
MyStruct k;
printf("%d %d %d%d",sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));
答案:4,80,1600,4,24
(1)
char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}}};
for(int i=0;i<12;i++)
printf("%d ",__a[0][0][i]_);
在空格处填上合适的语句,顺序打印出a中的数字
(2)
char **p, a[16][8];
问:p=a是否会导致程序在以后出现问题?为什么?
答:没有问题,只是使用时要小心,p是指向指针的指针。
3.用递归方式,非递归方式写函数将一个字符串反转.
函数原型如下:char *reverse(char*str);
答:非递归方式:
char*reverse(char *str){if(str!=NULL){int length = strlen(str);char *dst=NULL;dst=(char*)malloc((length+1)*sizeof(char));int i=0;for(i=0;i<length;i++) {dst[i]=str[length-1-i]; }dst[i]=' ';printf("%sn",dst);return dst;}}
递归方式:int len = 0;void reverse(char *str){int oldlen = len;int swap_len = len / 2;char *tmp = new char[swap_len + 1];memcpy(tmp, str, swap_len);memcpy(str, str + len - swap_len, swap_len);memcpy(str + len - swap_len, tmp, swap_len);delete[] tmp;
if(swap_len == 1)return;
len = swap_len;reverse(str);len = swap_len;reverse(str + oldlen - swap_len);}
int main(){char test[] = "abcdefghijkl";//shift(test, strlen(test), 7);len = strlen(test);reverse(test);
return 0;}
4.strcpy函数和memcpy函数有什么区别?它们各自使用时应该注意什么问题?
答:strcpy函数:拷贝字符串
memcpy函数:拷贝任何数据
5.写一个函数将一个链表逆序.
答:简单
6.一个单链表,不知道长度,写一个函数快速找到中间节点的位置.
答:两个指针fast和low,fast每步移2个位置low每步移1个位置,当fast到达尾部时low就是中间结点。 typedef struct linknode
{
inta;
struct linknode *next;
}linknode;
linknode*findmiddle(linknode *head)
{
linknode *fast,*low,*p;
if(head==NULL)
{
return NULL;
}
fast=low=head;
while(!(p=fast->next)&&!p->next)
{
low=low->next;
fast=p->next;
}
returnlow;
}
7.写一个函数找出一个单向链表的倒数第n个节点的指针.(把能想到的最好算法写出).
答:两个指针,第一个先于第二个n个位置。
LinkNodeIsLoopList(LinkNode *head,int n) { LinkNode *p1,*p2; p1=p2= head; While(n-->=0) { P2=p2->next; } While(p2->next!=NULL) { P2 = p2->next; P1 = p1->next; } Return p1; //当p2到达结尾时,后于p2n个位置的就是倒数第n个节点。}
8.补充一题:
给你一个单向链表的头指针,可能最后不是NULL终止,而是循环链表。题目问你怎么找出这个链表循环部分的第一个节点。比如下面的链表:0 -> 1 -> 2 -> 3-> 4 -> 5 -> 6-> 7 -> 8 -> (3)循环,就应该返回结点3的位置。当然尽量用少的空间和时间是题目的要求。
答:
10.判断链表是否循环;
答:bool IsLoopList(LinkNode *head)
{LinkNode *p1= head,*p2= head;if(head ->next==NULL) //只包含头节点,且头节点的next为NULL说明肯定不是循环链表 return false;do{p1=p1->next; //步长为1p2=p2->next->next; //步长为2}while(p2 &&p2->next &&p1!=p2);if(p1==p2) return true;else return false;}
11.用递归算法判断数组a[N]是否为一个递增数组。
答:递归算法:
#include <iostream>#include <stdio.h>#define N 5int Judgment(int a[],int num);int main(){ int a[N], i, flag =1; printf("Enter arraydata: "); for (i = 0; i< N; i++) { scanf("%d", &a[i]);//输入数组元素 } flag = Judgment(a,N); //调用递归函数 if (flag == 1) { printf("increment array.n"); } else if (flag ==0) { printf("no increment array.n"); } return 0;}int Judgment(int a[],int num){ for (inti=num-1;i>=0;i--) { if(a[i]<a[i-1]) return0; Judgment(a,i); } return 1;}
非递归算法:
#include <iostream>#include <stdio.h>#define N 5int Judgment(int a[], int num);int main(){ int a[N], i, flag =1; printf("Enter arraydata: "); for (i = 0; i< N; i++) { scanf("%d", &a[i]); } flag = Judgment(a,N); if (flag == 1) { printf("increment array.n"); } else if (flag ==0) { printf("no increment array.n"); } return 0;}int Judgment(int a[], int num){ static i = 0, flag =1; for(i=0;i<num;i++) { if(a[i] >= a[i+1]) //假如发现哪两个不是递增,立刻跳出; { flag = 0; break; } } return flag;}
更多阅读
关于C语言中的restrict关键字 c语言关键字
一、新的C语言:一切都源于FORTRAN(restrict的历史)http://www.chinaunix.net/ 作者:phoneix 发表于:2007-06-17 09:18:45此篇文章摘取于即将登载于《Dr.Dobb's 软件研发》第三期(2003年10月)的《The New C:一切源于FORTRAN》,文章主要是介
沈阳激光舞全彩激光舞激光秀激光动画激光竖琴 沈阳竖琴湾
艺能激光工程有限公司隶属于北京军华星光广告有限公司,秉承公司多年来多对演艺市场的精准分析,对艺术的执著追求,投入巨资引进国际领先的激光表演系统,致力于激光秀,激光舞,激光动画投影等高科技节目的研发,不满足于原有的传统激光表演模式
高新技术企业商业秘密的如何进行法律保护 商业秘密法律规定
有的技术,如发明创造,可申请专利,得到专利法的保护;有的技术,如软件编程源代码和文挡说明,可得到著作权法的保护。但更多的是未申请专利的专有技术或技术秘密,包括软件开发的设计思想、处理过程、操作方法或者数学概念,技术产品的生产工艺
高薪招聘网页游戏策划及美术实习生
高薪招聘网页游戏策划及美术实习生一、公司简介乐拥网络科技有限公司,主要从事软硬件开发生产、信息安全服务、网站建设、网络营销推广、ERP、OA、400电话业务为一体的综合信息化高新技术企业。公司位于成都市中心地段,注册资金为10
E8400+GA-EP43-US3L超频 ga p55 us3l bios
2009.7 自选配件──组装机系统软件和应用软件研发稳定、可靠、快速、安静超频20%(3.0GHz to 3.6GHz),ok!3.60GHz3.00GHz3.60GHz3.00GHz3.60GHz