当前位置: 首页 > news >正文

几个常见的C语言面试题分析

一次去一个小公司面试,没有太重视,当时由于工作甚忙,也没作准备。他们给我的试卷有大量的题,规定一个小时必须做完,一看题量,吓了一大跳,题有链表,有多维数组,有大量的程序阅读,幸亏基本功还算扎实,未辱使命,差强完成。等到做到编程题时,才发现自己太长时间没有写过程序了,让一些琐碎的改BUG工作和代码维护浪费了太多的精力。一直做下去,心里暗暗吃惊,一个小时,这个题量如果是在刚毕业时,还是有可能完成的,工作几年后,压力渐小,写程序基本都是拿来主义,对标准库函数的原理把握和编程能力越来越退化。由于当时时间紧迫,所写程序也不够完善,过后又思考了一下,回到家后赶紧又对这些问题总结了一下。下面对面试中遇到的编程问题分析了一下。真是人在社会如江湖呀,学习是一刻也不能放松的事。稍一不慎,晚节不保不说,反而会阴沟里翻船。

1.获取路径下的文件名

char * FindFileName(char * s)
{
int len;
char *tmp=NULL;

ASSERT(s != NULL);
for (len=strlen(s); len>0;len--)
{
if((s[len]=='/') ||(s[len]=='\\'))
{
tmp = &s[len+1];
break;
}
}
return tmp;

}

2.把整型转化为字符型
char * i2a(int n, char *s)
{
int i, sign;

ASSERT(s != NULL);
if ((sign = n) < 0)
{
n = -n; //转为正数,利于取位
}

do
{
s[i++] = n % 10 + '0';
}
while ((n /= 10) > 0)
if (sign < 0)
{
s[i++] = '-';
}
s[i] = '\0';

reverse(s);
}

3.把字符型转为整型

int a2i(char * s)
{
int i, n, sign;

ASSERT(s != NULL);
for (i = 0; s[i] == ' '; i++)
{
NULL; //如果字串前有空格,跳过所有空格
}
sign = (s[i] == '-') ?: -1 : 1;
if (s[i] == '+' || s[i] == '-')
{
i++; //判断是正整数串还是负整数串
}
for (n = 0; s[i] > = '0' && s[i] <= '9'; i++)
{
n = 10 * n + (s[i] - '0');
}
return sign*n;
}

4.输出字符串倒文,不能动态分配内存

char * reverse(char * s)
{
int c, i, j;

ASSERT(s != NULL);
for (i = 0, j = strlen(s) - 1; i < j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}

return s;
}

5.查找子串是否存在

int strindex(char *str,char *searchstr)
{
int end, i, j;

ASSERT((str != NULL) && (searchstr != NULL));
//计算结束位置
end = strlen(str) - strlen(searchstr);
if ( end > 0 )
{
for ( i = 0; i <= end; i++ )
{
for ( j = i; str[j] == searchstr[j-i]; j++ )
{
if ( searchstr[j-i+1] == '\0' ) /* 子字符串字结束 */
{
return i + 1; /* 找到了子字符串 */
}
}
}
}
return -1;
}

相关文章:

  • Linux定期备份mysql
  • MTK基于基站和小区的定位技术研究
  • 第一次交叉编译基于群晖 213j(CPU:Armada 370)的iperf过程
  • MTK界面设计中消除PNG图片的杂色背景
  • 知道这20个正则表达式,能让你少写1,000行代码
  • MTK一些有用的层函数
  • 基于SWOOLE的分布式SOCKET消息服务器架构
  • MTK的铃声修改与替换
  • 基于SWOOLE的高可用分布式SOKET服务器系统搭建V2.0
  • 美化MTK的拨号窗口
  • javascript 18位身份证校验程序
  • MTK的DM应用实例
  • 优酷KUX格式转码
  • 推荐一款全面的系统性能监控工具 -- glances
  • 再转载一篇---引用 MTK的高亮机制
  • [译]如何构建服务器端web组件,为何要构建?
  • 【node学习】协程
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Angular2开发踩坑系列-生产环境编译
  • HTML-表单
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • mysql 5.6 原生Online DDL解析
  • PHP 7 修改了什么呢 -- 2
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 阿里云前端周刊 - 第 26 期
  • 关于extract.autodesk.io的一些说明
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 面试总结JavaScript篇
  • 配置 PM2 实现代码自动发布
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • $$$$GB2312-80区位编码表$$$$
  • (2)Java 简介
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (四) Graphivz 颜色选择
  • (四)模仿学习-完成后台管理页面查询
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)插入排序
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)关于pipe()的详细解析
  • (转)可以带来幸福的一本书
  • .dwp和.webpart的区别
  • .NET : 在VS2008中计算代码度量值
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NetCore 如何动态路由
  • .net反混淆脱壳工具de4dot的使用
  • /etc/sudoer文件配置简析
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)