题目是求一个整数的二进制中1的个数。
具体分析如下:
例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。
现在的问题变成怎样判断一个整数的最右边一位是不是1了。很简单,如果它和整数1作与运算。由于1除了最右边一位以外,其他所有位都为0。因此如果与运算的结果为1,表示整数的最右边一位是1,否则是0。
1int NumberOf1_Solution1(int i)
2{
3 int count = 0;
4 while(i)
5 {
6 if(i & 1)
7 count ++;
8 i = i >> 1;
9 }
10 return count;
11}
#include
#include "StdAfx.h"
void main()
{
float a; //定义变量
printf("请输入一个数:\n");//输入提示
scanf("%f",&a); //获取输入
if(a>0.0) //大于0
{
printf("%0.1f大于0",a);
}
else if(a<0.0) //小于0
{
printf("%0.1f小于0",a);
}
else //等于0
printf("%0.1f等于0",a);
}
#include
int main()
{
int data = 0;
printf("请输入一个数:\n");
scanf("%d",&data);
printf("%c\n",(data>0?'+':(data<0?'-':'0')));
return 0;
}
{int i;
scanf(“/n”);
if(i<0)
printf("%d",yes);
{if(i=0)
printf("%d",0);
else
printf("%d",no);}
}
大概就是这个意思,细节之处可能有点错误
#include
int main()
{
int num;
scanf("%d", &num);
if (num < 0) printf("num is negative!\n");
else if (num == 0) printf("num is 0!\n");
else printf("num is positive!\n");
return 0;
}