一个计算排列组合的程序,算出来结果是负数,咋回事?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个计算排列组合的程序,算出来结果是负数,咋回事?相关的知识,希望对你有一定的参考价值。
#include "stdio.h"
#include "stdlib.h"
int calPossibilities(int,int);
int main()
int m,n,cal;
printf("请输入总人数:\n");
scanf("%d",&m);
printf("请输入选择的人数:\n");
scanf("%d",&n);
cal=calPossibilities(m,n);
printf("共有%d种选择方式",cal);
system("pause");
return 0;
int calPossibilities(int m,int n)
int a,b,c,i,x;
for (a=1,i=1;i<=m;i++)
a*=i;
for (b=1,i=1;i<=n;i++)
b*=i;
for (c=1,i=1;i<=(m-n);i++)
c*=i;
x=a/(b*c);
return x;
求大神告知,这是神马情况,
已经超出了int的表示范围。发生了数据溢出,才变成了负数。
你可以试一下:
long calPossibilities(long m,long n)
long i,x,t;
if(n>m-n)n=m-n;
for(x=1,i=1;i<=n;)
x=x*m--/i++;
return x;
参考技术A for (a=1,i=1;i<=m;i++)
a*=i
你的这个循环是在求15的阶乘 得到的值太大 导致溢出
用plt画图咋y轴不按大小排列
跑完实验想把保存的loss通过plt画出来,结果画出来这么一玩意儿,吓我一跳,合着我的模型是在增加噪声。
仔细一看才发现,因为保存下来的loss是文本,所以得转为float类型或者int类型才能正常显示,加个强制转换就好啦。
以上是关于一个计算排列组合的程序,算出来结果是负数,咋回事?的主要内容,如果未能解决你的问题,请参考以下文章
急~~~~~~为啥我用C语言和蔡勒公式写的算某一天是星期几的程序总是不对?
matlab怎么计算出来的数很多都是NaN的值呢?怎么回事啊