不说废话,看代码
#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;
}