定义一个递归函数,求给定正整数的二进制形式的位数。
发布网友
发布时间:2022-05-10 21:08
我来回答
共1个回答
热心网友
时间:2023-10-31 22:22
/*
*
程序:求给定正整数的二进制形式的位数
*
输入:
正整数
*
输出:对应二进制形式的位数
*
版本:
v0.1
*
完成时间
2008/11/23
*/
作者:Stephen
#include
<stdio.h>
#include
<stdlib.h>
int
GetBit(int
n);
void
Display(int
*result,int
len);
int
main(void)
{
int
count,i;
int
*number,*result;
printf("请输入正整数个数:\n");
scanf("%d",&count);
/*申请内存*/
number=(int
*)malloc(count*sizeof(int));
result=(int
*)malloc(count*sizeof(int));
printf("请输入%d个正整数:\n");
for(i=0;i<count;i++)
scanf("%d",&number[i]);
/*计算对应的二进制位数*/
for(i=0;i<count;i++)
result[i]=GetBit(number[i]);
/*显示结果*/
Display(result,count);
/*释放所占的内存*/
free((void*)number);
free((void*)result);
}
int
GetBit(int
n)
{
if(n==0||n==1)
return
1;
return
GetBit(n/2)+1;
}
void
Display(int
*result,int
len)
{
int
i;
printf("转换成二进制形式后的长度是:\n");
for(i=0;i<len;i++)
printf("%d
",result[i]);
printf("\n");
system("PAUSE");
}