C++习题 自定义数据类型

1.定义一个结构体(包括年月日),如数年月日,输出该日在本年中是第一天,注意闰年问题

#include <iostream>
using namespace std;
struct Date {
	int year;
	int month;
	int day;
};
int main()
{
	Date date;
	int days;
	cout << "input year,month,day:";
	cin >> date.year >> date.month >> date.day;
	switch (date.month)
	{
	case 1:days = date.day;break;
	case 2:days = date.day + 31; break;
	case 3:days = date.day + 59;break;
	case 4:days = date.day + 90;break;
	case 5:days = date.day + 120;break;
	case 6:days = date.day + 151;break;
	case 7:days = date.day + 181;break;
	case 8:days = date.day + 212;break;
	case 9:days = date.day + 243;break;
	case 10:days = date.day + 273;break;
	case 11:days = date.day + 304;break;
	case 12:days = date.day + 334;break;
	}
	if (((date.year % 4 == 0 && date.year % 100 != 0)|| date.year % 400 == 0)&&date.month>2)
		days += 1;
	cout << days;
	return 0;
}

2.1.定义一个结构体(包括年月日),如数年月日,输出该日在本年中是第一天,注意闰年问题 ,用函数days实现计算

#include <iostream>
using namespace std;
struct Date {
	int year;
	int mohth;
	int day;
};
int main()
{
	Date date;
	int sum;
	int days(int year, int month, int day);
	cout << "input year month day:";
	cin >> date.year >> date.mohth >> date.day;
	sum = days(date.year, date.mohth, date.day);
	cout<< sum;
	return 0;
}

int days(int year, int month, int day) {
	int i;
	int a[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
	for (i = 0;i < month - 1;i++)
		day += a[i];
	if (((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) && month > 2)
		day += 1;
	return day;
}

3.4
用函数输入结构体Student的数据,并输出

#include <iostream>
#include <string>
using namespace std;
struct Student {
	int num;
	string name;
	int score[3];
};
int main()
{
	void input(Student stu[]);
	void print(Student stu[]);
	Student stu[5];
	input(stu);
	print(stu);
	
	return 0;
}
void input(Student stu[]) {
	int i, j;
	for (i = 0;i < 5;i++)
	{
		cout << "input " << i + 1 << " student: num name score:" << endl;
		cin >> stu[i].num >> stu[i].name;
		for (j = 0;j < 3;j++)
			cin >> stu[i].score[j];
	}

}
	
void print(Student stu[])
{
	int i, j;
	cout << "NO.       name      score1    score2   score3"<<endl;
	for (i = 0;i < 5;i++)
	{
		cout << stu[i].num << "  " << stu[i].name << "   ";
		for (j = 0;j < 2;j++)
			cout << stu[i].score[j] << "  ";
		cout << endl;

	}
}

6.7.8.9.10
链表的创建、打印输出、插入、删除操作

#include <iostream>
using namespace std;
#define NULL 0
struct student {
	long num;
	float score;
	student* next;
};
int n;
int main()
{
	student* creat();
	void print(student * head);
	student* insert(student * head, student * stu);
	student* del(student * head, long num);
	student* head, *stu;
	long del_num;
	cout << "input records:" << endl;
	//创建
	head = creat();
	//打印
	print(head);
	cout << endl << "input the deleted number:";
	cin >> del_num;
	//可以多次删除结点
	while (del_num != 0) {
		head = del(head, del_num);
		print(head);
		cout << endl << "input the deleted number:";
		cin >> del_num;
	}

	//插入
	cout << endl << "input the inserted record:";
	stu = new student;
	//每次插入都要分配新的存储单元,使得插入的各结点互不干扰,不共用相同的内存
	cin >> stu->num >> stu->score;
	while (stu->num != 0) {
		head = insert(head, stu);
		print(head);
		cout << endl << "input the inserted record:";
		stu = new student;
		cin >> stu->num >> stu->score;
	}

}

student *creat()
{
	student* p1, * p2;
	student* head;
	n = 0;
	p1 = p2 = new student;
	cin >> p1->num >> p1->score;
	head = NULL;
	while (p1->num != 0)
	{
		n = n + 1;
		if (n ==1) head = p1;
		else p2->next = p1;
		p2 = p1;
		p1 = new student;
		cin >> p1->num >> p1->score;
	}
	p2->next = NULL;
	return head ;
}

void print(student* head)
{
	student* p;
	p = head;
	cout << endl << "now,the records are:" << endl;
	if(head!= NULL)
		do {
			cout << p->num << " " << p->score << endl;;
			p = p->next;
		}while(p!=NULL);
}

student* del(student* head, long num)
{
	student* p1, * p2;
	if (head == NULL)
	{
		cout << "list null"; return head;
	}
	p1=p2 = head;
	while (num != p1->num && p1->num != NULL)
	{
		p2 = p1;
		p1 = p1->next;
	}
	if (num == p1->num)
	{
		if (p1 == head) head = head->next;
		else p2->next = p1->next;
		cout << "deldete: " << num;
		n = n - 1;
	}
	else cout << "connot found";
	return head;
}
student* insert(student* head, student* stu)
{
	student* p1, * p2, * p0;
	p1 =p2= head;
	p0 = stu;
	if (head->next == NULL)
	{
		n = n + 1;
		head = p0;p0->next = NULL;
		return head;
	}
	while ((p1->num < p0->num) && (p1->next != NULL))
	{
		p2 = p1;p1 = p1->next;
	}
	if (p1->num >= p0->num)
	{
		if (p1 == head) 
			head = p0;
		else
			p2->next = p0;
		p0->next = p1;
	}
	else {
		p1->next = p0;p0->next = NULL;
	}
	n = n + 1;
	return head;

}
#include <iostream>
using namespace std;
int main()
{
	enum weekday{sun,mon,tue,wed,thu,fri,sat};
	int a, b, c, d, e, f, g;
	f = thu;
	for (a = sun;a <= sat;a++)
		if (a != f)
			for (b = sun;b <= sat;b++)
				if (b != a && b != f)
					for (c = sun;c <= sat;c++)
						if (c != a && c != b && c != f)
							for (d = sun;d <= sat;d++)
								if (d != a && d != b && d != c && d != f)
									for (e = sun;e <= sat;e++)
										if (e != a && e != b && e != c && e != d && e != f)
											for (g = sun;g <= sat;g++)
												if (g != a && g != b && g != c && g != d && g != e && g != f)
													if ((a == c + 1) && (d == e + 2) && (g == b + 3) && ((f > b && f < c)|| (f > c && f < b)))
														cout << a << " "<<b << " "<<c << " "<<d << " " << e << " "<<f << " "<<g;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值