• 作业2-类与对象(初)


     1 #include <iostream>
     2 #include <string>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <sstream>
     6 #include <cstdlib>
     7 using namespace std;
     8 /*实现一个学生信息处理程序,计算一个学生的四年平均成绩。
     9 
    10 要求实现一个代表学生的类,并且类中所有成员变量都是【私有的】。
    11 
    12 补充下列程序中的 Student 类以实现上述功能。
    13 */ 
    14 //注意是除以4.0 
    15 class Student {
    16 // 在此处补充你的代码
    17     private:
    18         string name;
    19         int age;
    20         int stunum;
    21         int y1,y2,y3,y4;
    22         double avr;
    23     public:
    24         void input(){
    25             //如何处理一个AB CDE,12,13,1234这样的字符串 
    26             getline(cin,name,',');
    27             scanf("%d,%d,%d,%d,%d,%d",&age,&stunum,&y1,&y2,&y3,&y4);
    28         }
    29         void calculate(){
    30             avr = (y1+y2+y3+y4)/4.0;
    31         }
    32         void output(){
    33             cout<<name<<","<<age<<","<<stunum<<","<<avr<<endl;
    34         }
    35 };
    36 
    37 int main() {
    38     Student student;        // 定义类的对象
    39     student.input();        // 输入数据
    40     student.calculate();    // 计算平均成绩
    41     student.output();       // 输出数据
    42 }

    备注:这道题有两个需要注意的地方。一个是double变量运算时要至少有一个变量是double,比如4.0。还有一个就是利用getline可以指定分隔符这个功能来获得包含空格的名字,再利用scanf来获得后面用逗号分隔的数字。

    #include <iostream>
    using namespace std;
    //程序填空,使其输出9 22 5 
    class Sample {
    public:
        int v;
    // 在此处补充你的代码
        Sample(int vv=0){v=vv;}//构造函数,参数可缺省 
        Sample(const Sample &a){ //注意这里需要是常量引用 (只要不会改就都用常量) 
            v = a.v+2;
        }
    };
    void PrintAndDouble(Sample o)
    {
        cout << o.v;
        cout << endl;
    }
    int main()
    {
        Sample a(5);
        Sample b = a; //这里调用了一次复制构造函数 
        PrintAndDouble(b); //这里又调用了一次 
        Sample c = 20; //这里调用了以整型为参数的构造函数 
        PrintAndDouble(c); //调用 
        Sample d;
        d = a;
        cout << d.v;
        return 0;
    }

    备注:这道题充分让我熟悉了构造函数和复制构造函数的使用。要注意Sample b = a调用的是复制构造函数,Sample c = 20调用了以整型为参数的构造函数。还有就是复制构造函数如果不涉及到修改值就加const。

     1 /*下面程序的输出是:
     2 3+4i
     3 5+6i
     4 请补足Complex类的成员函数。不能加成员变量。
     5 */ 
     6 #include <iostream>
     7 #include <cstring>
     8 #include <cstdlib>
     9 using namespace std;
    10 class Complex {
    11 private:
    12     double r,i;
    13 public:
    14     void Print() {
    15         cout << r << "+" << i << "i" << endl;
    16     }
    17 // 在此处补充你的代码
    18     Complex(const char a[]){
    19         r = a[0]-'0';
    20         i = a[2]-'0'; 
    21     } 
    22     Complex(){}//重载 
    23 };
    24 int main() {
    25     Complex a;
    26     a = "3+4i"; a.Print();
    27     a = "5+6i"; a.Print();
    28     return 0;
    29 }

    备注:这道题就是一个简单的构造函数的重载。要注意的就是如果自己写了一个有参的构造函数,但主函数里还有要用到无参构造函数的地方,要自己再补写一个无参构造函数。

  • 相关阅读:
    SMR磁盘学习1
    练笔-字符串,向量和数组6
    练笔-字符串,向量和数组5
    练笔-字符串,向量和数组4
    练笔-字符串,向量和数组3
    练笔--字符串,向量和数组2
    Redis系列-存储篇hash主要操作函数小结
    Redis系列-存储篇string主要操作函数小结
    Redis系列-远程连接redis并给redis加锁
    Pjax的使用
  • 原文地址:https://www.cnblogs.com/fangziyuan/p/12397443.html
Copyright © 2020-2023  润新知