我对C ++很新,并且正在尝试编写一个程序,该程序使用Do-While循环来计算从1到n的和,其中n是输入参数,并在for循环中使用阶乘函数计算n的阶乘。但是,在编译程序时,我得到的结果如下:
从1到n的总数(在本例中n为5)是001ED2A8或其他奇怪的数字和字母组合。我的因子结果也发生了同样的事情。我很感激能得到的任何和所有帮助。以下是我到目前为止的情况:
#include "stdafx.h"
#include <iostream>
using namespace std;
int total(int);
int factorial(int);
void main()
{
int n;
cout << "Please enter a positive number:";
cin >> n;
cout << "The total from 1 to " << n << "is " << total << endl;
cout << "The factorial of " << n << " is: " << factorial << endl;
}
int total (int n)
{
int i, total;
total = 0;
i = 1;
do
{
total = total + i;
i = i + 1;
} while (total <= n);
return total;
}
int factorial (int n)
{
int product = 1;
for (;n>0; n--)
{
product = n * product;
}
return product;
}
答案 0 :(得分:0)
long factorial (int n)
{
if (n >= 1)
return n*factorial(n-1);
else
return 1;
}
或用于循环如下
for(i=1,f=1;i<=n;i++)
{
{f=f*i;}
}
答案 1 :(得分:0)
使用时
cout << "The total from 1 to " << n << "is " << total << endl;
等同于
int (*function_ptr)(int) = total;
cout << "The total from 1 to " << n << "is " << function_ptr << endl;
您正在将函数指针传递给operator<<
,而不是通过调用函数返回的值。
在该上下文中,函数指针被转换为布尔值true
。因此,该调用等同于:
cout << "The total from 1 to " << n << "is " << true << endl;
下一行也会发生同样的事情。
要打印这些函数返回的值,您必须进行函数调用。使用:
cout << "The total from 1 to " << n << "is " << total(n) << endl;
cout << "The total from 1 to " << n << "is " << factorial(n) << endl;
此外,您应该将main
的返回值更改为int
:
int main()
{
...
}
答案 2 :(得分:0)
To use a for loop as follows:
int f=1, i=1;
for(i=1,f=1;i<=n;i++)
{
{f=f*i;}
}