最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

谭浩强C++ 第七章

IT圈 admin 4浏览 0评论

谭浩强C++ 第七章

第七章课后习题

1、定义结构体,对输入年月日计算是该年的第几天
//第五章9题基本相同,用结构体完成即可
#include<iostream>
using namespace std;
struct Date{int year;int month;int day;
};
int main(){Date da;cin>>da.year>>da.month>>da.day;int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};int sum=0;for(int i=0;i<da.month-1;i++){sum=sum+a[i];}sum=sum+da.day;if((da.year%4==0&&da.year%100!=0)||(da.year%400==0)){//闰年,可被4整除且不可被100整除;或可被400整除if(da.month>2){sum++;//如果是闰年且大于2月天数加一即可}}cout<<sum<<endl;return 0;
}
2、用函数实现第一题
#include<iostream>
using namespace std;
struct Date{int year;int month;int day;
};
int days(int year,int month,int day){//按照非闰年计算输入时间是这一年的第几天int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};int sum=0;for(int i=0;i<month-1;i++){sum=sum+a[i];}sum=sum+day;if((year%4==0&&year%100!=0)||(year%400==0)){//闰年,可被4整除且不可被100整除;或可被400整除if(month>2){sum++;//如果是闰年且大于2月天数加一即可}}return sum;
}
int main(){Date da;cin>>da.year>>da.month>>da.day;int sum=days(da.year,da.month,da.day);cout<<sum<<endl;return 0;
}
3、结构体数组,学生信息输入打印
#include<iostream>
#include<string>
using namespace std;
struct Student{int num;string name;double score[3];
};
void print(Student a){cout<<a.num<<'\t'<<a.name<<'\t';cout<<a.score[0]<<" "<<a.score[1]<<" "<<a.score[2]<<endl;
}
int main(){Student stu[5];for(int i=0;i<5;i++){cin>>stu[i].num >>stu[i].name;for(int j=0;j<3;j++){cin>>stu[i].score[j];}}cout<<endl<<"num"<<'\t'<<"name"<<'\t'<<"score"<<endl;for(int i=0;i<5;i++){print(stu[i]);}return 0;
}
4、第三题加上一个input函数
#include<iostream>
#include<string>
using namespace std;
struct Student{int num;string name;double score[3];
};
void input(Student *a){cin>>(*a).num >>(*a).name;for(int j=0;j<3;j++){cin>>(*a).score[j];}
}
void print(Student a){cout<<a.num<<'\t'<<a.name<<'\t';cout<<a.score[0]<<" "<<a.score[1]<<" "<<a.score[2]<<endl;
}
int main(){Student stu[5];Student *p;p=&stu[0];for(int i=0;i<5;i++){input(p);p++;}cout<<endl<<"num"<<'\t'<<"name"<<'\t'<<"score"<<endl;for(int i=0;i<5;i++){print(stu[i]);}return 0;
}
//方法2
#include<iostream>
#include<string>
using namespace std;
struct Student{int num;string name;double score[3];
};
void input(Student a[]){for(int i=0;i<5;i++){cin>>a[i].num>>a[i].name;for(int j=0;j<3;j++){cin>>a[i].score[j];}}
}
void print(Student a[]){for(int i=0;i<5;i++){cout<<a[i].num<<'\t'<<a[i].name<<'\t';cout<<a[i].score[0]<<" "<<a[i].score[1]<<" "<<a[i].score[2]<<endl;}}
int main(){Student stu[5];input(stu);cout<<endl<<"num"<<'\t'<<"name"<<'\t'<<"score"<<endl;print(stu);return 0;
}
5、有10个学生,求三门课总平均成绩,和最高分学生信息
#include<iostream>
#include<string>
using namespace std;
struct Student{int num;string name;double score[3];
};
void input(Student a[]){for(int i=0;i<10;i++){cin>>a[i].num>>a[i].name;for(int j=0;j<3;j++){cin>>a[i].score[j];}}
}
void print(Student a[]){double b[3]={0.0,0.0,0.0};double c[3]={a[0].score[0],a[0].score[1],a[0].score[2]};int d[3]={0,0,0};for(int i=0;i<3;i++){for(int j=0;j<10;j++){b[i]+=a[j].score[i];if(a[j].score[i]>c[i]){d[i]=j;	c[i]=a[j].score[i];}}cout<<"The course"<<i+1<<",average="<<b[i]/10<<endl;cout<<"max"<<'\t'<<"num"<<'\t'<<"name"<<'\t'<<"score"<<" "<<"    average score"<<endl;;for(int j=0;j<10;j++){if(d[i]==j){cout<<a[j].score[i]<<'\t';cout<<a[j].num<<'\t'<<a[j].name<<'\t';cout<<a[j].score[0]<<" "<<a[j].score[1]<<" "<<a[j].score[2]<<"        "<<(a[j].score[0]+a[j].score[1]+a[j].score[2])/3<<endl;}}cout<<endl;}	
}
int main(){Student stu[10];input(stu);print(stu);return 0;
}/*
1000 wa 2 3 4
1001 qa 1 2 3
1002 qq 3 4 5
1003 rs 6 7 8
1004 sl 3 4 0
1005 am 3 4 2
1006 bw 4 3 2
1007 wx 9 3 1
1008 qc 1 3 1
1009 os 3 4 9*/
6、创建动态链表
//6-10,链表仍然不太熟悉,参考课本P199,P204以及标准答案
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
int main(){ struct Student *p; p=create();while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}return 0;
} 
7、输出动态链表各结点的数据
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
void print(Student *p){while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}
}
int main(){ struct Student *p; p=create();print(p);return 0;
} 
8、删除动态链表指定结点
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
void print(Student *p){while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}
}
Student *del(Student *p,string num){struct Student *p1=p;if(p1->num==num){/*struct Student *cur= p1;p= p1->next;delete cur;cur=NULL;*/p=p->next;return p;	}elsewhile (p1->next!=NULL){if (p1->next->num==num){struct Student *cur= p1->next;p1->next = p1->next->next;delete cur;return p;}p1 = p1->next;}cout<<"Can't find"<<endl;return p;
}
int main(){ struct Student *p; p=create();print(p);cout<<endl;p=del(p,"1002");print(p);return 0;
}
9、动态链表插入结点
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
void print(Student *p){while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}
}Student *insert(Student *p,Student *stu){struct Student *cur= p;while(p!=NULL){cur= p;p=p->next;}cur->next=stu;cur->next->next=NULL;return p;
}
int main(){ struct Student *p;cout<<"input 3 students' info:"<<endl; p=create();print(p);Student stu;cout<<endl<<"input the insert student:";cin>>stu.num>>stu.score;insert(p,&stu);print(p);return 0;
}
10、6-9写成一个程序实现链表建立、输出、删除、插入
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
void print(Student *p){while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}
}
Student *del(Student *p,string num){struct Student *p1=p;if(p1->num==num){/*struct Student *cur= p1;p= p1->next;delete cur;cur=NULL;*/p=p->next;return p;	}elsewhile (p1->next!=NULL){if (p1->next->num==num){struct Student *cur= p1->next;p1->next = p1->next->next;delete cur;return p;}p1 = p1->next;}cout<<"Can't find"<<endl;return p;
}
Student *insert(Student *p,Student *stu){struct Student *cur= p;while(p!=NULL){cur= p;p=p->next;}cur->next=stu;cur->next->next=NULL;return p;
}
int main(){ struct Student *p;cout<<"input 3 students' info:"<<endl; p=create();print(p);cout<<endl<<"delete the num 1002:"<<endl;p=del(p,"1002");print(p);Student stu;cout<<endl<<"input the insert student:";cin>>stu.num>>stu.score;insert(p,&stu);print(p);return 0;
}
11、值班
#include<iostream>
using namespace std;
enum weekday{Sunday=7,Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday
};
int main(){ weekday doctor[7];doctor[5]=Thursday;for(int i=1;i<=7;i++){//⭐i-B医生值班,  i+3-G医生 if(weekday(i+3)<=Sunday){//G小于等于周日 ,此时B一定也小于周日 if(weekday(i)!=Thursday&&weekday(i+3)!=Thursday){doctor[1]=weekday(i); doctor[6]=weekday(i+3);//	cout<<doctor[1]<<" "<<doctor[6]<<endl;if(i<4){//B C中间有一个F在周四 ,当B在周四前 for(int j=5;j<=7;j++){//A 在周四后 ,⭐j代表A值班日期 j+1代表C的值班日期 if(weekday(j+1)<=Sunday){ if(j!=i&&j!=i+3&&j+1!=i&&j+1!=i+3){//AC 值班日期都不能和BG重合 doctor[0]=weekday(j);doctor[2]=weekday(j+1); for(int k=1;k<=7;k++){//⭐k代表E值班日期,k+2代表D值班日期 if(weekday(k)!=Thursday&&weekday(k+2)!=Thursday&&weekday(k+2)<=Sunday){//ED不为周四,D小于等于周日 if(k!=i&&k!=i+3&&k+2!=i&&k+2!=i+3){//ED不能和ACBG重合 if(k!=j&&k!=j+1&&k+2!=j&&k+2!=j+1){doctor[4]=weekday(k);doctor[3]=weekday(k+2);for(int l=0;l<7;l++){//输出if(doctor[l]==Monday) cout<<"doctor "<<char(l+'A')<<"--Monday"<<endl;else if(doctor[l]==Tuesday) cout<<"doctor "<<char(l+'A')<<"--Tuesday"<<endl;else if(doctor[l]==Wednesday) cout<<"doctor "<<char(l+'A')<<"--Wednesday"<<endl;else if(doctor[l]==Thursday) cout<<"doctor "<<char(l+'A')<<"--Thursday"<<endl;else if(doctor[l]==Friday) cout<<"doctor "<<char(l+'A')<<"--Friday"<<endl;else if(doctor[l]==Saturday) cout<<"doctor "<<char(l+'A')<<"--Saturday"<<endl;else if(doctor[l]==Sunday) cout<<"doctor "<<char(l+'A')<<"--Sunday"<<endl;} //cout<<doctor[5]<<" "<<doctor[1]<<" "<<doctor[6]<<" "<<doctor[0]<<" "<<doctor[2]<<" "<<doctor[4]<<" "<<doctor[3]<<endl;}}}} }}} }else{//B 在周四后 for(int j=1;j<4;j++){//A 在周四前  j代表A值班日期 j+1代表C的值班日期 if(weekday(j+1)<Thursday){//下面同理 if(j!=i&&j!=i+3&&j+1!=i&&j+1!=i+3){//AC不与BG重合 doctor[0]=weekday(j);doctor[2]=weekday(j+1); for(int k=1;k<=7;k++){//k代表E值班日期,k+2代表D值班日期 if(weekday(k)!=Thursday&&weekday(k+2)!=Thursday&&weekday(k+2)<=Sunday){if(k!=i&&k!=i+3&&k+2!=i&&k+2!=i+3){if(k!=j&&k!=j+1&&k+2!=j&&k+2!=j+1){doctor[4]=weekday(k);doctor[3]=weekday(k+2);for(int l=0;l<7;l++){if(doctor[l]==Monday) cout<<"doctor "<<char(l+'A')<<"--Monday"<<endl;else if(doctor[l]==Tuesday) cout<<"doctor "<<char(l+'A')<<"--Tuesday"<<endl;else if(doctor[l]==Wednesday) cout<<"doctor "<<char(l+'A')<<"--Wednesday"<<endl;else if(doctor[l]==Thursday) cout<<"doctor "<<char(l+'A')<<"--Thursday"<<endl;else if(doctor[l]==Friday) cout<<"doctor "<<char(l+'A')<<"--Friday"<<endl;else if(doctor[l]==Saturday) cout<<"doctor "<<char(l+'A')<<"--Saturday"<<endl;else if(doctor[l]==Sunday) cout<<"doctor "<<char(l+'A')<<"--Sunday"<<endl;} //	cout<<doctor[5]<<" "<<doctor[1]<<" "<<doctor[6]<<" "<<doctor[0]<<" "<<doctor[2]<<" "<<doctor[4]<<" "<<doctor[3]<<endl;}}}} }}} }}}		} return 0;
}
//写完了才发现自己想的似乎有点复杂

谭浩强C++ 第七章

第七章课后习题

1、定义结构体,对输入年月日计算是该年的第几天
//第五章9题基本相同,用结构体完成即可
#include<iostream>
using namespace std;
struct Date{int year;int month;int day;
};
int main(){Date da;cin>>da.year>>da.month>>da.day;int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};int sum=0;for(int i=0;i<da.month-1;i++){sum=sum+a[i];}sum=sum+da.day;if((da.year%4==0&&da.year%100!=0)||(da.year%400==0)){//闰年,可被4整除且不可被100整除;或可被400整除if(da.month>2){sum++;//如果是闰年且大于2月天数加一即可}}cout<<sum<<endl;return 0;
}
2、用函数实现第一题
#include<iostream>
using namespace std;
struct Date{int year;int month;int day;
};
int days(int year,int month,int day){//按照非闰年计算输入时间是这一年的第几天int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};int sum=0;for(int i=0;i<month-1;i++){sum=sum+a[i];}sum=sum+day;if((year%4==0&&year%100!=0)||(year%400==0)){//闰年,可被4整除且不可被100整除;或可被400整除if(month>2){sum++;//如果是闰年且大于2月天数加一即可}}return sum;
}
int main(){Date da;cin>>da.year>>da.month>>da.day;int sum=days(da.year,da.month,da.day);cout<<sum<<endl;return 0;
}
3、结构体数组,学生信息输入打印
#include<iostream>
#include<string>
using namespace std;
struct Student{int num;string name;double score[3];
};
void print(Student a){cout<<a.num<<'\t'<<a.name<<'\t';cout<<a.score[0]<<" "<<a.score[1]<<" "<<a.score[2]<<endl;
}
int main(){Student stu[5];for(int i=0;i<5;i++){cin>>stu[i].num >>stu[i].name;for(int j=0;j<3;j++){cin>>stu[i].score[j];}}cout<<endl<<"num"<<'\t'<<"name"<<'\t'<<"score"<<endl;for(int i=0;i<5;i++){print(stu[i]);}return 0;
}
4、第三题加上一个input函数
#include<iostream>
#include<string>
using namespace std;
struct Student{int num;string name;double score[3];
};
void input(Student *a){cin>>(*a).num >>(*a).name;for(int j=0;j<3;j++){cin>>(*a).score[j];}
}
void print(Student a){cout<<a.num<<'\t'<<a.name<<'\t';cout<<a.score[0]<<" "<<a.score[1]<<" "<<a.score[2]<<endl;
}
int main(){Student stu[5];Student *p;p=&stu[0];for(int i=0;i<5;i++){input(p);p++;}cout<<endl<<"num"<<'\t'<<"name"<<'\t'<<"score"<<endl;for(int i=0;i<5;i++){print(stu[i]);}return 0;
}
//方法2
#include<iostream>
#include<string>
using namespace std;
struct Student{int num;string name;double score[3];
};
void input(Student a[]){for(int i=0;i<5;i++){cin>>a[i].num>>a[i].name;for(int j=0;j<3;j++){cin>>a[i].score[j];}}
}
void print(Student a[]){for(int i=0;i<5;i++){cout<<a[i].num<<'\t'<<a[i].name<<'\t';cout<<a[i].score[0]<<" "<<a[i].score[1]<<" "<<a[i].score[2]<<endl;}}
int main(){Student stu[5];input(stu);cout<<endl<<"num"<<'\t'<<"name"<<'\t'<<"score"<<endl;print(stu);return 0;
}
5、有10个学生,求三门课总平均成绩,和最高分学生信息
#include<iostream>
#include<string>
using namespace std;
struct Student{int num;string name;double score[3];
};
void input(Student a[]){for(int i=0;i<10;i++){cin>>a[i].num>>a[i].name;for(int j=0;j<3;j++){cin>>a[i].score[j];}}
}
void print(Student a[]){double b[3]={0.0,0.0,0.0};double c[3]={a[0].score[0],a[0].score[1],a[0].score[2]};int d[3]={0,0,0};for(int i=0;i<3;i++){for(int j=0;j<10;j++){b[i]+=a[j].score[i];if(a[j].score[i]>c[i]){d[i]=j;	c[i]=a[j].score[i];}}cout<<"The course"<<i+1<<",average="<<b[i]/10<<endl;cout<<"max"<<'\t'<<"num"<<'\t'<<"name"<<'\t'<<"score"<<" "<<"    average score"<<endl;;for(int j=0;j<10;j++){if(d[i]==j){cout<<a[j].score[i]<<'\t';cout<<a[j].num<<'\t'<<a[j].name<<'\t';cout<<a[j].score[0]<<" "<<a[j].score[1]<<" "<<a[j].score[2]<<"        "<<(a[j].score[0]+a[j].score[1]+a[j].score[2])/3<<endl;}}cout<<endl;}	
}
int main(){Student stu[10];input(stu);print(stu);return 0;
}/*
1000 wa 2 3 4
1001 qa 1 2 3
1002 qq 3 4 5
1003 rs 6 7 8
1004 sl 3 4 0
1005 am 3 4 2
1006 bw 4 3 2
1007 wx 9 3 1
1008 qc 1 3 1
1009 os 3 4 9*/
6、创建动态链表
//6-10,链表仍然不太熟悉,参考课本P199,P204以及标准答案
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
int main(){ struct Student *p; p=create();while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}return 0;
} 
7、输出动态链表各结点的数据
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
void print(Student *p){while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}
}
int main(){ struct Student *p; p=create();print(p);return 0;
} 
8、删除动态链表指定结点
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
void print(Student *p){while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}
}
Student *del(Student *p,string num){struct Student *p1=p;if(p1->num==num){/*struct Student *cur= p1;p= p1->next;delete cur;cur=NULL;*/p=p->next;return p;	}elsewhile (p1->next!=NULL){if (p1->next->num==num){struct Student *cur= p1->next;p1->next = p1->next->next;delete cur;return p;}p1 = p1->next;}cout<<"Can't find"<<endl;return p;
}
int main(){ struct Student *p; p=create();print(p);cout<<endl;p=del(p,"1002");print(p);return 0;
}
9、动态链表插入结点
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
void print(Student *p){while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}
}Student *insert(Student *p,Student *stu){struct Student *cur= p;while(p!=NULL){cur= p;p=p->next;}cur->next=stu;cur->next->next=NULL;return p;
}
int main(){ struct Student *p;cout<<"input 3 students' info:"<<endl; p=create();print(p);Student stu;cout<<endl<<"input the insert student:";cin>>stu.num>>stu.score;insert(p,&stu);print(p);return 0;
}
10、6-9写成一个程序实现链表建立、输出、删除、插入
#include<iostream>
#include<string> 
#define N 3
using namespace std;
struct Student{string num;double score;struct Student *next;
};
Student *create(){struct Student *head,*p;head=NULL;for(int i=0;i<N;i++){p=new Student;cout<<"please input num:";cin>>p->num;cout<<"plese input score:";cin>>p->score;p->next=head;head=p;}return head;	
}
void print(Student *p){while(p!=NULL){cout<<p->num<<" "<<p->score<<endl;p=p->next;}
}
Student *del(Student *p,string num){struct Student *p1=p;if(p1->num==num){/*struct Student *cur= p1;p= p1->next;delete cur;cur=NULL;*/p=p->next;return p;	}elsewhile (p1->next!=NULL){if (p1->next->num==num){struct Student *cur= p1->next;p1->next = p1->next->next;delete cur;return p;}p1 = p1->next;}cout<<"Can't find"<<endl;return p;
}
Student *insert(Student *p,Student *stu){struct Student *cur= p;while(p!=NULL){cur= p;p=p->next;}cur->next=stu;cur->next->next=NULL;return p;
}
int main(){ struct Student *p;cout<<"input 3 students' info:"<<endl; p=create();print(p);cout<<endl<<"delete the num 1002:"<<endl;p=del(p,"1002");print(p);Student stu;cout<<endl<<"input the insert student:";cin>>stu.num>>stu.score;insert(p,&stu);print(p);return 0;
}
11、值班
#include<iostream>
using namespace std;
enum weekday{Sunday=7,Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday
};
int main(){ weekday doctor[7];doctor[5]=Thursday;for(int i=1;i<=7;i++){//⭐i-B医生值班,  i+3-G医生 if(weekday(i+3)<=Sunday){//G小于等于周日 ,此时B一定也小于周日 if(weekday(i)!=Thursday&&weekday(i+3)!=Thursday){doctor[1]=weekday(i); doctor[6]=weekday(i+3);//	cout<<doctor[1]<<" "<<doctor[6]<<endl;if(i<4){//B C中间有一个F在周四 ,当B在周四前 for(int j=5;j<=7;j++){//A 在周四后 ,⭐j代表A值班日期 j+1代表C的值班日期 if(weekday(j+1)<=Sunday){ if(j!=i&&j!=i+3&&j+1!=i&&j+1!=i+3){//AC 值班日期都不能和BG重合 doctor[0]=weekday(j);doctor[2]=weekday(j+1); for(int k=1;k<=7;k++){//⭐k代表E值班日期,k+2代表D值班日期 if(weekday(k)!=Thursday&&weekday(k+2)!=Thursday&&weekday(k+2)<=Sunday){//ED不为周四,D小于等于周日 if(k!=i&&k!=i+3&&k+2!=i&&k+2!=i+3){//ED不能和ACBG重合 if(k!=j&&k!=j+1&&k+2!=j&&k+2!=j+1){doctor[4]=weekday(k);doctor[3]=weekday(k+2);for(int l=0;l<7;l++){//输出if(doctor[l]==Monday) cout<<"doctor "<<char(l+'A')<<"--Monday"<<endl;else if(doctor[l]==Tuesday) cout<<"doctor "<<char(l+'A')<<"--Tuesday"<<endl;else if(doctor[l]==Wednesday) cout<<"doctor "<<char(l+'A')<<"--Wednesday"<<endl;else if(doctor[l]==Thursday) cout<<"doctor "<<char(l+'A')<<"--Thursday"<<endl;else if(doctor[l]==Friday) cout<<"doctor "<<char(l+'A')<<"--Friday"<<endl;else if(doctor[l]==Saturday) cout<<"doctor "<<char(l+'A')<<"--Saturday"<<endl;else if(doctor[l]==Sunday) cout<<"doctor "<<char(l+'A')<<"--Sunday"<<endl;} //cout<<doctor[5]<<" "<<doctor[1]<<" "<<doctor[6]<<" "<<doctor[0]<<" "<<doctor[2]<<" "<<doctor[4]<<" "<<doctor[3]<<endl;}}}} }}} }else{//B 在周四后 for(int j=1;j<4;j++){//A 在周四前  j代表A值班日期 j+1代表C的值班日期 if(weekday(j+1)<Thursday){//下面同理 if(j!=i&&j!=i+3&&j+1!=i&&j+1!=i+3){//AC不与BG重合 doctor[0]=weekday(j);doctor[2]=weekday(j+1); for(int k=1;k<=7;k++){//k代表E值班日期,k+2代表D值班日期 if(weekday(k)!=Thursday&&weekday(k+2)!=Thursday&&weekday(k+2)<=Sunday){if(k!=i&&k!=i+3&&k+2!=i&&k+2!=i+3){if(k!=j&&k!=j+1&&k+2!=j&&k+2!=j+1){doctor[4]=weekday(k);doctor[3]=weekday(k+2);for(int l=0;l<7;l++){if(doctor[l]==Monday) cout<<"doctor "<<char(l+'A')<<"--Monday"<<endl;else if(doctor[l]==Tuesday) cout<<"doctor "<<char(l+'A')<<"--Tuesday"<<endl;else if(doctor[l]==Wednesday) cout<<"doctor "<<char(l+'A')<<"--Wednesday"<<endl;else if(doctor[l]==Thursday) cout<<"doctor "<<char(l+'A')<<"--Thursday"<<endl;else if(doctor[l]==Friday) cout<<"doctor "<<char(l+'A')<<"--Friday"<<endl;else if(doctor[l]==Saturday) cout<<"doctor "<<char(l+'A')<<"--Saturday"<<endl;else if(doctor[l]==Sunday) cout<<"doctor "<<char(l+'A')<<"--Sunday"<<endl;} //	cout<<doctor[5]<<" "<<doctor[1]<<" "<<doctor[6]<<" "<<doctor[0]<<" "<<doctor[2]<<" "<<doctor[4]<<" "<<doctor[3]<<endl;}}}} }}} }}}		} return 0;
}
//写完了才发现自己想的似乎有点复杂

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论