同方数码面试题
时间:2010-04-25 来源:280552108
1.M是一个Byte,请计算中 每个bit中为1的个数
#include <stdio.h>
int main()
{
int i,count;
char M=0x11; /*00010001b*/
printf("%x\n",M);
for(i=0,count=0;i<8;i++)
{
if( ((1<<i)&M) != 0) /*这个地方应该用 括号括起来*/
{
count++;
}
}
printf("%d\n",count);
}
2.计算Num[100]中9的个数
#include <stdio.h>
int main()
{
int i,count;
char Num[100]={0x1,0x2,0x3,0x4,0x9,0x12,0x3,0x9};
for(i=0,count=0;i<100;i++)
if( *(Num+i) == 9)
count++;
printf("%d",count);
}
3.将整数M(4Bytes)转换成一个字符串
#include <stdio.h>
int main()
{
int i=0;
int M=12345;
char str[12];
do{
str[ i ]= (M%10)+0x30;
i++; /*这个忘记了*/
}while( (M=M/10)>0 );
/*将str倒序即可*/
printf("%s",str);
}
4.将一个字符串倒置
#include <stdio.h>
#include <string.h>
int main()
{
int i,Len;
char str[12]="abcdef";
char temp;
Len=strlen(str);
for(i=0;i<Len/2;i++)
{
temp = *(str+i);
*(str+i) = *(str-i+Len-1);
*(str-i+Len-1) = temp;
}
printf("%s",str);
}
5.将一个单向链表 (linked list)逆序
(注:原题写成双向链表,是个陷阱)
/* h是头节点 */
q = h->next;
h->next = NULL; /* h->next 充当临时变量 */
while( q!=NULL)
{
p = q;
q = q->next;
p->next = h->next;
h->next = p;
}
相关阅读 更多 +