12/26
《程序设计方法(C\C++)》是北京理工大学的一门课程,该课通过北京理工大学网络教室评测的编程练习题计算平时成绩。

这次不涉及什么算法,都是模拟策略。

29 显示时间

注:这道题应该是出错了,时间都是显示成0:00:00这样的形式的,可以在测试数据里竟然有0:0:0这样的答案,导致我多提交了一次。


#include <iostream>
#include <iomanip>
using namespace std;

template<class Tp>
	class typTime {
		private:
			Tp hour,minute,second;
		public:
			typTime() {
				hour=0;
				minute=0;
				second=0;
			}
			typTime(typTime<Tp> &_t) {
				hour=_t.hour;
				minute=_t.minute;
				second=_t.second;
			}
			void settime(Tp _hour,Tp _minute,Tp _second) {
				hour=_hour;
				minute=_minute;
				second=_second;
			}
			void show() {
				cout<<hour<<':'<<setfill('0')/*<<setw(2)*/<<minute<<':'/*<<setw(2)*/<<second<<endl;
			}
	};

int main() {
	int h,m,s;
	cin>>h>>m>>s;
	typTime<int> Time;
	Time.settime(h,m,s);
	Time.show();
	//system("pause");
	return 0;
}

30 求三个数中的量大值

#include <iostream>
#include <iomanip>
using namespace std;

template<class Tp>
	Tp max(Tp _a,Tp _b,Tp _c) {
		Tp _t=_a;
		if (_t<_b)
			_t=_b;
		if (_t<_c)
			_t=_c;
		return _t;
	}

int main() {
	int a,b,c;
	cin>>a>>b>>c;
	cout<<"Maximum:"<<max(a,b,c)/*<<"."*/<<endl;
	//system("pause");
	return 0;
}

31 分解5位整数

注:这道题本来我是写成了边读边输出的形式,结果不知道为什么输出结果反序了,可能是由于"<<"运算是右结合吧。 还有更囧的,就是题上说五位整数,我就真当成了五位整数,结果其实它是低于五位的整数。

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
	int i;
	char c;
	for (i=0;i<5;i++) {
		c=cin.get();
		if (c=='\n')
			break;
		else {
			if (i)
				cout<<" ";
			cout<<(char)c;
		}
	}
	cout<<endl;
	return 0;
}

32 求圆柱体体积

#include <iostream>
#include <iomanip>
#define PI 3.14
using namespace std;

template<class Tp,class Tp2>
	class theStuff{
		private:
			Tp _r,_h;
			Tp2 _s,_v;
		public:
			theStuff(Tp __r,Tp __h){
				set(__r,__h);
			}
			void set(Tp __r,Tp __h) {
				_r=__r;
				_h=__h;
				_s=_r*_r*PI;
				_v=_s*_h;
			}
			Tp volume() {
				return _v;
			}
			Tp Square() {
				return _s;
			}
	};

int main() {
	double r,h;
	cin>>r>>h;
	theStuff<double,double> stuff(r,h);
	cout<<"v="<<stuff.volume()<<endl;
	system("pause");
	return 0;
}

33 设置、输出日期

注:这道题更恶心,输出的日期竟然是1900/1/1/形式的……

#include <iostream>
#include <iomanip>
using namespace std;

template <class Tp>
	class Date{
		private:
			Tp year,month,day;
		public:
			Date(){
				year=1900;
				month=1;
				day=1;
			}
			Date(Tp y,Tp m,Tp d) {
				SetDate(y,m,d);
			}
			void SetDate(Tp y,Tp m,Tp d) {
				year=y;
				month=m;
				day=d;
			}
			Tp GetDay() {
				return day;
			}
			Tp GetMonth() {
				return month;
			}
			Tp GetYear() {
				return year;
			}
			void ShowDate() {
				cout<<year<<"/"<<month<<"/"<<day<<"/"<<endl;
			}
	};

int main() {
	int y,m,d;
	cin>>y>>m>>d;
	Date<int> date(y,m,d);
	date.ShowDate();
	return 0;
}