python - 在c或python中计算组合

标签 python c

您好,我在这里稍微了解了这个主题,但没有发现任何可以帮助我的内容。

我需要一个 Python 或 C 程序,它可以给出 a 和 b 的所有可能组合,满足 n=2*a+b 的要求,n 从 0 到 10。a、b 和 n 是整数。 例如,如果 n=0,a 和 b 都必须为 0。对于 n=1,a 必须为零,b 必须为 1,对于 n=2,a 可以为 1,b=0,或者 a=0,b=2,等等

我不太擅长编程。我做了这个:

#include <stdio.h>

int main(void){
    int a,b,n;
    for(n = 0; n <= 10; n++){
        for(a = 0; a <= 10; a++){
            for(b = 0; b <= 10; b++)
                if(n == 2*a + b)
                    printf("(%d, %d), ", (a,b));
        }
        printf("\n");       
    }
}

但它不断得到这样奇怪的结果:

(0, -1079628000), 
(1, -1079628000), 
(2, -1079628000), (0, -1079628000), 
(3, -1079628000), (1, -1079628000), 
(4, -1079628000), (2, -1079628000), (0, -1079628000), 
(5, -1079628000), (3, -1079628000), (1, -1079628000), 
(6, -1079628000), (4, -1079628000), (2, -1079628000), (0, -1079628000), 
(7, -1079628000), (5, -1079628000), (3, -1079628000), (1, -1079628000), 
(8, -1079628000), (6, -1079628000), (4, -1079628000), (2, -1079628000), (0, -1079628000), 
(9, -1079628000), (7, -1079628000), (5, -1079628000), (3, -1079628000), (1, -1079628000), 
(10, -1079628000), (8, -1079628000), (6, -1079628000), (4, -1079628000), (2, -1079628000), (0, -1079628000), 

ideone

知道出了什么问题吗?

此外,如果我可以为 Python 执行此操作,那就更酷了。 :D

最佳答案

C 版本无法工作,因为您使用了逗号运算符。逗号运算符对所有操作数求值,结果为最后一次求值,例如:

int i = 4;
int j = 3;

int k = (i += 4, i + j);

// k is now 11 because i += 4 was done first (making i = 8)
// and then i + j is evaluated to 11 and is assigned to k.

在您的 printf 调用中,您要求打印两个十进制整数,但您只提供了一个。这是因为 (a, b) 计算 a (本质上是一个无操作),然后计算并“返回”b (也是一个无操作)。由于您只提供一个参数,printf 会打印第二个值的垃圾内容,因为没有给出实际数据。

只需删除括号,以便 ab 成为 printf 调用的实际参数,而不是逗号运算符的操作数。

关于python - 在c或python中计算组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578787/

相关文章:

python - 为什么 pyinstaller 不为我生成 .exe 文件?

python - 将旧网址重定向到更清洁的网址

python - 如何知道 nquad 调用的 C 函数中的维数?

c++ - output objdump -t的输出中的 ".hidden"是什么意思?

c - C与其抽象机之间的确切关系是什么?

python - matplotlib 不显示 x 轴和 y 轴标签和值以及图表标题

python - 使用 auto_arima(SARIMAX) 和傅立叶项预测具有多个季节性的时间序列

c - 在 C 中,结构成员可以使用与类型相同的名称吗?

c - 从 C 中生成的 ffmpeg 进程中优雅地提前退出

c - 为什么在这个程序中 strcpy() 函数会产生不需要的输出?