题目:
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;
 }
  




















