首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

两个C语言面试题解决方法

2012-04-06 
两个C语言面试题1、数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂

两个C语言面试题
1、数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型:
int do_dup(int a[],int N) 


2、一语句实现x是否为2的若干次幂的判断 


[解决办法]
一语句实现x是否为2的若干次幂的判断

C/C++ code
//其实就是位运算。#include <stdio.h>int main( ){  int x;  scanf("%d", &x);  if ( x & ( x - 1 ) == 0 )    printf("是2的幂");  else printf("不是2的幂");  return 0;}
[解决办法]
C/C++ code
int do_dup(int a[],int N)  {    int eora = 0,eorb = 0;    for (int i = 0 ; i != N; ++i)    {        eora ^= (i + 1);        eorb ^= a[i];    }        return N^eora^eorb;}int main(){    int arr[] = {1,2,3,4,4,5};    cout<<do_dup(arr,6)<<endl;      return 0;} 

热点排行