C语言面试题-这些简单的你能很快的写出来吗?

栏目: C · 发布时间: 5年前

内容简介:在职场上,面试已经成了我们经常讨论的一个话题,但是当我们在求职面试的时候总是会遇到各种问题,在这里我就给大家讲解一些C语言的面试题!面试题一:

C语言面试题-这些简单的你能很快的写出来吗?

在职场上,面试已经成了我们经常讨论的一个话题,但是当我们在求职面试的时候总是会遇到各种问题,在这里我就给大家讲解一些 C语言 的面试题!

C语言面试题-这些简单的你能很快的写出来吗?

面试题一:

编写一个函数将一个字符串倒置,即将“abc”变为“cba”。

分析:

这样的问题显然涉及到char型指针的运算。

Exp:

void InvertStr(char *str)

{

long int i=0;    //估计这么长的字符串应该够用了,如果实在不行只能用float的数据来试验了。

char *head;

char *chTemp;

if(NULL == str)

{

return ;

}

head=str;

chTemp=str;

while('\0' != *str)

{

str++;

i=i+1;

}

while(0 != i)

{

str--;

*chtemp=*str;

i--;

chTemp++;

}

chTemp++;

*chTemp='\0';

str=head;

}

面试题二:

请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请给出该题的至少一个不同解法。

分析:

假设数是:0000_0001; 当这个数被解释为无符号数的时候,如果对2求模,那么得到的结果是多少呢?

很显然得到的结果是1; 而如果是0000_0010,这个怎么样呢? 对2求模得到的是0; 但是如果我们往右进行

移位的话,那么结果是什么呢?

Exp:

实现一:

unsigned short  CalSetBitNum(const unsigned char input)

{

short   i=0;

short   j;

unsigned char chTemp;

chTemp=input;

for(j=0 ;j<7;j++)

{

i=i+ chTemp % 2;

chTemp=chTemp>>1;

}

return  i ;

}

实现二:可以利用按位与进行判定

unsigned short  CalSetBitNum(const unsigned char input)

{

short   i=0;

short   j;

short iTemp=input;

for(j=0 ;j<7;j++)

{

if((iTemp= iTemp >>1) & (0x01) )

i++;

}

return  i ;

}

其实第二种方法可以更简单, 大家看看怎么个简单法 ?

有的人可能会用第三种方法:进行与0相与。我认为这样严格来说不能算第三种方法,我认为那只是第二种方法的延伸而已。

面试题三:

请编写一个 C 函数,该函数将给定的一个字符串转换成整数。

分析:

将字符串转换成整数,那么我们需要进行的工作是将字符串一个字符一个字符的剥离出来,然后才能进行数据的转换,

这个其实也和scanf函数一样,因为在scanf函数读入的是文本流,就是将读入的字符都认为是字符,即使输入的是123,同样也

需要进行转换。

Exp:

我们姑且简单的将字符串认为会转化为正整数,负数的留给大家讨论吧。并且认为如果输入的字符串是“123”,那么输出的应该也是

123(int型)。

unsigned  int  StrToInt(const  char * source)

{

unsigned int i;

unsigned int j;

char *pTemp;

if(NULL==source)

{

return 0;

}

while('\0' != *pTemp)

{

j= *pTemp - 48;

i=j+i*10;

pTemp++;

}

return i;

}

面试题四:

请编写一个 C 函数,该函数将给定的一个整数转换成字符串。

分析:

这个题目和上面的题目的问题刚好相反,因此可以借鉴上面题目的处理方法来进行处理。

void IntToStr(const int source,char *target)

{

int i;

int j;

if(0==source)

*target=‘\0’;

i=source;

do

{

j=i % 10;

*target=j+48;

target++;

}while(0 != (i=i/10) )

InvertStr(target);

}

以后会不定期的对C的面试题进行解读,希望借此可以增加自己的见识,也能提高自己的C水平........


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

区块链:定义未来金融与经济新格局

区块链:定义未来金融与经济新格局

张健 / 机械工业出版社 / 2016-6-18 / 49.00

从构建价值互联网的角度看,区块链的出现意味着从0到1。正因如此,本书章节结构与常见的体例不同,从第0章开始。第0章从文字与货币的起源出发,通过论述人类信息传递和价值传输手段的进步,说明区块链技术诞生的必然性。第1章用深入浅出的语言讲解区块链的本质、运行原理、颠覆性潜力以及区块链技术的现状与未来;第2章宏观讲述了区块链技术带来的新产品和新机遇,包括数字货币、互联网金融、物联网,以及新一代的基础设施;......一起来看看 《区块链:定义未来金融与经济新格局》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具