#include<stdio.h>
#include<math.h>
void binary(int num);
int i=0,j,arr[32]={0};
int main()
{
int num,even=0,odd=0;
printf("请输入一个正整数:\n");
scanf("%d",&num);
binary(num);
printf("解释:%d的二进制形式是\n",num);
while(i)
{
printf("%d ",arr[--i]);
}
/*printf("想找哪2个下标?");
int subscript1,subscript2;
scanf("%d\t%d ",&subscript1,&subscript2);
printf("%d\t%d",arr[subscript1],arr[subscript2]);*/
for(int k;k<j;k++)
{
if(arr[k]==1)
{
if(k%2==1)
odd++;
else if(k%2==0)
even++;
}
}
printf("[%d,%d]",even,odd);
return 0;
}
void binary(int num)
{
while(num)
{
arr[i++]=num%2;
num/=2;
}
j=i;
}
c语言实现
给你一个 正 整数 n 。
用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。
用 odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。
返回整数数组 answer ,其中 answer = [even, odd] 。
示例 1:
输入:n = 17
输出:[2,0]
解释:17 的二进制形式是 10001 。
下标 0 和 下标 4 对应的值为 1 。
共有 2 个偶数下标,0 个奇数下标。
示例 2:
输入:n = 2
输出:[0,1]
解释:2 的二进制形式是 10 。
下标 1 对应的值为 1 。
共有 0 个偶数下标,1 个奇数下标。
提示:
1 <= n <= 1000
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-even-and-odd-bits
算法答案
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
#include<stdlib.h>
int* evenOddBit(int n, int* returnSize)
{
int i=0,j,arr[32]={0},*p;
p=(int *)malloc(4*2);
p[0]=0;
p[1]=0;
while(n)
{
arr[i++]=n%2;
n/=2;
}
j=i;
for(int k=0;k<j;k++)
{
if(arr[k]==1)
{
if(k%2==1)
p[1]++;
else if(k%2==0)
p[0]++;
}
}
*returnSize=2;
return p;
}