计算机程序设计C++ MOOC(第13周编程作业)
本博客内容为中国大学生MOOC国家精品课程《计算机程序设计C++》作业记录,仅供参考,观者忌照搬照抄,欢迎交流批评指正!
##第十三周编程作业
本周作业内容为文件流操作与文件的读写
- 计算某个正整数平方根,并按要求输出
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
cout.setf(ios::fixed);
for (int i = 1; i <= 6; i++)
{
cout.precision(i);
cout << sqrt(n) << endl;
}
return 0;
}
- 读取文件,添加行号显示
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
//输入5行信息
char *a[5];
for (int i = 0; i < 5; i++)
{
a[i] = new char[80];
cin.getline(a[i], 80);
}
//生成A.txt
ofstream out("A.txt");
if (!out)
{
cout << "打开文件失败" << endl;
return 1;
}
for (int i = 0; i < 5; i++)
{
out << a[i] << endl;
}
out.close();
//再打开A.txt修改
ofstream outagain("A.txt");
if (!outagain)
{
cout << "打开文件失败" << endl;
return 1;
}
outagain.setf(ios::left);
for (int i = 0; i < 5; i++)
{
outagain.width(4);
outagain << (i + 1) << a[i] << endl;
}
outagain.close();
return 0;
}
- 读写文件并转换字符
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int main()
{
//从键盘输入字符
char a[80], b[80];
cin.getline(a, 80);
//打开文件,将字符写入
ofstream out("a1.txt");
if (!out)
{
cout << "打开文件失败" << endl;
return 1;
}
out << a;
out.close();
//打开文件从文件中读取数据到b
ifstream in("a1.txt");
if (!in)
{
cout << "打开文件失败" << endl;
return 1;
}
in.getline(b, 80);
in.close();
//b转换为大写输出
for (int i = 0; i < sizeof(b); i++)
{
if (b[i] >= 'a'&&b[i] <= 'z')
{
b[i] += 'A' - 'a';
}
}
cout << b;
return 0;
}
- 读文件中的数字,算平均值
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
//输入n个数字
int n;
cin >> n;
double *arr, avg = 0;
arr = new double[n];
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
//打开文件写入这n个数字
ofstream out("out1.txt");
if (!out)
{
cout << "打开文件失败" << endl;
return 1;
}
for (int i = 0; i < n; i++)
{
out << arr[i] << ' ';
}
out.close();
//再打开该文件,读取n个数字,计算平均值
ifstream in("out1.txt");
if (!in)
{
cout << "打开文件失败" << endl;
return 1;
}
double temp;
for (int i = 0; i < n; i++)
{
in >> temp;
avg += temp;
}
avg /= n;
out.close();
cout << "Avg=" << avg << endl;
return 0;
}
- 读文件中的字符并排序输出
#include <iostream>
#include <fstream>
using namespace std;
void sort(char *a, int n)//对字符数组排序
{
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
if (a[i] > a[j])
{
char temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
}
int main()
{
//输入n个字符
int n;
cin >> n;
char *a;
a = new char[n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
//写入A文件中
ofstream out("A.txt");
if (!out)
{
cout << "打开文件失败" << endl;
return 1;
}
for (int i = 0; i < n; i++)
{
out << a[i] << ' ';
}
out.close();
//打开A文件读取数据存在temp中
ifstream in("A.txt");
if (!in)
{
cout << "打开文件失败" << endl;
return 1;
}
char *temp;
temp = new char[n];
for (int i = 0; i < n; i++)
{
in >> temp[i];
}
in.close();
//将temp的数据排序后输出到B
out.open("B.txt");
if (!out)
{
cout << "打开文件失败" << endl;
return 1;
}
sort(temp, n);
for (int i = 0; i < n; i++)
{
out << temp[i]<<' ';
}
out.close();
return 0;
}
注:在网站上提交由于无法检测文件是否正确,提交代码时需要注释掉文件读取的相关操作
以上为第13周的编程作业。