请教关于双色球组合序号加上篮球的序号计算错误的问题
int comp(int m ,int n)
{
if (m<n)
return 0;
if (m==n)
return 1;
int n1=1;//double
int n2=1;//double
int i = 1;
for (i=1;i<=n;i++)
{
n1*=(i+m-n);
n2*=i;
}
return (n1/n2);
}
int lxh(int a,int b,int c,int d,int e,int f )
{
int suml=(comp(33,6)-comp(33-a+1,6)
+comp(33-a,5)-comp(33-b+1,5)
+comp(33-b,4)-comp(33-c+1,4)
+comp(33-c,3)-comp(33-d+1,3)
+comp(33-d,2)-comp(33-e+1,2)
+comp(33-e,1)-comp(33-f+1,1));
int zsum=(suml*16);
return zsum;//printf("含蓝球绝对序号是zsum+蓝球);
}
问题是:当篮球=1时尾数是2,正确的应该是3;如下:
28 29 30 31 32 33 蓝01,正确的序号应该是17721073,而上式的结果是17721072
28 29 30 31 32 33 蓝02,正确的序号应该是17721074,这个对;
28 29 30 31 32 33 蓝03,正确的序号应该是17721075,而上式的结果是17721076
28 29 30 31 32 33 蓝04,正确的序号应该是17721076,这个对;
28 29 30 31 32 33 蓝05,正确的序号应该是17721077,而上式的结果是17721076
28 29 30 31 32 33 蓝06,正确的序号应该是17721078,这个对;
28 29 30 31 32 33 蓝07,正确的序号应该是17721079,而上式的结果是17721080
28 29 30 31 32 33 蓝08,正确的序号应该是17721080,而上式的结果是17721080
28 29 30 31 32 33 蓝09,正确的序号应该是17721081,而上式的结果是17721080
28 29 30 31 32 33 蓝10,正确的序号应该是17721082,这个对;
28 29 30 31 32 33 蓝11,正确的序号应该是17721083,而上式的结果是17721084
28 29 30 31 32 33 蓝12,正确的序号应该是17721084,这个对;
28 29 30 31 32 33 蓝13,正确的序号应该是17721085,而上式的结果是17721084
28 29 30 31 32 33 蓝14,正确的序号应该是17721086,这个对;
28 29 30 31 32 33 蓝15,正确的序号应该是17721087,而上式的结果是17721088
28 29 30 31 32 33 蓝16,正确的序号应该是17721088,这个对;
错误在哪,请老师给指教出来!先谢谢了!
[解决办法]
从代码来看,
a,b,c,d,e,f,xh,blue;
xh = xuhao ( a,b,c,d,e,f )*16+blue;
在bule=7和bule=8结果不可能相同,但你给的计算结果却相同,显然是你主函数处理部分传参数出问题了
自己设断点调试一下把