您好,我在这里稍微了解了这个主题,但没有发现任何可以帮助我的内容。
我需要一个 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),
知道出了什么问题吗?
此外,如果我可以为 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
会打印第二个值的垃圾内容,因为没有给出实际数据。
只需删除括号,以便 a
和 b
成为 printf
调用的实际参数,而不是逗号运算符的操作数。
关于python - 在c或python中计算组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578787/