设为首页 加入收藏

TOP

如何从40亿整数中找到不存在的一个(二)
2019-01-02 20:10:45 】 浏览:432
Tags:如何 40亿整数 找到 存在 一个
;-1;
    }
    char string[MAX_STR] = {0};
    int mask = 1<< bit;
    int bit0num = 0;
    int bit1num = 0;
    int num = 0;
    //printf("mask is %x\n",mask);
    /*循环读取源数据*/
    while(fgets(string, MAX_STR, src ) != NULL)
    {
        num = atoi(string);
        //printf("%d&%d %d\n",num,mask, num&mask);
        /*根据比特位的值,将数据写到不同的位置,注意优先级问题*/
        if(0 == (num&mask))
        {
            //printf("bit 0 %d\n",num);
            fprintf(fpBit0, "%d\n", num);
            bit0num++;
        }
        else
        {
            //printf("bit 1 %d\n",num);
            fprintf(fpBit1, "%d\n", num);
            bit1num++;
        }
    }
    //printf("bit0num:%d,bit1num:%d\n",bit0num,bit1num);
    if(bit0num > bit1num)
    {
        /*说明比特位为1的数少*/
        *nums = bit1num;
        return 1;
    }
    else
    {
        *nums = bit0num;
        return 0;
    }
}
/***
 *关闭所有文件描述符
 *
 * **/
void closeAllFile(FILE **src,FILE **bit0,FILE **bit1)
{
    if(NULL != src && NULL != *src)
    {
        fclose(*src);
        *src = NULL;
    }       
    if(NULL != bit1 && NULL != *bit1)
    {
   
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇创建第一次C语言程序 下一篇1011 A+B 和 C

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目