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

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

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

1c5302885a02101dec28582cc4ae54a6.png

如: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%d\n",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 %s\n",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]='\0';

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:%s\n",comman);

}

【2016年C语言面试算法题(附答案)】相关文章:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值