#include <stdio.h>
void main()
{
int x;
printf("Please input an integer: ");
scanf("%d", &x);
while (x>0)
{
printf("%d", x%2);
x = x / 2;
}
printf("\n");
}
#include <stdio.h>
void main()
{
int x;
int binary[32];
int i, n;
printf("Please input an integer: ");
scanf("%d", &x);
n = 0;
while (x>0)
{
binary[n] = x % 2;
x = x / 2;
n++;
}
for (i=n-1; i>=0; i--)
printf("%d", binary[i]);
printf("\n");
}
#include <stdio.h>
void main()
{
int x1;
unsigned int x2;
int binary[32];
int i, n;
printf("Please input an integer: ");
scanf("%d", &x1);
x2 = (unsigned int) x1;
n = 0;
while (x2>0)
{
binary[n] = x2 % 2;
x2 = x2 / 2;
n++;
}
for (i=n-1; i>=0; i--)
printf("%d", binary[i]);
printf("\n");
}
#include <stdio.h>
void main()
{
unsigned int x;
int binary[32];
int i;
int mask = 1;
printf("Please input an integer: ");
scanf("%d", &x);
for (i=0; i<32; i++)
{
binary[i] = x & mask;
x = x >> 1;
}
for (i=31; i>=0; i--)
printf("%d", binary[i]);
printf("\n");
}
列印 N 個整數的 N! 種排列方法 (方法一:遞迴)
#include <stdio.h>
void printPerm(int n1, int n2, int data[]);
void main()
{
int data[15];
int i;
for (i=0; i<15; i++)
data[i] = i+1;
printPerm(1, 3, data);
}
void printPerm(int n1, int n2, int data[])
{
int i, tmp;
if (n2==1)
{
for (i=0; i<n1; i++)
printf("%d ", data[i]);
printf("%d\n", data[n1]);
return;
}
else if (n2==2)
{
for (i=0; i<n1; i++)
printf("%d ", data[i]);
printf("%d %d\n", data[n1+0], data[n1+1]);
for (i=0; i<n1; i++)
printf("%d ", data[i]);
printf("%d %d\n", data[n1+1], data[n1+0]);
return;
}
else
{
for (i=0; i<n2; i++)
{
tmp = data[n1+i];
data[n1+i] = data[n1+0];
data[n1+0] = tmp;
printPerm(n1+1, n2-1, data);
tmp = data[n1+i];
data[n1+i] = data[n1+0];
data[n1+0] = tmp;
}
}
}
加上 swap 函式
#include <stdio.h>
void printPerm(int n1, int n2, int data[]);
void swap(int *x, int *y);
void main()
{
int data[11];
int i, n;
printf("Please input a number (< 10): ");
scanf("%d", &n);
for (i=0; i<n; i++)
data[i] = i+1;
printPerm(0, n, data);
}
void printPerm(int n1, int n2, int data[])
{
int i;
if (n2 == 1)
{
for (i=0; i<n1; i++)
printf("%d ", data[i]);
printf("%d\n", data[n1+0]);
return;
}
else if (n2 == 2)
{
for (i=0; i<n1; i++)
printf("%d ", data[i]);
printf("%d %d\n", data[n1+0], data[n1+1]);
for (i=0; i<n1; i++)
printf("%d ", data[i]);
printf("%d %d\n", data[n1+1], data[n1+0]);
}
else
{
for (i=0; i<n2; i++)
{
swap(&data[n1+0], &data[n1+i]);
printPerm(n1+1, n2-1, data);
swap(&data[n1+0], &data[n1+i]);
}
}
}
void swap(int *x, int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}