题目:
1、编写程序,输入a,b,c,检查a,b,c是否满足以下条件,如不满足,由cerr输出有关错误信息。
2、从键盘输入一批数值。要求保留3位小数,在输出时上下行小数点对齐
1.用控制符控制输出格式。
2.用流成员函数控制输出格式。
3、建立两个磁盘文件f1.dat和f2.dat。编程序实现以下工作:
1.从键盘输入20个整数。分别存放在两个磁盘文件中(每个文件中放10个整数)。
2.从f1.dat中读入10个数,然后存放到f2.dat文件原有数据的后面。
3.从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)。
参考代码:
1、
#include<cmath>
#include<iostream>
using namespace std;
int main(){
int a, b, c;
int s, area;
cout<<"输入a , b , c"<<endl;
cin >> a >> b >> c;
if( a+b > c && a+c > b && b+c > a){
s=(a+b+c)/2;
area = sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"面积"<<area<<endl;
}
else
cerr<<"不是三角形"<<endl;
return 0;
}
2、
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
double a [5];
cout<<"输入5个浮点数"<<endl;
for(int i=0; i<5; i++)
cin>>a[i];
cout<<setiosflags(ios::fixed)<<setprecision(3);
for(int j=0; j<5; j++){
cout<<setw(10)<<a[j]<<endl;
}
return 0;
}
3、
#include <iostream>
#include <fstream>
using namespace std;
//fun1函数从键盘输入20个整数,分别存放在两个磁盘文件中
void fun1()
{
int a[10];
int i;
ofstream outfile1("f1.dat"), outfile2("f2.dat"); //分别定义两个文件流对象
if (!outfile1) //检查打开f1.dat是否成功
{
cerr << "open f1.dat error!" << endl;
exit(1);
}
if (!outfile2) //检查打开f2.dat是否成功
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
cout << "输入10个数存到f1:" << endl;
for (i = 0; i < 10; i++) //输入10个数存放到f1.dat文件中
{
cin >> a[i];
outfile1 << a[i] << " ";
}
cout << "输入10个数存到f2:" << endl;
for (i = 0; i < 10; i++) //输入10个数存放到f2.dat文件中
{
cin >> a[i];
outfile2 << a[i] << " ";
}
outfile1.close(); //关闭f1.dat文件
outfile2.close(); //关闭f2.dat文件
}
//从f1,dat读入10个数,然后存放到f2.dat文件原有数据的后面
void fun2()
{
ifstream infile("f1.dat"); //f1.dat作为输入文件
if (!infile)
{
cerr << "open f1.dat error!" << endl;
exit(1);
}
ofstream outfile("f2.dat", ios::app);/*ios::app 追加模式打开文件夹, 以ios::app打开,如果没有文件,那么生成空文件;如果有文件,那么在文件尾追加*/
//f2.dat作为输出文件,文件指针指向文件尾,向它写入的数据放在原来数据的后面
if (!outfile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
int a;
for (int i = 0; i < 10; i++)
{
infile >> a; //磁盘文件f2.dat读入一个整数
outfile << a << " "; //将该数存放到f2.dat中
}
infile.close();
outfile.close();
}
//从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat
void fun3()
{
ifstream infile("f2.dat"); //定义输入文件流infile,以输入方式打开f2.dat
if (!infile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
int a[20];
int i, j, t;
for (i = 0; i < 20; i++)
infile >> a[i]; //从磁盘文件f2.dat读入20个数放在数组a中
for (i = 0; i < 19; i++) //用起泡法对20个数排序
for (j = 0; j < 19 - i; j++)
if (a[j] > a[j + 1])
{
t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
}
infile.close(); //关闭输入文件f2.dat
ofstream outfile("f2.dat", ios::out);/*或ofstream outfile("f2.dat");*/
// f2.dat作为输出文件,文件中原有内容删除
if (!outfile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
cout << "f2.dat:" << endl;
for (i = 0; i < 20; i++)
{
outfile << a[i] << " "; //向f2.dat输出已排序的20个数
cout << a[i] << " ";
} //同时输出到显示器
cout << endl;
outfile.close();
}
int main()
{
fun1(); //分别调用3个函数
fun2();
fun3();
return 0;
}