【C++】第八章 输入输出流
实践题1
【问题描述】
编程序,对 k=1,2,3,…,14,15,按下式分别计算出 15 组(i,d,c):整数 i=2k-1;实数 d=kk+k-9.8;字符 c=’H’+k。并通过使用运算符“<<”将这15组数据保存到当前目录下自定义的text型磁盘文件ft.txt之中。
【输入形式】
无
【输出形式】
文件内容要求:每组占一行,每行中的输出项用一个空格进行分割。
【样例输入】
无
【样例输出】
文件内容格式如下:
1 -7.8 I
3 -3.8 J
5 2.2 K
7 10.2 L
….以下省略….
【题解】1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using namespace std;
int main()
{
ofstream f("ft.txt");
int i;
double d;
char c;
int k=0;
for(k=1;k<16;k++)
{
i=2*k-1;
d=k*k+k-9.8;
c='H'+k;
f<<i<<" "<<d<<" "<<c<<endl;
}
}
实践题2
【问题描述】
通过使用运算符“>>”和“<<”,对自定义的text型磁盘文件进行如下的指定操作。
(1)对i=1,2,3,…,15,计算d=i*i+0.5,并将15个结果写出到自定义的text型磁盘文件f1.txt中(注意,f1文件中的数据从小到大有序);
(2)对i=1,2,3,…,10,计算d=10*i+0.5,并将10个结果写出到自定义的text型磁盘文件f2.txt中,而后再写出第11个数:357.9(注意,f2文件中的数据也从小到大有序);
(3)读出文件f1.txt以及f2.txt中的数据,用来形成text型磁盘文件f3.txt,但要求存放于f3.txt中的数据仍然是有序的(按照从小到大的顺序);
【输入形式】
无
【输出形式】
输出到f3.txt文件中(一行,数据间间隔为一个空格)
【样例输入】
无
【样例输出】
1.5 4.5 9.5 10.5 16.5…(以下略)
【题解】1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using namespace std;
void sort(double*);
int main()
{
int i,j;
double temp=0;
double a[26],d=0;
ofstream f("f1.txt");
for(i=1;i<16;i++)
{
d=i*i+0.5;
a[i-1]=d;
}
for(i=0;i<14;i++)
{
for(j=0;j<14-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<15;i++)
{
f<<a[i]<<" ";
}
f.close();
f.open("f2.txt");
for(i=1;i<11;i++)
{
d=10*i+0.5;
f<<d<<" ";
a[i+14]=d;
}
a[25]=357.9;
f<<a[25];
f.close();
sort(a);
}
void sort(double *m)
{
int i,j;
double temp=0;
for(i=0;i<25;i++)
{
for(j=0;j<25-i;j++)
{
if(m[j]>m[j+1])
{
temp=m[j];
m[j]=m[j+1];
m[j+1]=temp;
}
}
}
ofstream file;
file.open("f3.txt");
for(i=0;i<26;i++)
{
file<<m[i]<<" ";
}
file.close();
}
实践题3
【问题描述】
使用 getline 成员函数读入某个text文件(f5.txt)中的“一篇文章”(如可以是一个C++源程序,文件名由用户从键盘输入),而后将该文件的各空行以及各程序行中的注解均删除掉(认为该行中从第一个双撇符号“//”开始直至行末的所有符号为注解),并将删除注解后的结果行写出到另一个文件(f6.txt)中。
【输入形式】
逐行读入文件f5.txt的内容。
【输出形式】
【样例输入】
文件f5.txt的内容如下:
//This is test
#include <iostream>
int main()
{
cout<<"Hello World"<<endl;
return 0;
}
【样例输出】
文件f6.txt的内容如下:
#include <iostream>
int main()
{
cout<<"Hello World"<<endl;
return 0;
}
【题解】1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using namespace std;
int main()
{
int i;
ifstream f("f5.txt");
ofstream t("f6.txt");
char str[100];
while(f.getline(str,100))
{
if(str[0]=='/'||str[0]=='\0')
continue;
for(i=0;str[i];i++)
{
if(str[i]=='/')
str[i]='\0';
}
t<<str;
t<<endl;
}
f.close();
t.close();
}