第七章课后习题

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. C语言程序设计第五版谭浩强著 第七章部分课后习题答案

    #include<stdio.h> int gcd(int x,int y) {int z;for(;;){z=x%y;x=y;y=z;if(y==0)break;}return x; } ...

  2. C语言程序设计第五版谭浩强课后答案 第九章习题答案

    C语言程序设计第五版谭浩强第九章答案 1.定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 2.写一个函数days,实现第1 题的计算.由主函数将年.月.日传递给days ...

  3. 《C语言程序设计》第五版谭浩强课后答案 第九章《用户自己建立数据类型​》习题答案 (大一大二、考研、计算机二级必看)

    第九章<用户自己建立数据类型​>习题答案 1.定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 2.写一个函数days,实现第1 题的计算.由主函数将年.月. ...

  4. c语言谭浩强第六章答案,C语言谭浩强版本第6章课后练习题答案..doc

    第6章课后练习题 单项选择题 以下程序执行后,a是: int a =0,i,j; for (i=5;i>0;i--) for(j=0;j<4;j++) a++; 20 25 24 30 执 ...

  5. 谭浩强C++ 第十一章

    第十一章课后习题 1.补充例11.1--public继承 (P338) //公有继承, //基类 private->派生类 不可访问; 基类 public->派生类 public; 基类 ...

  6. 谭浩强C++ 第四章

    第四章课后习题 1.最大公约数最小公倍数函数实现 #include<iostream> using namespace std; int gcd(int m,int n){if(m< ...

  7. 谭浩强C++ 第十三章

    第十三章课后习题 1.cerr标准错误流使用 //P408 #include<iostream> #include<cmath> using namespace std; in ...

  8. C语言程序设计第五版谭浩强著 第五章部分课后习题答案

    #include<stdio.h> main() {int x,y,m,n,u,p;scanf("%d%d",&x,&y);m=x;n=y;while( ...

  9. 谭浩强c++第9章 题9商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。

    商店销售某一商品,商店每天公布统一的折扣(discount).同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠.现已知当天3名销货员的销售情 ...

最新文章

  1. 通俗易懂理解~图机器学习导论
  2. Latex编译过程中遇到的奇奇怪怪的问题及解决方案
  3. 《Web应用漏洞侦测与防御:揭秘鲜为人知的攻击手段和防御技术》——导读
  4. C++golden section search黄金分割搜索的实现算法(附完整源码)
  5. 使用分发列表过滤BGP路由
  6. 【转】VTK修炼之道2_VTK体系结构1
  7. Android4.4 及以下TextView,Button等控件使用矢量图报错
  8. 感知器模型为什么不能解决异或问题
  9. 中国程序员最应该感谢的几家公司
  10. 并发模式之Future模式
  11. 首次公开专利并且专利数量最多公司(2022.07.25-2022.7.31)
  12. Heckman 两阶段法及与工具变量法的区别
  13. 【数据工具】地理坐标拾取器V.1.01(支持WGS-84、GCJ-02、BD-09)
  14. java编程实现行列式计算应用_基于java的行列式计算程序
  15. 电脑qq语音连不到服务器,我的电脑不能语音聊天是怎么回事?每次qq上都提示:您的麦克风没有声音?我检查了电脑设置没问题...
  16. php利用堆栈 实现高级计算器
  17. 地理数据库GeoNames,并导入Mysql
  18. 逻辑综合重点解析(Design Compiler篇)
  19. 计算机二级报名时间2020年3月山西,2020年3月山西计算机二级报名及考试时间
  20. [Noi2005]聪聪和可可

热门文章

  1. matlab读ascii的dat,[转载]MATLAB读取和调用各种数据(txt,dat,ma
  2. 【Windows】修改C盘用户名称
  3. 利用Python爬虫爬取斗鱼直播间信息,以及直播的实际人数!
  4. 论文中图一.1修改为图1.1
  5. 戴尔服务器r330系统安装,Dell PowerEdge R330
  6. Source Monitor的使用
  7. TVS 管选型与 ESD 防护设计
  8. 红帽为什么要加入阿里云的朋友圈?
  9. java List的stream()方法解析
  10. 个人微信公众号对接自动回复电影网站接口又能实现菜单功能