2005年北理复试上机题

2、编写一个日期类,要求按 xxxx-xx-xx 的格式输出日期,实现加一天的操作,不考虑闰年问题,所有月份设为 30 天。本题黑盒测试时,输入 2004 年 3 月 20日,得到加一天后时间为 2004-3-21 ,能得一部分分数。输入 2004 年 3 月 30 日,得到加一天后时间为2004-4-1,能得一部分分数。输入 2004 年 12 月 30日,得到加一天后时间为 2005-1-1 ,且有时间越界处理,能得全部分数。本题满分 30。

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

int main()
{
	int year,month,day;
	while(1)
	{
		scanf("%d-%d-%d",&year,&month,&day);
		if(year==0)
			break;
		if(year<0 || month<0||day<0 ||day>30 ||month>12)
		{
			printf("输入有误,请重新输入\n");
			continue;
		}
		day++;
		if(day>30)
		{
			day=1;
			month++;
		}
		if(month>12)
		{
			month=1;
			year++;
		}
		printf("%d-%d-%d",year,month,day);
	}
	return 0;

}


3.编写一个复数类,要求有 4 条。一是有构造函数能对复数初始化。二是对复数 c1 ,c2 ,c3..... 能实现连加运算,令c=c1+c2+c3+..... 此处可以重载加法操作符。三是有函数实现两个复数相加,并按照 a+ib的形式输出。四是能实现对一个复数 c=a+ib,定义 double x=c 有效,使 x 的值为实部和虚部之和。本题满分 50。

#include <iostream>
#include <cstdio>

using namespace std;
class CFushu
{
public:		
	double shi;
	double xu;

	CFushu()
	{

	}
	CFushu(double s,double x):shi(s),xu(x)
	{

	}
	CFushu operator +(CFushu b)
	{
		CFushu c;
		c.shi=shi+b.shi;
		c.xu=xu+b.xu;
//		shi+=b.shi;
//		xu+=b.xu;
		return c;
	}
	double Getx()
	{
		return xu+shi;
	}
	void Print()
	{
		if(shi!=0)
			printf("%g+",shi);
		if(xu!=0 )
		{
			printf("i*");
			if(xu<0)
				printf("(");
			printf("%g",xu);
			if(xu<0)
				printf(")");
			printf("\n");
		}

	}
};
void Add(CFushu a,CFushu b)
{
	CFushu c;
	c=a+b;
	c.Print();
}
int main()
{
	float s,x;
	printf("请输入c1的实部和虚部\n");
	scanf("%f%f",&s,&x);
	CFushu c1(s,x);
	printf("请输入c2的实部和虚部\n");
	scanf("%f%f",&s,&x);
	CFushu c2(s,x);
	printf("请输入c3的实部和虚部\n");
	scanf("%f%f",&s,&x);
	CFushu c3(s,x);
	printf("请输入c4的实部和虚部\n");
	scanf("%f%f",&s,&x);
	CFushu c4(s,x);
	CFushu c5=c1+c2+c3+c4;
	printf("c5的值为:  ");
	c5.Print();
	printf("c1+c2为:");
	Add(c1,c2);
	printf("c3的x值为:%g\n",c3.Getx());


	return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值