热门标签 | 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. }

推荐阅读
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 本文介绍如何利用栈数据结构在C++中判断字符串中的括号是否匹配。通过顺序栈和链栈两种方式实现,并详细解释了算法的核心思想和具体实现步骤。 ... [详细]
  • 本文详细介绍了8051系列微控制器的中断系统,特别是C51编译器中interrupt和using关键字的作用及其使用方法。通过深入分析这两个关键字的功能,帮助开发者更好地理解和优化中断程序的设计。 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • 本题要求实现一个函数,用于检查给定的字符串是否为回文。回文是指正向和反向读取都相同的字符串。例如,“XYZYX”和“xyzzyx”都是回文。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • Java 实现二维极点算法
    本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文探讨了如何在 F# Interactive (FSI) 中通过 AddPrinter 和 AddPrintTransformer 方法自定义类型(尤其是集合类型)的输出格式,提供了详细的指南和示例代码。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
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社区 版权所有