Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我得到了这个程序的错误输出? intmain() { int n=0; int*n_in=&n; int r=0; int*r_in=&r; 无符号长结果1=0; 无符号长结果2=0; 无符号长*result1\u out=&result1; 无符号长*result2\u out=&result2; 输入(&n,&r); 事实(&n,&r); 查找\u nPr(&n,&r,&result1); 查找nCr(&n,&r,&result2); 输出(&result1和&result2); } 无效输入(int*n\u英寸,int*r\u英寸) { printf(“输入n和r的值:”); 扫描频率(“%d%d”,n\u英寸,r\u英寸); } 无符号长事实(整数*n英寸) { 长期结果n=1; 对于(int i=1;i_C - Fatal编程技术网

为什么我得到了这个程序的错误输出? intmain() { int n=0; int*n_in=&n; int r=0; int*r_in=&r; 无符号长结果1=0; 无符号长结果2=0; 无符号长*result1\u out=&result1; 无符号长*result2\u out=&result2; 输入(&n,&r); 事实(&n,&r); 查找\u nPr(&n,&r,&result1); 查找nCr(&n,&r,&result2); 输出(&result1和&result2); } 无效输入(int*n\u英寸,int*r\u英寸) { printf(“输入n和r的值:”); 扫描频率(“%d%d”,n\u英寸,r\u英寸); } 无符号长事实(整数*n英寸) { 长期结果n=1; 对于(int i=1;i

为什么我得到了这个程序的错误输出? intmain() { int n=0; int*n_in=&n; int r=0; int*r_in=&r; 无符号长结果1=0; 无符号长结果2=0; 无符号长*result1\u out=&result1; 无符号长*result2\u out=&result2; 输入(&n,&r); 事实(&n,&r); 查找\u nPr(&n,&r,&result1); 查找nCr(&n,&r,&result2); 输出(&result1和&result2); } 无效输入(int*n\u英寸,int*r\u英寸) { printf(“输入n和r的值:”); 扫描频率(“%d%d”,n\u英寸,r\u英寸); } 无符号长事实(整数*n英寸) { 长期结果n=1; 对于(int i=1;i,c,C,所以我使用了多个函数。 我对n,r和n-r使用了3个独立的阶乘函数。 我的代码中没有错误……我认为我的阶乘函数有问题。 我如何在一个函数中实现所有的阶乘。我在大多数函数中都使用了无符号long。 条件是在主功能中不使用printf或scanf,并且必须有单独的输入和输出功能。 请帮助计算n您需要从1循环到n。但是您的循环限制高达n-1。 更改循环限制 int main() { int n = 0; int *n_in = &n; int r = 0; in

所以我使用了多个函数。 我对n,r和n-r使用了3个独立的阶乘函数。 我的代码中没有错误……我认为我的阶乘函数有问题。 我如何在一个函数中实现所有的阶乘。我在大多数函数中都使用了无符号long。 条件是在主功能中不使用printf或scanf,并且必须有单独的输入和输出功能。
请帮助计算
n
您需要从
1
循环到
n
。但是您的循环限制高达
n-1
。 更改循环限制

int main()
{
    int n = 0;
    int *n_in = &n;
    int r = 0;
    int *r_in = &r;
    unsigned long result1= 0;
    unsigned long result2 = 0;
    unsigned long *result1_out = &result1;
    unsigned long *result2_out = &result2;
    input(&n,&r);
    fact(&n,&r);
    find_nPr(&n,&r,&result1);
    find_nCr(&n,&r,&result2);
    output(&result1,&result2);
}

void input(int *n_in ,int *r_in)
{
    printf("Enter the values of n and r: ");
    scanf("%d %d",n_in,r_in);
}

unsigned long fact_n(int *n_in)
{
    long result_n = 1;
    for(int i = 1;i < *n_in;i++)
    {
        result_n= result_n*i;
    }
    return result_n;
}

unsigned long fact_r(int *r_in)
{
    long result_r = 1;
    for(int i = 1;i < *r_in;i++)
    {
        result_r= result_r*i;
    }
    return result_r;
}
unsigned long fact(int *n_in,int *r_in)
{
    long result = 1;
    for(int i = 1;i < (*n_in - *r_in);i++)
    {
        result= result*i;
    }
    return result;
}


unsigned long find_nPr(int *n_in,int *r_in,unsigned long *result1_out)
{
    *result1_out = fact_n(n_in)/fact(n_in,r_in);
    return *result1_out;
}

unsigned long find_nCr(int *n_in,int *r_in,unsigned long *result2_out)
{
    *result2_out = fact_n(n_in)/(fact_r(r_in)*fact(n_in,r_in));
    return *result2_out;

}

void output(unsigned long *result1_out,unsigned long *result2_out)
{
    printf("nPr : %lu\n",*result1_out);
    printf("nCr : %lu\n",*result2_out);
}
无符号长事实(int*n\u in)
{
长期结果n=1;

对于(int i=1;i)“我认为我的阶乘函数有问题。”-那么,在发布问题之前,你应该调查情况是否如此。此外,很容易找到如何实现阶乘函数的代码示例。输出有什么问题?你期望什么值?你得到什么值?此外,你的代码对未使用的变量有4个警告。如果我给出两个n和r分别为5和3…我得到的nCr为12,nPr为24…但实际值为10和1060@AbhiramMv欢迎并接受答案,upvote将是一个加号:P
unsigned long fact_n(int *n_in)
{
    long result_n = 1;
    for(int i = 1;i <= *n_in;i++) // <= added
    {
        result_n= result_n*i;
    }
    return result_n;
}

unsigned long fact_r(int *r_in)
{
    long result_r = 1;
    for(int i = 1;i <= *r_in;i++) // <= added
    {
        result_r= result_r*i;
    }
    return result_r;
}

unsigned long fact(int *n_in,int *r_in)
{
    long result = 1;
    for(int i = 1;i <= (*n_in - *r_in);i++) // <= added
    {
        result= result*i;
    }
    return result;
}