- 相關推薦
2016年C語言面試算法題(附答案)
1.求組合數: 求n個數(1....n)中k個數的組合....
如: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);
}
【C語言面試算法題附答案】相關文章:
經典C語言面試算法題10-13
嵌入式C語言面試題(附答案)06-15
計算機二級C語言真題及答案09-26
excel精選選擇題附答案09-17
excel判斷題「附答案」08-03
精選C++面試題及答案05-23
華為C語言上機試題及答案07-01
計算機二級C語言考試真題及答案09-30
excel考試操作題「附答案」10-29
江蘇高考語文真題附答案07-07