C语言学习趣事_经典面试题系列_1
这篇文章开始的时候发布于: 2011年06月15日, 22点32分。
但是由于我本人C语言水平有限, 并且在发布代码的时候没有进行调试, 使得第一个面试题的Exp代码出现错误, 虽然思路上没有错误,
但是有网友跟帖及时纠正了我的错误, 在此对:menggucaoyuan 表示感谢。 感谢他让我明白了一个道理:实践是检验整理的唯一标准。
在此对由我的随笔引起阅读者的误解表示抱歉。在以后的随笔中我将保证没有经过验证的代码不再往博客园上贴发。
下面是我已经修正过的代码:
show sourceview sourceprint?01 #include<stdio.h>02
03 void InvertStr(char *str)
04 {
05 long int i=0;
06 char *chTemp;
07 char *Temp;<BR><BR> chTemp=str;
08
09 while( != *str)
10 {
11 str++;
12 i=i+1;
13 }
14 // printf(" %d ",i);
15 i=i/2;
16 // printf(" %d ",i);
17 while(0 !=i)
18 {
19 str--;
20 *Temp=*chTemp;
21 *chTemp=*str;
22 *str=*Temp;
23 i--;
24 chTemp++;
25 }
26 chTemp++;
27 }
28
29 int main(int argc,char *argv[])
30 {
31 char str1[]="abcdefg";
32 char *pstr=str1;
33 printf("%s",pstr);
34 InvertStr(pstr);
35 printf("%s",pstr);
36 getch();
37
38 }
嘻嘻,有段时间没有搞点有意思的C语言问题了, 今天我们来看一些比较有意思的面试题,欢迎大家来跟帖讨论问题。其实,我学习C语言的历史是已经很长了,大一的时候学C, 大学四年, 工作两年多,算起来学习C语言的历史有六年了,虽然自己学习C语言
时间够长,但是我自己的C语言水平一直徘徊在入门级的门外;说个值得自己王婆自卖自夸的事情,那就是大学C语言考试得了个96分,嘿嘿......
下面进入这次的闲扯.............
面试题一:
编写一个函数将一个字符串倒置,即将“abc”变为“cba”。
分析:
这样的问题显然涉及到char型指针的运算。
Exp:
void InvertStr(char *str)
{
long int i=0; //估计这么长的字符串应该够用了,如果实在不行只能用float的数据来试验了。
char *head;
char *chTemp;
if(NULL == str)
{
return 0;
}
head=str;
chTemp=str;
while( != *str)
{
str++;
i=i+1;
}
while(0 != i)
{
str--;
*chtemp=*str;
i--;
chTemp++;
}
chTemp++;
*chTemp=;
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 >
补充:软件开发 , C语言 ,