编写一个程序 exp1-2.cpp,对于1~n的每个整数n,输出 log2n、√n、n、nlog2n、n2、n3 、2n和n!的值
时间: 2024-11-27 14:23:41 浏览: 7
编写这样的程序需要使用 C++ 的数学库来处理计算对数、平方根、指数和阶乘等操作。以下是一个简单的 `exp1-2.cpp` 程序示例,它会循环遍历从1到用户输入的整数n,并打印出各个指定表达式的值:
```cpp
#include <iostream>
#include <cmath> // 包含对数和平方根函数
// 计算 n 的对数 base 2
double log2_n(double n) {
return log(n) / log(2);
}
// 计算 n 的平方根
double sqrt_n(double n) {
return sqrt(n);
}
// 计算 n 的阶乘 (这里仅支持不大于int最大值的情况)
unsigned long long factorial(int n) {
unsigned long long fact = 1;
for (int i = 1; i <= n; ++i) {
fact *= i;
}
return fact;
}
int main() {
int n;
std::cout << "请输入一个正整数 n: ";
std::cin >> n;
if (n <= 0) {
std::cerr << "错误:输入必须为正整数。\n";
return 1;
}
double n_log2_n = log2_n((double)n);
double n_squared = pow(n, 2);
double n_cubed = pow(n, 3);
std::cout << "For n=" << n << ":\n";
std::cout << "log2(n)=" << log2_n << "\n";
std::cout << "sqrt(n)=" << sqrt_n << "\n";
std::cout << "n=" << n << "\n";
std::cout << "n*log2(n)=" << n_log2_n << "\n";
std::cout << "n^2=" << n_squared << "\n";
std::cout << "n^3=" << n_cubed << "\n";
std::cout << "2^n=" << pow(2, n) << "\n";
std::cout << "n!=" << factorial(n) << "\n";
return 0;
}
```
运行这个程序时,你需要提供一个正整数作为输入。注意,因为阶乘计算可能会超出 `int` 类型的最大值,所以这里我们使用了 `unsigned long long` 来存储结果。
阅读全文