这道题有点卡,主要是在把数转换成二进制的过程,是很好的递归题目。
#include<stdio.h>
#include<iso646.h>
#include<limits.h>
#include<algorithm>
#include<math.h>
using namespace std;
int a[20],k=0;
void zhuanhuan(int n)
{
if((n!=0)and(n!=1))
zhuanhuan(n/2);
a[k++]=n%2;
}
int main(void)
{
intn,i;
while((scanf("%d",&n)!=EOF) and (n!=0))
{
for(i=0;i<20;i++)
a[i]=2;
k=0;
zhuanhuan(n);
for(i=0;i<20;i++)
{if(a[i]==2) k=i;break;}
for(i=0;i<k;i++)
{
if(a[i]==0)printf("*@@@@@*");
elseprintf("***@***");
}
printf("\n");
for(i=0;i<k;i++)
{
if(a[i]==0)printf("*@***@*");
elseprintf("*@@@***");
}
printf("\n");
for(i=0;i<k;i++)
{
if(a[i]==0)printf("*@***@*");
elseprintf("***@***");
}
printf("\n");
for(i=0;i<k;i++)
{
if(a[i]==0)printf("*@***@*");
elseprintf("***@***");
}
printf("\n");
for(i=0;i<k;i++)
{
if(a[i]==0)printf("*@***@*");
elseprintf("***@***");
}
printf("\n");
for(i=0;i<k;i++)
{
printf("*@@@@@*");
}
printf("\n");
}
return0;
}