當前位置:才華齋>IT認證>嵌入式>

2016年C語言面試演算法題(附答案)

嵌入式 閱讀(1.91W)

  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]='