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;
}