1.學生成績類2
【問題描述】定義學生成績類Score辆苔,其私有數(shù)據(jù)成員有學號算灸、姓名、物理驻啤、數(shù)學菲驴、外語、平均成績骑冗。補全Score類及主函數(shù)赊瞬,使得程序能在一行中一次輸出該生的學號、姓名贼涩、物理巧涧、數(shù)學、外語遥倦、平均成績谤绳。
【輸入形式】
輸入學生的學號、姓名袒哥、物理缩筛、數(shù)學、外語堡称。
(學號為不超過10位的數(shù)字瞎抛;姓名為長度不超過10位的英文;物理數(shù)學外語成績?yōu)?-100的整數(shù))
【輸出形式】
輸出學生的學號粮呢、姓名婿失、物理、數(shù)學啄寡、外語以及平均成績豪硅。
【樣例輸入】
081531 WangXiaoming 100 82 99
【樣例輸出】
081531 WangXiaoming 100 82 99 93.67
【樣例說明】平均成績保留到小數(shù)后兩位。
【評分標準】
#include <iostream>
#include <string>
#include <cstdio>
#include <iomanip>
using namespace std;
class Score
{
private:
string Id, Name;
int Phy, Math, Eng;
double Ave;
public:
Score(string id, string name, int phy, int math, int eng):Id(id),Name(name),Phy(phy),Math(math),Eng(eng)
{}
friend void Average(int Phy,int Math,int Eng)
{
Ave=0;
Ave=(double)(Phy+Math+Eng)/3;
}
void Print()
{
cout<<Id<<' '<<Name<<' '<<Phy<<' '<<Math<<' '<<Eng<<' ';
cout<<fixed<<setprecision(2)<<Ave;
}
};
int main()
{
string id, name;
int phy, math, eng;
cin >> id >> name >> phy >> math >> eng;
Score sco(id,name,phy,math,eng);
void Score::Average(phy,math,eng);
sco.Print();
}
2.電視類
【問題描述】補全設(shè)計一個TV類和一個Remote類挺物。Remote類的成員函數(shù)是TV類的友元懒浮, 電視類有狀態(tài)、頻道和音量基本屬性识藤,默認初始頻道為5砚著,默認初始音量為20。狀態(tài)有開和關(guān)(-1表示關(guān)機狀態(tài)痴昧,其他為開機狀態(tài))稽穆。
在主函數(shù)根據(jù)輸入的op值進行不同操作。補全代碼使程序滿足如下要求赶撰。
【輸入形式】
當op==1時舌镶,
輸入電視操作命令如下:
OFF_ON(切換電視開關(guān)機狀態(tài))
VOL_UP(電視音量+1)
VOL_DOWN(電視音量-1)
CHA_NEXT(電視頻道+1)
CHA_PRE(電視頻道-1)
CHA_TO x(0<=x<=100柱彻,將電視頻道切到x)
VOL_TO x(0<=x<=100,將電視音量切到x)
其中CHA_TO與VOL_TO通過調(diào)用友元類實現(xiàn)餐胀。
當op==2時哟楷,輸出當前電視狀態(tài)。
當op==3時否灾,結(jié)束程序卖擅。
【輸出形式】
當op==2時,輸出當前電視狀態(tài)墨技,具體格式見樣例惩阶。
【樣例輸入】 【對應(yīng)樣例輸出】
2 The TV is OFF
1 OFF_ON
2 The TV is ON
The channel is 5
The volume is 20
1 VOL_UP
2 The TV is ON
The channel is 5
The volume is 21
1 CHA_TO 30
2 The TV is ON
The channel is 30
The volume is 21
1 VOL_TO 30
2 The TV is ON
The channel is 30
The volume is 30
3
注意輸入后會有相應(yīng)的輸出。但在測試用例中健提,輸入數(shù)據(jù)放在一起琳猫,輸出會集中體現(xiàn)。
#include <iostream>
using namespace std;// 前向聲明
class TV;
class Remote // Remote類聲明(其中的幾個函數(shù)為友元)
{
public:
Remote() {};
void volume_to(TV &tv, int x);
void channel_to(TV &tv, int x);
};
class TV//TV 類聲明
{
private:
int state;
int channel;
int volume;
public:
// 聲明友元函數(shù)
friend void Remote::volume_to(TV &tv, int x);
friend void Remote::channel_to(TV &tv, int x);
// 成員函數(shù)
TV() {};
TV(int st) :channel(5),volume(20),state(st){}
void onoff()
{
if(state==-1)
{
state=0;
}
else
{
state=-1;
}
}
void cha_next()
{
channel++;
}
void cha_pre()
{
channel--;
}
void vol_up()
{
volume++;
}
void vol_down()
{
volume--;
}
void print()
{
if(state == -1)
{
cout<<"The TV is OFF"<<endl;
}
else
{
cout<<"The TV is ON"<<endl;
cout<<"The channel is "<<channel<<endl;
cout<<"The volume is "<<volume<<endl;
}
}
};
// 友元函數(shù)定義
void Remote::volume_to(TV &tv, int x)
{
tv.volume = x;
}
void Remote::channel_to(TV &tv, int x)
{
tv.channel = x;
}
int main()
{
int x, op;
string s;
TV tv(-1);
Remote rem;
while(1)
{
cin >> op;
if(op == 1)
{
cin >> s;
if(s == "OFF_ON") tv.onoff();
else if(s == "VOL_UP") tv.vol_up();
else if(s == "VOL_DOWN") tv.vol_down();
else if(s == "CHA_NEXT") tv.cha_next();
else if(s == "CHA_PRE") tv.cha_pre();
else if(s == "CHA_TO")
{
cin >> x;
rem.channel_to(tv, x);
}
else if(s == "VOL_TO")
{
cin >> x;
rem.volume_to(tv, x);
}
}
else if(op == 2)
{
tv.print();
}
else
{
break;
}
}
return 0;
}