易截截图软件、单文件、免安装、纯绿色、仅160KB

C程序:确定一个整数的计算机内部表示中有几个"1"

/*
注意不断右移判断最低位是1有多少个的算法是错误的,
因为根据GNU C/C++的实现来看,负数是带符号填充进行右移的,所以如果是负数,该算法会死循环。
变通办法:Java可以用>>>逻辑右移位操作符,C/C++可以强制转换成无符号整数再处理
下面的程序是正解。其中num &= (num - 1) 会消除num的最小位置的"1"
*/
#include <stdio.h>
int numOnesInBinary(int num)
{
int numOnes = 0;
while (num != 0) {
num &= (num - 1);
numOnes++;
}
return numOnes;
}
int main()
{
printf("%d", numOnesInBinary(-1));
return 0;
}


相关文档:

Linux C 使用指针访问成员

  在Linux用c编程,很多时候都会碰到结构体这个概念,尤其是使用指针访问结构体成员。(下面的文字介绍,请参考代码理解)
        1. 使用一个新运算符:->,这个运算符有一个连接号(-)后跟一个大于符号(>)组成
        &nbs ......

求方程ax^2+bx+c=0的根(函数)

#include<stdio.h>
#include<math.h>
float x1,x2,disc,p,q;
int main()
{
void greater_than_zero(float,float);
void equal_to_zero(float,float);
void smaller_than_zero(float,float);
float a,b,c;
printf("\ninput a,b,c:");
scanf("%f,%f,%f",&a,&b,&c) ......

C/C++ 核心技术 总结1

第二章 数据类型
 
一、数据类型分类
 
1 联合类型
2 函数类型
3 数量类型
3.1算术类型
     ① 基本数据类型
            整型(包括char)
            浮点型 ......

C程序:某水王的发帖数超过总贴数的一半,找出之

//某水王的发帖数超过总贴数的一半,找出之
int find(int *ID, int N)
{
int candidate;
int nTimes, i;
for (i = nTimes = 0; i < N; i++)
{
if (nTimes == 0)
{
candidate = ID[i];
nTimes = 1;
}
else if (candidate == ID[i])
{
nTimes++;
}
else
{
nTimes--;
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号