void g(int**p) {
(**p)++; (*p)++;// 无效 } 输出: 1 2 3 4 5 6 7 8 9
10
3. 写出程序运行结果
int sum(int a) {
auto int c=0; static int b=3; c+=1; b+=2;
return(a+b+c); }
void main() { int I; int a=2;
for(I=0;I<5;I++) {
printf(\sum(a)); } }
// static会保存上次结果,记住这一点,剩下的自己写 输出:8,10,12,14,16,
4.
int func(int a) { int b; switch(a) {
case 1: 30; case 2: 20; case 3: 16; default: 0 }
return b; }
则func(1)=?
// b定义后就没有赋值。
5: int a[3];
a[0]=0; a[1]=1; a[2]=2; int *p, *q; p=a;
q=&a[2];
则a[q-p]=a[2]
解释:指针一次移动一个int但计数为1
今天早上的面试题9道,比较难,向牛人请教,国内的一牛公司,坐落在北京北四环某大厦:
1、线形表a、b为两个有序升序的线形表,编写一程序,使两个有序线形表合并成一个有序升序线形表h;
答案在 请化大学 严锐敏《数据结构第二版》第二章例题,数据结构当中,这个叫做:两路归并排序
Linklist *unio(Linklist *p,Linklist *q){ linklist *R,*pa,*qa,*ra; pa=p; qa=q; R=ra=p;
while(pa->next!=NULL&&qa->next!=NULL){ if(pa->data>qa->data){ ra->next=qa; qa=qa->next; } else{
ra->next=pa;
pa=pa->next; } }
if(pa->next!=NULL) ra->next=pa; if(qa->next!=NULL) ra->next==qa; return R;
}
2、运用四色定理,为N个局域举行配色,颜色为1、2、3、4四种,另有数组adj[][N],如adj[i][j]=1则表示i区域与j区域相邻,数组color[N],如color[i]=1,表示i区域的颜色为1号颜色。 四色填充
3、用递归算法判断数组a[N]是否为一个递增数组。
递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:
bool fun( int a[], int n ) {
if( n= =1 ) return true; if( n= =2 )
return a[n-1] >= a[n-2];
return fun( a,n-1) && ( a[n-1] >= a[n-2] );
}
4、编写算法,从10亿个浮点数当中,选出其中最大的10000个。 用外部排序,在《数据结构》书上有
《计算方法导论》在找到第n大的数的算法上加工 5、编写一unix程序,防止僵尸进程的出现.
同学的4道面试题,应聘的职位是搜索引擎工程师,后两道超级难,(希望大家多给一些算发)
1.给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数
long jiaoji(long* a[],long b[],long* alength,long blength,long* dongtai[]) 2.单连表的建立,把'a'--'z'26个字母插入到连表中,并且倒叙,还要打印! 方法1:
typedef struct val { int date_1; struct val *next; }*p;
void main(void) { char c;
for(c=122;c>=97;c--) { p.date=c; p=p->next; }
p.next=NULL; } } 方法2:
node *p = NULL; node *q = NULL;
node *head = (node*)malloc(sizeof(node)); head->data = ' ';head->next=NULL;
node *first = (node*)malloc(sizeof(node)); first->data = 'a';first->next=NULL;head->next = first; p = first;
int longth = 'z' - 'b'; int i=0;
while ( i<=longth ) {
node *temp = (node*)malloc(sizeof(node)); temp->data = 'b'+i;temp->next=NULL;q=temp;
head->next = temp; temp->next=p;p=q; i++; }
print(head); 3.可怕的题目终于来了
象搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G, 请描述思想,写出算发(c语言),空间和时间复杂度,
4.国内的一些帖吧,如baidu,有几十万个主题,假设每一个主题都有上亿的跟帖子,怎么样设计这个系统速度最好,请描述思想,写出算发(c语言),空间和时间复杂度,
#include string.h
main(void)
{ char *src=\ char *dest=NULL;
dest=(char *)malloc(strlen(src)); int len=strlen(str); char *d=dest; char *s=src[len]; while(len--!=0) d++=s--; printf(\}
找出错误!!
#include \#include \#include \main(void) {
char *src=\ char *dest=NULL;
dest=(char *)malloc(sizeof(char)*(strlen(src)+1)); int len=strlen(src); char *d=dest; char *s=src+len-1; while(len--!=0) *d++=*s--; *d='\\0';
printf(\}
1. 简述一个Linux驱动程序的主要流程与功能。 2. 请列举一个软件中时间换空间或者空间换时间的例子。 void swap(int a,int b) {
int c; c=a;a=b;b=a; }
--->空优
void swap(int a,int b) {
a=a+b;b=a-b;a=a-b; }
6. 请问一下程序将输出什么结果?