求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
#include <stdio.h> int main() { int t,n; //scanf("%d",&t); //while(t--){ int count=0; int tmp=0; scanf("%d",&n); while(n){ if(n&0x01){ tmp++; } else{ tmp=0; } if(tmp>count) count=tmp; n=n>>1; } printf("%d\n",count); //} return 0; }所以题目给的数据组数是什么意思呢?本来还以为需要格式控制,结果发现没有格式控制。
#include<stdio.h> int main() { int in; while(scanf("%d", &in) != EOF) { int count = 0; int max = 0; while(in != 0) { if(in & 1 == 1) count ++; else count = 0; max = (max > count) ? max : count; in = in >> 1; } printf("%d\n", max); } return 0; }
#include <stdio.h> int main() { int num = 0; while(scanf("%d",&num) != EOF) { int width = 0 ,Ret = 0; int tmp = 0; while(num) { tmp = num%2; if(1 == tmp) width++; else { if(width > Ret) Ret = width; width = 0; } num = num/2; } if(width > Ret) Ret = width; printf("%d\n",Ret); } return 0; }
int main()
{
int num;
int flag;
int max;
int temp[16] = { 0 };
while (scanf("%d", &num) != EOF)
{
flag = 0;
max = 0;
if ((num >= 0) && (num <= 255))
{
max = 0;
int dp[16] = { 0 };
for (int i = 0; i<16; i++)
{
if((num >> i) & 0x01)
{
max = max + 1;
dp[max] = max;
}
else
{
max = 0;
}
}
//查找连续的1
for (int i = 15; i >= 0; i--)
{
if (dp[i] == i)
{
printf("%d\n", dp[i]);
break;
}
}
}
}
return 0;
}