中兴面试题2
***************************************************
更多精彩,歡迎進入:http://shop115376623.taobao.com
***************************************************
from:http://blog.csdn.net/eddy_0825/article/details/1875566
現在的公司招聘,都要筆試面試.如果你不是那種編程功底非常深厚的人,又不好好準備一番,在筆試面試中往往會處于被動局面.雖然有些筆試題是故意為難我們,有點鉆牛角尖.但是很多筆試題面試題確實能夠很好地看出我們的基礎.
???在這里,我就略去那些鉆牛角尖的題.從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);
??????for(int i=0;i<length/2;++i)
????????{
???????????char temp=str[i];
???????????str[i]= str[length-1];
???????????str[length-1] =temp;
????????}
?????}
????printf("%s/n",str);
???}
???遞歸方式:搞不定
???char *reverse(char *str)
???{
????if(str==NULL||strlen(str)==1)
???????return str;
????int i;
????if(i==1)
??????str[i] = '/0';
??????return str[i];
????。。。。
???}
4.strcpy函數和memcpy函數有什么區別?它們各自使用時應該注意什么問題?
答:strcpy函數:拷貝字符串
????memcpy函數:拷貝任何數據
5.寫一個函數將一個鏈表逆序.
?答:簡單
6一個單鏈表,不知道長度,寫一個函數快速找到中間節點的位置.
?答:typedef struct linknode
????{
??????int a;
??????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;
?????}
?????return low;
???}
7?寫一個函數找出一個單向鏈表的倒數第n個節點的指針.(把能想到的最好算法寫出).
??答:兩個指針,第一個先于第二個n個位置。
???LinkNode IsLoopList(LinkNode *head,int n)
???{
??????LinkNode *p1,*p2,*p3;
???P1 = head;
???While(n-->=0)
???{
?????P3= p2->next;
?????P2 = p3;
???}
???While(p3->next!=NULL)
???{
P3 = p3->next;
P1 = p1->next;
???}
???Return p1;???//當p3到達結尾時,后于p3n個位置的就是倒數第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;??????//步長為1
? ?p2=p2->next->next;?//步長為2
?}while(p2 && p2->next && p1!=p2);
?if(p1==p2)
?? return true;
?else
? ?return false;
}?
?
11.用遞歸算法判斷數組a[N]是否為一個遞增數組。
答:遞歸算法:
#include <stdio.h>
#include <conio.h>
#define N 5
int Judgment(int a[]);
int main()
{
????int a[N], i, flag = 1;
????printf("Enter array data: ");
????for (i = 0; i < N; i++)
????{
????????scanf("%d", &a[i]);??//輸入數組元素。
????}
?????flag = Judgment(a);??//調用遞歸函數
?????if (flag == 1)
????{
????????printf("increment array./n");
????}
????else if (flag == 0)
????{
????????printf("no increment array./n");
????}
????getch();
????return 0;
}
int Judgment(int a[])
{
????static i = 0; //注意這個是靜態變量,必須用static
????if(i < N - 1)
????{
????????if (a[i] > a[i + 1])
????????{
????????????return 0;?????????
????}
????????i++;
????????Judgment(a);
????}????
?????? return 1;
}????????????
非遞歸算法:
?#include <stdio.h>
#include <conio.h>
#define N 5
int Judgment(int a[], int num);
int main()
{
????int a[N], i, flag = 1;
????printf("Enter array data: ");
????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");
????}
????getch();
????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;
} ? ? ? ??
總結
- 上一篇: 基于ResNet迁移学习的LFW人脸识别
- 下一篇: 沃支付登录