作业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 }
备注:这道题就是一个简单的构造函数的重载。要注意的就是如果自己写了一个有参的构造函数,但主函数里还有要用到无参构造函数的地方,要自己再补写一个无参构造函数。