当前位置:学者斋 >

IT认证 >嵌入式 >

2016年C语言面试算法题(附答案)

2016年C语言面试算法题(附答案)

  1.求组合数: 求n个数(1....n)中k个数的组合....

2016年C语言面试算法题(附答案)

如:combination(5,3)

要求输出:543,542,541,532,531,521,432,431,421,321,

/*

求组合数: 求n个数(1....n)中k个数的组合....

如:combination(5,3)

要求输出:543,542,541,532,531,521,432,431,421,321,

*/

#include

#include

int pop(int *);

int push(int );

void combination(int ,int);

int stack[3]={0};

int top = -1;

int main()

{

int n,m;

n = 5;

m = 3;

combination(n,m);

printf("n");

}

void combination(int m,int n)

{

int temp = m;

push(temp);

while(1)

{

if(1==temp)

{

if(pop(&temp) && stack[0]==n)

break;

}

else if(push(--temp))

{

printf("%d%d%dn",stack[0],stack[1],stack[2]);

pop(&temp);

}

}

}

int push(int i)

{

stack[++top]=i;

if(top<2)

return 0;

else

return 1;

}

int pop(int *i)

{

*i = stack[top--];

if(top>=0)

return 0;

else

return 1;

}

  2.、用指针的'方法,将字符串“ABCD1234efgh”前后对调显示

#include

#include

int main()

{

char str[]="ABCD123efgh";

int length = strlen(str);

char *p1= str;

char *p2 = str+length -1;

while(p1

{

char c = *p1;

*p1 = *p2;

*p2 = c;

++p1;

--p2;

}

printf("str now is %sn",str);

return 1;

}

  3.给定字符串A和B,输出A和B中的最大公共子串。比如A="aocdfe" B="pmcdfa" 则输出"cdf"

#include

#include

#include

char *commanstring(char shortstring[],char longstring[])

{

int i,j;

char *substring = malloc(256);

if(strstr(longstring,shortstring)!=NULL)

return shortstring;

for(i=strlen(shortstring)-1;i>0;i--)

{

for(j=0;j<=strlen(shortstring)-i;j++)

{

memcpy(substring,&shortstring[j],i);

substring[i]='';

if(strstr(longstring,substring)!=NULL)

return substring;

}

}

return NULL;

}

void main(void)

{

char *str1 = "aocdfe";

char *str2 = "pmcdfa";

char *comman = NULL;

if(strlen(str1)>strlen(str2))

comman= commanstring(str2,str1);

else

comman = commanstring(str1,str2);

printf("the longest comman string is:%sn",comman);

}

标签: 面试 算法 语言
  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/itrz/qianrushi/e20d3.html