整数转换二进制并统计两个1之间0的个数

不说废话,看代码
#include
int fun(int x)
{
	if(x==1) return 1;
	if(x==0) return 0;
}
int main()
{
	int T;
	scanf("%d",&T);//循环次数 
	int i,j,a,x=0,n,flag=1,sum=0,t1=0;
	int c[100],b; 
	for(i=1;i<=T;i++)
	{
/*功能:数字为转化为二进制*/ 
		scanf("%d",&n);
		do{
			c[x]=n%2;
			n=n/2;
			x=x+1;
		}while(n>0);
		c[x]='\0'; 
/*功能:输出转化结果*/ 
		for(b=x-1;b>=0;b--)
		{
			printf("%d",c[b]);
		}//输出形式
		printf("\n\n");
		j=x-1;//j是数组最后一个下标 
/***尝试使用while、for加switch语句计数***/ 
/*功能:计算1与1之间0数量*/ 
		for(;j>=0;j--)
		{
			flag=fun(c[j]);//1001
			if(flag==0)
			{
				t1++;
			}
			if(flag==1)
			{
				sum+=t1;
				t1=0;
			}
		}
/*功能实现原理:当c[j]通过函数fun为1则返回1,第一个if对这个1后面的0数量进行计数,
在一直到结束或者下一个1(即再次返回1时),此时,再次遇到1才会把t1值赋给sum,以flag为指示标志*/ 
	printf("%d\n\n",sum);//输出结果 
/*清空计数,清除对后面计数影响*/ 
	sum=0;
	t1=0;
	x=0;
	}
	return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务