使用文本文件保存斐波那契数列前40个数保存在fib.txt中c++
时间: 2024-02-11 09:07:10 浏览: 116
可以使用C++来生成斐波那契数列,并将结果写入文件fib.txt中。以下是示例代码:
```c++
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// 生成斐波那契数列
int fib[40];
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i < 40; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
// 将结果写入文件
ofstream fout("fib.txt");
for (int i = 0; i < 40; i++) {
fout << fib[i] << endl;
}
fout.close();
return 0;
}
```
执行完毕后,fib.txt文件中将包含斐波那契数列前40个数。
相关问题
编写程序,使用文本文件将斐波那契数列前40个数保存在fib.txt文件中。然后打开这个文件,依次用数列的前一项除以后一项,将除的结果保存在fibst.txt中。打开文件观结果。再用二进制文件的方式重新实现一遍,打开文件观察结果。用C++来写代码
下面是用文本文件实现的C++代码:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main() {
const int N = 40;
int fib[N];
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i < N; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
ofstream fout("fib.txt");
if (!fout) {
cout << "Failed to open fib.txt" << endl;
return 1;
}
for (int i = 0; i < N; i++) {
fout << fib[i] << endl;
}
fout.close();
ifstream fin("fib.txt");
if (!fin) {
cout << "Failed to open fib.txt" << endl;
return 1;
}
ofstream fout2("fibst.txt");
if (!fout2) {
cout << "Failed to open fibst.txt" << endl;
return 1;
}
int prev, curr;
fin >> prev;
while (fin >> curr) {
double ratio = (double) prev / curr;
fout2 << ratio << endl;
prev = curr;
}
fin.close();
fout2.close();
return 0;
}
```
下面是用二进制文件实现的C++代码:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main() {
const int N = 40;
int fib[N];
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i < N; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
ofstream fout("fib.bin", ios::binary);
if (!fout) {
cout << "Failed to open fib.bin" << endl;
return 1;
}
fout.write((char*) fib, N * sizeof(int));
fout.close();
ifstream fin("fib.bin", ios::binary);
if (!fin) {
cout << "Failed to open fib.bin" << endl;
return 1;
}
ofstream fout2("fibst.bin", ios::binary);
if (!fout2) {
cout << "Failed to open fibst.bin" << endl;
return 1;
}
int prev, curr;
fin.read((char*) &prev, sizeof(int));
while (fin.read((char*) &curr, sizeof(int))) {
double ratio = (double) prev / curr;
fout2.write((char*) &ratio, sizeof(double));
prev = curr;
}
fin.close();
fout2.close();
return 0;
}
```
注意,在写入和读取二进制文件时需要使用 `ios::binary` 参数,而且要用 `write` 和 `read` 函数分别写入和读取二进制数据。
用C++请计算斐波那契数列的前100项,并保存在一个长度为100的整型数组中, 当输入项数n时,程序会返回斐波那契数列第n项的值.
在C++中,可以使用动态内存分配和递归的方式来计算并存储斐波那契数列的前100项。由于递归可能会导致大量的函数调用开销,对于大数值,我们可以选择使用迭代的方式来优化性能。以下是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
// 使用迭代方法计算斐波那契数
int fibonacci(int n) {
if (n <= 1)
return n;
std::vector<int> fib(n + 1);
fib[0] = fib[1] = 1;
for (int i = 2; i < n; ++i) {
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib[n];
}
int main() {
int n = 100; // 可以更改此值来获取不同的斐波那契数列项数
std::vector<int> fibNumbers(n);
// 计算并保存斐波那契数列的前100项
for (size_t i = 0; i < n; ++i) {
fibNumbers[i] = fibonacci(i);
}
// 输出斐波那契数列前100项
for (const auto& num : fibNumbers) {
std::cout << num << " ";
}
return 0;
}
```
阅读全文