谁会的就进来帮帮忙啊~~~
编写程序,输入正整数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; }