【发布时间】:2016-03-12 11:38:30
【问题描述】:
我正在尝试编写一个函数来打印具有给定基数和位数的位置数字系统。例如,当 Base = 2 和 nDigits = 3 时,输出必须是这样的:
000
001
010
011
...
111
现在,我尝试做某事,但我只是失败了。考虑到我不能存储数字,我只需要打印它们,这就是我使用“支持”数组的动态分配的原因。这就是我到目前为止尝试做的事情,显然没有做它打算做的事情......我认为唯一正确的部分是打印 Base^nDigits 的所有组合。 (b=base,n=nDigits)。
void printNumeration(int b, int n){
int i, j=0;
int *array = calloc(n, sizeof(int));
if (array == NULL){
printf("Allocation failed.\n");
exit(0);
}
for (i=0; i<pow(b, n); i++){
for (j=0; j<n; j++){
printf("%d", array[j]);
array[j]++;
if (array[j] == n){
array[j] = 0;
}
}
printf("\n");
}
}
如果我的完全错误,您还可以提供一些关于更好解决方案的提示。
【问题讨论】:
-
你有什么问题?
-
您增加内部循环中的每个数字。您可以连续增加最后一位数字(并计算进位),直到第一个数字换行(想想里程表),或者您可以使用通常的代码打印
i以打印每次通过的铈基整数。 -
@MOehm 你说的 80% 的内容我都听不懂……抱歉哈哈
-
@2501 也许是做我想做的事情的正确方法......?