谁会的就进来帮帮忙啊~~~
编写程序,输入正整数n(n<8),输出全部n位的三进制数。如输入n为2
则输出:
00
01
02
10
11
12
20
21
22
程序代码:#include <stdio.h>
#include <string.h>
char * reverse(char * str) {
char * p1 = str, * p2 = str + strlen(str) - 1;
while(p1 < p2) {
*p1 ^= *p2;
*p2 ^= *p1;
*p1 ^= *p2;
p1++; p2--;
}
return str;
}
char * to_ternary_string(char * str, int n) {
char * temp = str;
while(n) {
*temp++ = n % 3 + '0';
n /= 3;
}
*temp = '\0';
return reverse(str);
}
int pow_n(int n, int e) {
int p = 1, i;
for(i = 0; i < e; i++)
p *= n;
return p;
}
int main(void) {
char str[9];
int n, i, j;
scanf("%d", &n);
for(i = 0; i < pow_n(3, n); i++) {
to_ternary_string(str, i);
for(j = 0; j < n - strlen(str); j++)
putchar('0');
printf("%s\n", str);
}
return 0;
}
