面试题

本文为本人原创,欢迎转载!
转载请注明出处:snowboy.blog.chinaunix.net
雪夜流星
------------------------------------------
n年没笔试了,9月16号迎来了笔试第一站,试卷分为两部分,第一部分是选择题,第二部分是综合题。选择题依稀记得有个arp的功能(把ip地址转换为mac地址),下面贴一下综合题。
 
1.找出一个序列中的最长递减子序列,如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2};代码实现如下:
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>

  4. #define MAX_LEN 255

  5. /*****************************************************************************************
  6. *功能描述:找出一个序列中的最长递减子序列,如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}
  7.          
  8. *传入参数:str:源数组首地址, len:数组的长度           
  9.                 
  10. *传出参数:str:递减子序列的数组首地址,传入参数和传出参数空间复用,降低空间复杂度         
  11.                    
  12. *返回值: 递减子序列的数组首地址
  13.                         
  14.  ****************************************************************************************/
  15. char *substring(char *str, int len)
  16. {
  17.     char b[MAX_LEN] = {0};//定义数组长度必须为常量,不能为变量或者只读变量
  18.     int i, j, k=0, tmp;

  19.     if ((str == NULL)||(len <1))
  20.     {
  21.         return NULL;
  22.     }
  23.     
  24.     for (i=0; i<len; i++)
  25.     {
  26.         tmp = str[i];
  27.         for (j=i+1; j<len; j++)//遍历当前元素后面的所有元素,如果有比当前元素大的则退出循环
  28.         {
  29.             if (str[i] <= str[j])
  30.             {
  31.                 break;
  32.             }
  33.         }
  34.         if (== len)//循环正常结束,即后面没有比当前数要大的,将其则放入新数组中
  35.         {
  36.             b[k] = tmp;
  37.             k++;
  38.         }
  39.     }
  40.     b[k] = '\0';//最后将新数组赋结束符

  41.     strcpy(str, b);//将新数组元素拷贝到源数组中,复用空间
  42.     
  43.     return str;
  44. }

  45. int main(void)
  46. {
  47.     char a[10] = "954325432";
  48.     char *b;
  49.     b = substring(a, 10);
  50.     printf("b:%s\n", b);

  51.     return 0;
  52. }

2.将两个有序链表合并成为一个有序链表(附带测试程序)

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct node
  4. {
  5.     int data;
  6.     struct node *next;
  7. }link;

  8. /*****************************************************************

  9. *功能描述:合并两个带头结点的有序链表使其仍然有序
  10.   
  11. *传入参数:head1,head2:两个有序链表
  12.     
  13. *传出参数:无
  14.      
  15. *返回值: 合并后的有序链表的头指针
  16.         
  17.  ****************************************************************/
  18. link *mergelist(link *head1, link *head2)
  19. {
  20.     link *pa = NULL;
  21.     link *pb = NULL;
  22.     link *pc = NULL;
  23.     link *head3 = NULL;
  24.     
  25.     pa = head1->next;
  26.     pb = head2->next;
  27.     head3 = pc = head1;

  28.     while ((pa != NULL) && (pb != NULL))
  29.     {
  30.         if (pa->data <= pb->data)
  31.         {
  32.             pc->next = pa; pc = pa; pa = pa->next;
  33.         }
  34.         else
  35.         {
  36.             pc->next = pb; pc = pb; pb = pb->next; 
  37.         }
  38.     }
  39.     pc->next = pa ? pa : pb;//插入剩余段
  40.     free(head2);

  41.     return head3;
  42. }

  43. /*创建带头结点的链表*/
  44. link *creat(void)
  45. {    
  46.     link *head = NULL; 
  47.     link *tail = NULL; 
  48.     link *cur = NULL;    
  49.     int x;     
  50.     
  51.     head = (link *)malloc(sizeof(link));
  52.     
  53.     if(!head)        
  54.     {        
  55.         printf("malloc error\n");        
  56.         exit(1);        
  57.     } 
  58.     
  59.     tail = head;    
  60.     
  61.     while(1)        
  62.     {
  63.         
  64.         printf("please input data:");        
  65.         scanf("%d", &x);        
  66.         if(<= 0)            
  67.         {            
  68.             break;            
  69.         }
  70.         
  71.         cur = (link *)malloc(sizeof(link));
  72.         
  73.         if(!cur)            
  74.         {            
  75.             printf("malloc error\n");            
  76.             exit(1);            
  77.         }
  78.         
  79.         cur->data = x;        
  80.         cur->next = NULL;        
  81.         tail->next = cur;        
  82.         tail = cur;        
  83.     }    
  84.     printf("creat list success\n");
  85.         
  86.     return head;    
  87. }

  88. /*打印带头结点的链表*/
  89. void printl(link * head)
  90. {    
  91.     link *= NULL;
  92.     
  93.     if(!head)        
  94.     {        
  95.         return;        
  96.     }
  97.     
  98.     for(p=head->next; p; p=p->next)        
  99.     {        
  100.         printf("%d ", p->data);        
  101.     }
  102.     
  103.     printf("\n");
  104.     
  105.     return;    
  106. }

  107. int main(void)
  108. {
  109.     link *head1, *head2, *head3;
  110.     head1 = creat();
  111.     head2 = creat();
  112.     printl(head1);
  113.     printl(head2);
  114.     head3 = mergelist(head1, head2);
  115.     printl(head3);
  116.     
  117.     return 0;
  118. }
小结:这个公司招的人少,笔试的人却很多,僧多粥少,准备迎接下一站,希望后面的路会更顺利。
weixin151云匹面粉直供微信小程序+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值