C语言面试题


Posted in 面试题 onMay 19, 2013
1、编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。
char * search(char *cpSource, char ch)
{
char *cpTemp=NULL, *cpDest=NULL;
int iTemp, iCount=0;
while(*cpSource)
{
if(*cpSource == ch)
{
iTemp = 0;
cpTemp = cpSource;
while(*cpSource == ch)
++iTemp, ++cpSource;
if(iTemp > iCount)
iCount = iTemp, cpDest = cpTemp;
if(!*cpSource)
break;
}
++cpSource;
}
return cpDest;
}
2、请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。
int search(char *cpSource, int n, char ch)
{
int i;
for(i=0; i return i;
}
一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点。

#include
void foo(int m, int n)
{
printf(“m=%d, n=%d\n”, m, n);
}
int main()
{
int b = 3;
foo(b+=3, ++b);
printf(“b=%d\n”, b);
return 0;
}
输出:m=7,n=4,b=7(VC6.0)
这种方式和编译器中得函数调用关系相关即先后入栈顺序。不过不同
编译器得处理不同。也是因为C标准中对这种方式说明为未定义,所以
各个编译器厂商都有自己得理解,所以最后产生得结果完全不同。
因为这样,所以遇见这种函数,我们首先要考虑我们得编译器会如何处理
这样得函数,其次看函数得调用方式,不同得调用方式,可能产生不同得
结果。最后是看编译器优化。

2.写一函数,实现删除字符串str1中含有的字符串str2.
第二个就是利用一个KMP匹配算法找到str2然后删除(用链表实现的话,便捷于数组)

/*雅虎笔试题(字符串操作)
给定字符串A和B,输出A和B中的最大公共子串。
比如A=”aocdfe” B=”pmcdfa” 则输出”cdf”
*/
//Author: azhen
#include
#include
#include
char *commanstring(char shortstring[], char longstring[])
{
int i, j;
char *substring=malloc(256);
if(strstr(longstring, shortstring)!=NULL) //如果……,那么返回shortstring
return shortstring;
for(i=strlen(shortstring)-1;i>0; i–) //否则,开始循环计算
{
for(j=0; j memcpy(substring, &shortstring[j], i);
substring[i]=\0;
if(strstr(longstring, substring)!=NULL)
return substring;
}
}
return NULL;
}

main()
{
char *str1=malloc(256);
char *str2=malloc(256);
char *comman=NULL;
gets(str1);
gets(str2);
if(strlen(str1)>strlen(str2)) //将短的字符串放前面
comman=commanstring(str2, str1);
else
comman=commanstring(str1, str2);
printf(“the longest comman string is: %s\n”, comman);
}

11.写一个函数比较两个字符串str1和str2的大小,若相等返回0,若str1大于
str2返回1,若str1小于str2返回-1
int strcmp ( const char * src,const char * dst)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src – *(unsigned char *)dst) && *dst)
{
++src;
++dst;
}
if ( ret ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}

3,求1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3);
求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,
能被625整除的数的个数n4.
1000!末尾的零的个数=n1+n2+n3+n4;
#include
#define NUM 1000
int find5(int num){
int ret=0;
while(num%5==0){
num/=5;
ret++;
}
return ret;
}
int main(){
int result=0;
int i;
for(i=5;i {
result+=find5(i);
}
printf(” the total zero number is %d\n”,result);
return 0;
}

Tags in this post...

面试题 相关文章推荐
垃圾回收的优点和原理。并考虑2种回收机制
Oct 16 面试题
怎样让char类型的东西转换成int类型
Dec 09 面试题
包装类的功能、种类、常用方法
Jan 27 面试题
公司JAVA开发面试题
Apr 02 面试题
华为慧通笔试题
Apr 22 面试题
写出一个方法实现冒泡排序
Jul 08 面试题
一组SQL面试题
Feb 15 面试题
如何理解委托
Jan 06 面试题
.NET程序员的数据库面试题
Oct 10 面试题
SQL注入攻击的种类有哪些
Dec 30 面试题
linux下进程间通信的方式
Jan 23 面试题
品恩科技软件测试面试题
Oct 26 面试题
C有"按引用传递"吗
Sep 06 #面试题
求高于平均分的学生学号及成绩
Sep 01 #面试题
上海方立数码笔试题
Oct 18 #面试题
在C中是否有模拟继承等面向对象程序设计特性的好方法
May 22 #面试题
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
Dec 05 #面试题
在C语言中实现抽象数据类型什么方法最好
Jun 26 #面试题
main 函数执行以前,还会执行什么代码
Apr 17 #面试题
You might like
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
php 邮件发送问题解决
2014/03/22 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
注塑工厂厂长岗位职责
2013/12/02 职场文书
社区服务活动报告
2015/02/05 职场文书
工作自我评价范文
2015/03/05 职场文书
写给导师的自荐信
2015/03/06 职场文书
写给女朋友的保证书
2015/05/09 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android