用cpp来求 2!+4!+6!+ ... n! 其中 n 由用户输入 注意 n 是 偶数,且不要过大
时间: 2023-05-22 11:05:37 浏览: 35
以下是求解过程的代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入偶数n:" << endl;
cin >> n;
int ans = 1;
for (int i = 2; i <= n; i += 2) {
ans *= i * (i - 1);
}
cout << n << "!的结果是:" << ans << endl;
return 0;
}
```
此代码可以计算出 2! 4! 6! ... n! 的结果,其中 n 是由用户输入的偶数。如果 n 过大,则结果可能会超出 int 类型的范围,造成错误。
相关问题
编写一个程序exp1-4,cpp,对于给定的正整数n,求11+2!+31+…+n!
### 回答1:
以下是exp1-4.cpp的程序代码:
```
#include <iostream>
using namespace std;
int main() {
int n, factorial = 1, sum = 0;
cout << "请输入一个正整数n:";
cin >> n;
for (int i = 1; i <= n; i++) {
factorial *= i;
if (i % 2 == 0) {
sum += 11 * factorial;
} else {
sum += 31 * factorial;
}
}
cout << "结果为:" << sum << endl;
return 0;
}
```
该程序首先要求用户输入一个正整数n,然后利用for循环计算1!到n!的值。在计算每个阶乘的值时,程序会根据当前循环变量i的值判断该阶乘的系数,如果i是偶数,则系数为11,否则系数为31。将该系数乘以阶乘的值,并累加到sum变量中。最终程序输出sum的值作为结果。
例如,如果用户输入n为4,则程序会计算1!到4!的值并将它们相加,其中2!和4!的系数为11,1!和3!的系数为31。因此结果为:
```
请输入一个正整数n:4
结果为:74
```
### 回答2:
下面是exp1-4.cpp程序的实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
long long result = 1;
cout << "请输入一个正整数n:";
cin >> n;
for (int i = 2; i <= n; i++) {
if (i % 2 == 0) {
result *= 11;
} else {
result *= i;
}
}
cout << "11 * 2! * 31 * ... * n! 的结果是:" << result << endl;
return 0;
}
```
该程序首先要求用户输入一个正整数n,然后使用一个循环来求解表达式11 × 2! × 31 × … × n!的结果。循环从2开始,每次迭代计算当前数i的阶乘,如果i是偶数,则将11乘以结果,否则将i乘以结果。最终,程序输出计算得到的结果。
### 回答3:
下面是一个使用C++编写的程序,可以计算并打印出给定正整数n的阶乘乘积:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入一个正整数n:" << endl;
cin >> n;
long long int product = 11; // 乘积的初始值设为11
long long int factorial = 1; // 阶乘的初始值设为1
for (int i = 2; i <= n; i++) {
factorial *= i; // 计算i的阶乘
product *= (i % 2 == 0 ? i : factorial); // 判断i的奇偶性,根据奇偶性计算乘积
}
cout << "11 × 2! × 31 × ... × n! = " << product << endl;
return 0;
}
```
上述程序首先会要求用户输入一个正整数n。然后程序通过使用循环结构,计算11 × 2! × 31 × ... × n!。其中,循环从2开始,逐步递增计算每个数的阶乘,并根据其奇偶性计算乘积。最后,程序输出计算得到的乘积结果。
需要注意的是,由于阶乘的计算结果可能非常大,所以在程序中我们使用了类型为`long long int`的变量来存储计算结果,以避免溢出问题。
使用cpp编写下题:输入一个大于1的正整数n , 当n为偶数时,计算:1+1/2+1/4+...+1/n; 当n为奇数时,计算:1+1/3+1/5+...+1/n;
以下是使用C++编写的程序,可以实现输入一个大于1的正整数n,根据n的奇偶性计算对应的求和结果:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
double sum = 0.0;
cout << "请输入一个大于1的正整数n:";
cin >> n;
if (n % 2 == 0) { // n为偶数
for (int i = 1; i <= n; i *= 2) {
sum += 1.0 / i;
}
} else { // n为奇数
for (int i = 1; i <= n; i += 2) {
sum += 1.0 / i;
}
}
cout << "求和结果为:" << sum << endl;
return 0;
}
```
程序中使用了一个变量`sum`来累加求和结果,初始值为0。
如果输入的n为偶数,则通过for循环依次计算1、1/2、1/4、1/8……1/n的和,循环变量i每次乘以2,直到i大于n。
如果输入的n为奇数,则通过for循环依次计算1、1/3、1/5、1/7……1/n的和,循环变量i每次加2,直到i大于n。
最后输出求和结果。