日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言面试算法题(一)

發布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 <stdio.h>
#include <error.h>
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 <stdio.h>
#include <string.h>
int main()
{
??char str[]="ABCD123efgh";
??int length = strlen(str);
??char *p1= str;
??char *p2 = str+length -1;
??while(p1<p2)
??{
????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 <stdio.h>
#include <stdlib.h>
#include <string.h>

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语言面试算法题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。