程序設計實習MOOC / 程序設計與算法(三)第二周測驗


6. 學生信息處理程序

 

總時間限制: 1000ms 內存限制: 1024kB
描述
實現一個學生信息處理程序,計算一個學生的四年平均成績。

要求實現一個代表學生的類,並且類中所有成員變量都是【私有的】。

補充下列程序中的 Student 類以實現上述功能。

#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <cstdlib>
using namespace std;

class Student {
// 在此處補充你的代碼
};

int main() {
	Student student;        // 定義類的對象
	student.input();        // 輸入數據
	student.calculate();    // 計算平均成績
	student.output();       // 輸出數據
}
輸入
輸入數據為一行,包括:
姓名,年齡,學號,第一學年平均成績,第二學年平均成績,第三學年平均成績,第四學年平均成績。
其中姓名為由字母和空格組成的字符串(輸入保證姓名不超過20個字符,並且空格不會出現在字符串兩端),年齡、學號和學年平均成績均為非負整數。信息之間用逗號隔開。
輸出
輸出一行數據,包括:
姓名,年齡,學號,四年平均成績。
信息之間用逗號隔開。
樣例輸入
Tom Hanks,18,7817,80,80,90,70
樣例輸出
Tom Hanks,18,7817,80
提示
必須用類實現,其中所有成員變量都是私有的。
輸出結果中,四年平均成績不一定為整數。

  完整代碼:

#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <cstdlib>
using namespace std;
class Student {
private:
    char name[20];
    int id,age;
    float a,b,c,d;
    char ch;
public:
    void input()
    {
        cin.get(name, 21, ',');  //看補充 
        cin>>ch>>age>>ch>>id>>ch>>a>>ch>>b>>ch>>c>>ch>>d;
    };
    float calculate()
    {
        float sum=a+b+c+d;
        return sum/4;
    };
    bool t()
    {
        float sum=(a+b+c+d)/4;
        int a=sum;
        if (a==sum)
            return true;
        else 
            return false;
    }
    void output()
    {
        float mid=calculate();
        cout<<name<<","<<age<<","<<id<<",";
        if (t()==false)
        {
            printf("%.1f",mid);//沒有給iomanip頭文件,只能選擇C語言輸出 
        }
        else
            printf("%.0f",mid);
    }
};

int main() {
    Student student;        // 定義類的對象
    student.input();        // 輸入數據
    student.calculate();    // 計算平均成績
    student.output();       // 輸出數據
}

7.奇怪的類復制

描述
程序填空,使其輸出9 22 5

#include <iostream>
using namespace std;
class Sample {
public:
	int v;
// 在此處補充你的代碼
};
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;
}
輸入
無
輸出
9
22
5
樣例輸入
None
樣例輸出
9
22
5

  完整代碼:

#include <iostream>
using namespace std;
class Sample {
public:
    int v;
    Sample(int n=0)
    {
        v=n;
    }
    Sample(const Sample &x)
    {
        v=x.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;
}

8.超簡單的復數類

描述
下面程序的輸出是:

3+4i 
5+6i

請補足Complex類的成員函數。不能加成員變量。

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class Complex {
private:
    double r,i;
public:
    void Print() {
        cout << r << "+" << i << "i" << endl;
    }
// 在此處補充你的代碼
};
int main() {
    Complex a;
    a = "3+4i"; a.Print();
    a = "5+6i"; a.Print();
    return 0;
}
輸入
無
輸出
3+4i
5+6i
樣例輸入
無
樣例輸出
3+4i
5+6i

  完整代碼:

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class Complex
{
private:
    double r,i;
public:
    void Print()
    {
        cout << r << "+" << i << "i" << endl;
    }
    Complex() {};
    Complex(char x[])
    {
        r=x[0]-'0';
        i=x[2]-'0';
    }
};
int main()
{
    Complex a;
    a = "3+4i";
    a.Print();
    a = "5+6i";
    a.Print();
    return 0;
}

9.哪來的輸出

描述
程序填空,輸出指定結果 

#include <iostream>
using namespace std;
class A {
	public:
		int i;
		A(int x) { i = x; }
// 在此處補充你的代碼
};
int main()
{
	A a(1);
	A * pa = new A(2);
	delete pa;
	return 0;
}
輸入
無
輸出
2
1
樣例輸入
無
樣例輸出
2
1

  完整代碼:

#include <iostream>
using namespace std;
class A
{
public:
    int i;
    A(int x)
    {
        i = x;
    }
    ~A()
    {
        cout<<i<<endl;
    }
};
int main()
{
    A a(1);
    A * pa = new A(2);
    delete pa;
    return 0;
}

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM