zoukankan      html  css  js  c++  java
  • 2010年 浙工大考研计算机专业课试题C++

    2010年 浙工大考研计算机专业课试题C++

    个人闲暇之余整理,可能会有许多细节问题且题目实现代码不唯一,若有需要可邮件与我交流。

    一,读程序写结果   5*9=45分

    // kaoshi.cpp : 定义控制台应用程序的入口点。

    //2010-1-1

    #include "stdafx.h"

    #include <iostream>

    using namespace std;

    class Sample

    {

           inti;

           doubled;

    public:

           voidsetdata(int n){i=n;}

           voidsetdata(double x){d=x;}

           voiddisp(){    cout<<i<<endl;cout<<d;cout<<endl;}

          

    };

    void main()

    {

           Samples;

           s.setdata(10);

           s.setdata(15.6);

           s.disp();

    }

    结果:

    10

    15.6

    // kaoshi.cpp : 定义控制台应用程序的入口点。

    //2010-1-2

    #include "stdafx.h"

    #include <iostream>

    using namespace std;

    int i=0;

    int x=0;

    class Sample

    {

          

    public:

           Sample(){}

           Sample(inta ){x=a;}

           Sample(Sample&a){i++;}

           voiddisp(){cout<<++i;}

          

    };

    void fun(Sample &s1,Sample &s2)

    {

           s1.disp();s2.disp();

           return;

    }

    Sample fun(Sample s)

    {

           s.disp();

           returns;

    }

    void main()

    {

           Samples1(2),s2=s1;

           fun(s1,s2);

           s1.disp();

           s2.disp();

    }

    结果;

    2345

    // kaoshi.cpp : 定义控制台应用程序的入口点。

    //2010-1-3

    #include "stdafx.h"

    #include <iostream>

    using namespace std;

    class CMyExcept

    {

           voidwriteout()

           {

                  cout<<"XXX\n";

           }

    };

    class CExcept0 : public CMyExcept

    {     public:

           voidwriteout()

           {

                  cout<<"AAA\n";

           }

    };

    class CExcept1 : public CExcept0

    {     public:

           voidwriteout()

           {

                  cout<<"BBB\n";

           }

    };

    class CExcept2 : public CExcept1

    {     public:

           voidwriteout()

           {

                  cout<<"CCC\n";

           }

    };

    void main()

    {

           charch;

           try{

                  cin>>ch;

                  switch(ch){

                         case'0':throwCExcept0();

                         case'1':throwCExcept1();

                         case'2':throwCExcept2();

                  }

           }

           catch(CExcept0)

           {

                  cout<<'A'<<endl;

                  CExcept0 a;

                  a.writeout();

           }

           catch(CExcept1)

           {

                  cout<<'B'<<endl;

                  CExcept1b;

                  b.writeout();

           }

           catch(CExcept2)

           {

                  cout<<'C'<<endl;

                  CExcept2 c;

                  c.writeout();

           }

    }

    结果:

    2

    A

    AAA

    // kaoshi.cpp : 定义控制台应用程序的入口点。

    //2010-1-4

    #include "stdafx.h"

    #include <iostream>

    using namespace std;

    void func();

    int n=1;

    void main()

    {

           staticint a;

           intb=-10;

           printf("a=%d,b=%d,n=%d",a,b,n);

           b+=4;

           func();

           printf("a=%d,b=%d,n=%d",a,b,n);

           n+=10;

           func();

    }

    void func()

    {

           staticint a=2;

           intb=5;

           a+=2;

           b+=5;

           n+=12;

           printf("a=%d,b=%d,n=%d\n",a,b,n);

    }

    结果:

    a=0,b=-10,n=1a=4,b=10,n=13

    a=0,b=-6,n=13a=6,b=10,n=35

    // kaoshi.cpp : 定义控制台应用程序的入口点。

    //2010-1-5

    #include "stdafx.h"

    #include <iostream>

    using namespace std;

    class Sample

    {

    public:

           Sample(){cout<<(x=2);};

           Sample(inti,int j){cout<<(x=i+j);};

           ~Sample(){cout<<++x;};

    private:

           intx;

    };

    void main()

    {

           Sample*p1=new Sample[3];

           delete[]p1;

    }

    结果:

    222333

    二,修改程序的错误   5*6=30分

    // kaoshi.cpp : Defines the entry point forthe console application.

    //2010-2-1

    #include <iostream.h>

    void main()

    {

           intx=5,y=6;

           int*p=&x;  //const int *p=&x;

           *p=y;

           cout<<*p<<endl;

    }

    结果:

    6

    // kaoshi.cpp : Defines the entry point forthe console application.

    //2010-2-2

    #include <stdio.h>

    int main()

    {

           floatx,max,min;int i;

           for(i=1;i<=3;i++)

           {

                  scanf("%f",&x);

           }

           if(i=1)            {max=x;min=x;}

           if(x>max)       max=x;

           if(x<min)       min=x;

           printf("%f,%f\n",max,min);

           return0;

    }

    修改:

           for(i=1;i<=3;i++)

           {

                  scanf("%f",&x);

                  if(i==1)          {max=x;min=x;}

                  if(x>max)       max=x;

                  if(x<min)       min=x;

           }

    // kaoshi.cpp : Defines the entry point forthe console application.

    //2010-2-3

    #include <iostream.h>

    class f

    {

    private:

           intx,y;  //int x=0,y=0;

    public:

           voidf1(int a,int b){x=a;y=b;}

           voidget(){cout<<x<<y<<endl;}

    };

    void main()

    {

           fa;

           a.f1(1,3);

           a.get();

    }

    结果

    13

    // kaoshi.cpp : Defines the entry point forthe console application.

    //2010-2-4

    #include <iostream.h>

    class f

    {

    public: //private:

           doublex,y;

    public:

           voidf1(double a,double b){x=a,y=b;}

           doublemax(){return(x>y)?x:y;}

    };

    void main()

    {

           fa;

           a.f1(1.5,3.8);

           cout<<a.x<<a.y<<a.max()<<endl;

    }

    结果

    1.53.83.8

    // kaoshi.cpp : Defines the entry point forthe console application.

    //2010-2-5

    #include <iostream.h>

    #include <stdio.h>  //null

    #define n 3 //null

    void print_a(int c[n])

    {

           inti=0;  //注释掉不要此句

           for(inti=0;i<n;i++)

           {

                  printf("c[%d]=%d\n",i,c[i]);

                  //printf("c[%d]=%d\n",i,c);

           }

    }

          

    int main()

    {

           inta[3]={1,2,3};

           print_a(a);//print_a(a[3]);

    }

    结果:

    c[0]=1

    c[1]=2

    c[2]=3

    三,编程题:  75分

    1  30分

    建立两个磁盘文件f1.dat和f2.dat,试编程序实现以下工作:

    a)从键盘键入20个不同的整数,奇数放入f1.dat,偶数放入f2.dat;

    b)分别读入f1.dat和f2.dat中的奇数,对这20个整数按递增方式排序后,依次写入f1.dat中,实现f1.dat中的数据的更新。

    #include <fstream>

    #include <iostream>

    using namespace std;

    void save_to_file( )// save_to_file函数从键盘读入一行字符,并将其中的字母存入磁盘文件

    {

    ofstreamoutfile1("f1.dat"); //定义输出文件流对象outfile,以输出方式打开磁盘文件f1.dat

           ofstreamoutfile2("f2.dat"); //定义输出文件流对象outfile,以输出方式打开磁盘文件f2.dat

           if(!outfile1)

        {

                         cerr<<"openf1.dat error!"<<endl;

                         exit(1);

        }

           if(!outfile2)

        {

                         cerr<<"openf2.dat error!"<<endl;

                         exit(1);

        }

           charc[80];

           cout<<"请任意输入一些数字:";

           cin.getline(c,80);        //从键盘读入一行字符

           cout<<"您刚才输入的数字是:";

           for(inti=0;c[i]!=0;i++)      //对字符逐个处理,直到遇′/0′为止

           if(c[i]>=49&& c[i]<=58) //如果是数字字符

           {

                  if(c[i]%2==0)

                  {

                         outfile2.put(c[i]);  //将偶数存入磁盘文件f2.dat

                         cout<<c[i];

                  }

                  else

                  {

                         outfile1.put(c[i]);  //将奇数存入磁盘文件f2.dat

                         cout<<c[i];

                  }

          

           }                      //同时送显示器显示

           cout<<endl;

           outfile1.close();         //关闭f1.dat

           outfile2.close();        //关闭f2.dat

     }

    void get_from_file()//从f1.dat,f2.dat读入所有数字,按递增排序后,再存入f1.dat .

    {

           charch,m=0,c[80];

           ifstreaminfile_f1("f1.dat",ios::in);

           ifstreaminfile_f2("f2.dat",ios::in); //定义输入文件流infile,以输入方式打开磁盘文件f1.dat,f2.dat

           ofstreamoutfile_f3; outfile_f3.open("f3.dat",ios::app);//定义输出文件流outfile,以追加输出方式打开磁盘文件f3.dat

           ifstreaminfile_f3("f3.dat",ios::in);

           if(!infile_f1)

           {

                  cerr<<"openf1.dat error!"<<endl;

             exit(1);

           }

           if(!infile_f2)

           {

                  cerr<<"openf2.dat error!"<<endl;

             exit(1);

           }    

           if(!infile_f3)

           {

                  cerr<<"openf3.dat error!"<<endl;

             exit(1);

           }

           if(!outfile_f3)

           {

                  cerr<<"openf3.dat error!"<<endl;

           exit(1);

           }

            cout<<"奇数:";

           while(infile_f1.get(ch))      //当读取字符成功时执行下面的复合语句

      {                     

                  outfile_f3.put(ch);     //将奇数存入磁盘文件f3.dat

                   cout<<ch;        //同时在显示器输出

      }

           cout<<endl;

           infile_f1.close();  //关闭磁盘文件f1.dat

           cout<<"偶数:";

           while(infile_f2.get(ch))  //当读取字符成功时执行下面的复合语句

       {

                  outfile_f3.put(ch);  //将偶数存入磁盘文件f3.dat

                   cout<<ch;    //同时在显示器输出

      }

           cout<<endl;

           infile_f2.close();   //关闭磁盘文件f2.dat

           outfile_f3.close();   //关闭磁盘文件f3.dat

           while(infile_f3.get(ch))//当读取字符成功时执行下面的复合语句

           {      

                  c[m]=ch;

                  m++;

           }

           infile_f3.close();   //关闭磁盘文件f3.dat

           ofstreamoutfile_f1("f1.dat");

           if(!outfile_f1)

           {

                  cerr<<"openf1.dat error!"<<endl;

           exit(1);

           }

           inti,j,d;

           for(i=0;i<m;i++)

           {

                  for(j= i + 1;j<m;j++)

                         if(c[i]>c[j])

                         {

                                d=c[i];c[i]=c[j];c[j]=d;

                         }

           }

           cout<<"将数组递增排序后:"<<endl;

           for(i=0;i<m;i++)

           {

                  cout<<c[i];

                  outfile_f1.put(c[i]);  //将排序数存入磁盘文件f1.dat

           }                    

           cout<<endl;

           outfile_f1.close();//关闭磁盘文件f1.dat

    }

    int main( )

     {

           save_to_file();    //调用save_to_file( ),从键盘读入一行数字并将其中的奇数放入磁盘文件f1.dat,偶数存入磁盘文件f2.dat

           get_from_file();    //调用get_from_file(),从f1.dat,f2.dat读入所有数字,按递增排序后,再存入f1.dat .

           return0;

     }

    2  45分

    声明和实现一个时间类time24:

    a)实现获得和设置由时,分组成的24小时制时间的方法;

    b)编写程序实现“+”运算,即实现time24对象与整型分钟数相加的运算,要求该运算返回一个time24对象;

    c)实现time24类的等价运算符重载,即比较两个time24对象是否相等;

    d)实现输入和输出重载。

    要求该类具有构造函数,并适当使用友元函数和运算符重载方法。

    #include <iostream>

    class time24

    {

    public:

           time24()

        :_hour(0), _min(0)

    {

    }

           time24(inthour, int min)

        :_hour(0), _min(0)

    {

       set(hour, min);

    }

           ~time24()

    {

    }

           voidset(int hour, int min)

    {

       _hour = hour;

       _min  = min;

    }

           voidadd_min(int min)

    {

       int dh = (_min + min) / 60;

       _hour = (_hour + dh) % 24;

       _min  = (_min + min) % 60;

    }

           inthour() const

    {

       return _hour;

    }

           intmin() const

    {

       return _min;

    }

    private:

       int    _hour;

       int    _min;

       friend bool operator==(time24 const&, time24 const&);

    };

           time24&operator+(time24& t, int min)

    {

       t.add_min(min);

       return t;

    }

           time24&operator+(int min, time24& t)

    {

       return operator+(t, min);

    }

           booloperator==(time24 const& lhs, time24 const& rhs)

    {

       return lhs._hour == rhs._hour

           && lhs._min == rhs._min;

    }

           std::ostream&operator<<(std::ostream& os, time24 const& t)

    {

       os << t.hour() << ":" << t.min();

       return os;

    }

           std::istream&operator>>(std::istream& is, time24& t)

    {

       char c;

       int h, m;

       is >> h >> c >> m;

       t.set( h, m );

       return is;

    }

    int main()

    {

         time24 a, b;

     //使用重载的>>输入时间,格式为:  小时:分钟

            std::cout << "请输入时间a(格式:23:59): ";

         std::cin >> a;

    std::cout << "请输入时间b(格式:23:59): ";

         std::cin  >> b;

    //使用重载<<输出a,b两个时间值

         std::cout << "您输入的时间 a 是: " << a <<std::endl;

         std::cout << "您输入的时间 b 是: " << b <<std::endl; //使用operator==判断输入的两个时间是否相等

           if( a == b )

    std::cout << "时间 a 等于 时间 b " << std::endl;

           else

    std::cout << "时间 a 不等于 时间 b " << std::endl;

      //输入一个整形值,用于测试对时间的加运算符

           int addMin;

    std::cout << std::endl <<"请输入一个分钟数:";

           std::cin >> addMin;

           a = a + addMin;

           b = b + addMin;

           std::cout << "时间a: "  << " +" << addMin << " 分钟 = " << a << std::endl;

           std::cout << "时间b: "  << " +" << addMin << " 分钟 = " << b << std::endl;

       return 0;

    }


    undoner

    ( )-


  • 相关阅读:
    MySQL锁总结
    DDL和DML
    字节、字、位、比特之间的关系
    Mysql数据库、表设计规范指南
    Mysql性能优化关键配置指南
    3.python正则匹配不到内容时消耗大量内存
    1. postman使用
    2. python提示:TypeError: unhashable type: 'list'
    14. selenium的Page Object模型
    12.unittest的学习
  • 原文地址:https://www.cnblogs.com/wuyida/p/6301036.html
Copyright © 2011-2022 走看看