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

推荐阅读
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 【线段树】  本质是二叉树,每个节点表示一个区间[L,R],设m(R-L+1)2(该处结果向下取整)左孩子区间为[L,m],右孩子区间为[m ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
  • 题目描述:给定一个区间,支持两种操作:1. 将位置a的值修改为b;2. 查询区间[a, b]内的子序列的最大和,其中子序列中相邻的元素必须具有不同的奇偶性。 ... [详细]
  • WCF类型共享的最佳实践
    在使用WCF服务时,经常会遇到同一个实体类型在不同服务中被生成为不同版本的问题。本文将介绍几种有效的类型共享方法,以解决这一常见问题。 ... [详细]
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社区 版权所有