热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

某公司C笔试题[个人解法]

原题出处:http:topic.csdn.netu20081011159ee842e0-9c0d-4804-8376-42abdfe80698.html1.编写函数,检查给定字符串是否

 原题出处:http://topic.csdn.net/u/20081011/15/9ee842e0-9c0d-4804-8376-42abdfe80698.html

 

1.编写函数,检查给定字符串是否整数,如果是,返回其整数值(注:不允许使用某种特定的库函数)。
2.有两个无序链表lsit1和list2,编写函数把list1和list2合并成一个递增的链表。
3.编写一段高效的代码,从排序的后的整数中找出指定整数n的个数。如找出[1,1,3,3,3,
    5,5,5,9,9,9,9]中的5的个数(为3个)。
4. 编写函数实现字符串分割。SourceStr为源串,splitStr为分割字符串,SplitStr中的每一个字符在SourceStr被看作是分 
  割符。函数需要返回被分割符分割好的字符串链表。
  例如: 如果
      SourceStr为“this is pen ,that is a ball.”。
      SplitStr  为“, .”
 
  则返回的字符串链表每一项值分别为:“this” “is” “ pen”…
5.某银行有N个业务办理窗口,每一个窗口能办理各种业务, 银行客户分为VIP可与和普通客户,VIP客户有优先办理权,请你结合实际的应用场景为该银行设计排队机系统。
  1)设计关键的数据结构和算法并用代码表示。
  2)用自己的方式表达出系统的运转流程。

 

这里只做下第一题和题四题,第五题等以后有空再想想。

 

  1. /****************************************************************************
  2. 题目要求 :编写函数,检查给定字符串是否整数,如果是,返回其整数值(注:不允许使用某种特定的库函数)。 
  3. 用C描述的算法,注释略
  4. ****************************************************************************/
  5. int is_int(const char *str, int *num)
  6. {
  7.     char *p = (char *)str;
  8.     int temp = 0;
  9.     char sign = '+';
  10.     if ( !str )
  11.     {
  12.         assert(0);
  13.         return 0;
  14.     }
  15.     do 
  16.     {
  17.         if ( *p == ' ' )
  18.         {
  19.             p++;
  20.         }
  21.         else
  22.         {
  23.             break;
  24.         }
  25.     } while( *p != '/0' );
  26.     if ( *p == '-' || *p == '+' )
  27.     {
  28.         sign = *p++;
  29.     }
  30.     while ( *p != '/0' ) 
  31.     {
  32.         if ( (*p >= '0') && (*p <= '9') )
  33.         {
  34.             temp = temp * 10 + (*p - '0');
  35.         }
  36.         else
  37.         {
  38.             return 0;
  39.         }
  40.         p++;
  41.     }
  42.     *num = sign == '-' ? -temp : temp;
  43.     return 1;
  44. }
  45. /****************************************************************************
  46. 题目要求 :编写函数实现字符串分割。SourceStr为源串,splitStr为分割字符串,SplitStr中的每一个字符在SourceStr被看作是分 
  47. 割符。函数需要返回被分割符分割好的字符串链表。 
  48. 例如: 如果 
  49. SourceStr为“this is pen ,that is a ball.”。 
  50. SplitStr 为“, .”
  51. 用C描述的算法,注释略
  52. ****************************************************************************/
  53. struct node{
  54. char *str;
  55. struct node *next;
  56. };
  57. node* split_string(const char *str, const char *token)
  58. {
  59.     char *p = (char *)str;
  60.     char *ch = (char *)token;
  61.     char map[128];
  62.     char *pos = p;
  63.     char *substr = NULL;
  64.     node l;
  65.     node *plist = &l;
  66.     node *pnode = NULL;
  67.     int loop = 0;
  68.     if ( str == NULL || token == NULL )
  69.     {
  70.         assert(0);
  71.         return NULL;
  72.     }
  73.     l.next = NULL;
  74.     while ( *ch != '/0' )
  75.     {
  76.         map[*ch] = *ch++;
  77.     }
  78.     while ( *p != '/0' )
  79.     {
  80.         if ( map[*p] == *p )
  81.         {
  82.             pnode = (node *)malloc(sizeof(node));
  83.             substr = (char *)malloc(sizeof(char) * (p - pos + 1));
  84.             while ( pos != p )
  85.             {
  86.                 substr[loop++] = *pos++;
  87.             }
  88.             substr[loop] = '/0';
  89.             pnode->next = NULL;
  90.             pnode->str = substr;
  91.             plist->next = pnode;
  92.             plist = pnode;
  93.             loop = 0; 
  94.             pos = ++p;
  95.         }
  96.         else
  97.         {
  98.             ++p;
  99.         }
  100.     }
  101.     return l.next; 
  102. }
  103. void print_list(node *l)
  104. {
  105.     while ( l != NULL )
  106.     {
  107.         printf("%s|", l->str);
  108.         l = l->next;
  109.     }
  110. }
  111. void free_memory(node *l)
  112. {
  113.     node *p = l;
  114.     if ( l == NULL )
  115.     {
  116.         return;
  117.     }
  118.     do 
  119.     {
  120.         p = l->next;
  121.         free(l->str);
  122.         free(l);
  123.         l = p;
  124.     } while( l != NULL );
  125. }
  126. /*两算法简单测试*/
  127. #include 
  128. #include 
  129. int main(int argc, char* argv[])
  130. {
  131.     int num = 0;
  132.     char *strtest = " this is pen , that is a bal. ";
  133.     node *l = NULL;
  134.     is_int(" +51111", &num);
  135.     printf("%d/n", num);
  136.     cout << endl << endl;
  137.     cout << strtest << endl; 
  138.     l = split_string(strtest, ", .");
  139.     print_list(l);
  140.     free_memory(l);
  141.     l = NULL; 
  142.     system("pause");
  143.     return 0;
  144. }

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文介绍如何在 Android 中通过代码模拟用户的点击和滑动操作,包括参数说明、事件生成及处理逻辑。详细解析了视图(View)对象、坐标偏移量以及不同类型的滑动方式。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
author-avatar
老黑_微笑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有