#1
by 駆け出しのプログラマ » 3年前
とある数nを入力した時に2^n個分の2進数の全通りを表示するプログラムを考えているのですが、うまくいきません。例えばn=3を入力すると110などが表示されず、7通りしか出力されません。
宜しくお願い致します。
コード:
#include <stdio.h>
#include <stdlib.h>
void aa(int x,int y)
{
int i;
for(i=0;i<y;i++)
printf(x & (1<<(y-i-1))?"1":"0");
printf("\n");
}
int main(int argc,char *argv[])
{
int i,j,h;
int t=0;
printf("自然数を入力してください\n");
setbuf(stdout, NULL);
scanf("%d",&h);
aa(t,h);
for(j=0;j<=h;j++){
for(i=j;i<h;i++)
aa(t|(1<<i),h);
t<<=1;
t|=1;
}
return 0;
}
とある数nを入力した時に2^n個分の2進数の全通りを表示するプログラムを考えているのですが、うまくいきません。例えばn=3を入力すると110などが表示されず、7通りしか出力されません。
宜しくお願い致します。
[code]
#include <stdio.h>
#include <stdlib.h>
void aa(int x,int y)
{
int i;
for(i=0;i<y;i++)
printf(x & (1<<(y-i-1))?"1":"0");
printf("\n");
}
int main(int argc,char *argv[])
{
int i,j,h;
int t=0;
printf("自然数を入力してください\n");
setbuf(stdout, NULL);
scanf("%d",&h);
aa(t,h);
for(j=0;j<=h;j++){
for(i=j;i<h;i++)
aa(t|(1<<i),h);
t<<=1;
t|=1;
}
return 0;
}
[/code]