本人遇到过的笔试题的编程题
计算二进数中位为0的位数
int CoutResetBit(int x)
{
int count = 0;
while (x + 1)
{
count++;
x |= (x + 1);
}
return count;
}
计算二进制数中位为1的位数
int cout_SetBit(int x)
{
int count = 0;
while (x)
{
count++;
x &= (x - 1);
}
return count;
}
逆序输出字符串
void reserv_string(char *str)
{
if (*str != '\0')
{
reserv_string(str+1);
}
printf("%c", *str);
}
判断大小端
int is_bigEndian_littleEndian()
{
short int x = 0x1234;
char *p =(char*)&x;
if(*p == 0x12)
{
printf("大端字节序\n\r");
}
if(*p == 0x34)
{
printf("小端字节序\n\r");
}
return 0;
}
二分法查找
int binSearch(int[] array,int data)
{
int low=0;
int high=length-1;
while(low<=high)
{
int mid=(low+high)/2;
if(data==array[mid])
{
return mid;
}else if(data<array[mid])
{
high=mid-1;
}else
{
low=mid+1;
}
}
return -1;
}
冒泡排序
void bubble_sort(int sort[],int n)
{
int i,j;
int temp;
for(i = 0;i < (n-1); i++)
{
for(j = 0;j < ((n - 1) - i); j++)
{
if(sort[j] > sort[j+1])
{
temp = sort[j];
sort[j] = sort[j+1];
sort[j+1] = temp;
}
}
}
}
计算8位二进数中位为1的位数
int CountSetBitOfByte(unsigned char byte)
{
int i;
int count = 0;
for(i = 0;i < 8;i++)
{
if(byte & 0x80)
{
count++;
}
byte <<= 1;
}
return count;
}