PAT B1028 人口普查 最终ac 一开始总是差一个输出因把年龄和月份比较弄混了
来源:互联网 发布:网络爱情歌曲 编辑:程序博客网 时间:2024/04/29 04:08
#include<stdio.h>//考虑到可能有同年不同月不同日的人,也要进入比较大小,所以用结构体,输入时忽略/字符,结构体又4个子元素组成//一个很重要的点,应该写一个比较日期大小的函数,因为判断边界要用,等下比较谁大谁小还要用。我一开始没想到只想着想一步写一步 //第二次提交能通过编译,但是只有一个1分的测试点是答案正确 //后终于ac了!3 Tom John最是我把日期大小和年龄大小弄混了,在主函数中比较时一时思维没转换过来!纠结了我一个下午! //#define LOCAL struct Person{char pname[7];//我一开始把中括号写到前面了,就不对。。 int yy,mm,dd;//三个变量 }oldest,youngest,temp,left,right; //left 和right分别放合法日期的左右边界bool LessEqu(struct Person a,struct Person b){//注意是日期大小,而不是年龄大小if(a.yy!=b.yy) return a.yy<=b.yy;else if(a.mm!=b.mm) return a.mm<=b.mm;else return a.dd<=b.dd;//不太懂啊这个 } bool MoreEqu(struct Person a,struct Person b){//注意是日期大小,而不是年龄大小!!等会比较要注意 if(a.yy!=b.yy) return a.yy>=b.yy;else if(a.mm!=b.mm) return a.mm>=b.mm;else return a.dd>=b.dd;} void init(){//youngest与left为1814年9月6日,oldest与right为2014年9月6日youngest.yy=left.yy=1814;//这里好像书上写错了,后来发现是自己写错了 oldest.yy=right.yy=2014;youngest.mm=left.mm=oldest.mm=right.mm=9;youngest.dd=left.dd=oldest.dd=right.dd=6;//后来总是显示2个,后来发现这里数字写错了 }int main(){#ifdef LOCALfreopen("data.in","r",stdin);freopen("data.out","w",stdout);#endif//突然发现了原因!在主函数中没有对边界和最大最小进行初始化直接就比较了! init(); int n,count=0;scanf("%d",&n);while(n--){scanf("%s%d/%d/%d",&temp.pname,&temp.yy,&temp.mm,&temp.dd);//第三次犯这个错误,导致内存无法读取 //先判断是否合理,合理的话自增1,然后继续进行比较,否则到此终止 if(LessEqu(temp,right)&&MoreEqu(temp,left)){count++;if(MoreEqu(temp,youngest))//一开始这里写成了MoreEqu,把日期大小和年龄大小弄混了!youngest=temp;if(LessEqu(temp,oldest))//一开始这里写成了MoreEqu,把日期大小和年龄大小弄混了! oldest=temp;} }if(count==0) printf("0\n");//不用担心个数为1时会怎么样,因为已经有交换,所以如果是1就输出两次那一个 //输出绝对有问题 else printf("%d %s %s\n",count,oldest.pname,youngest.pname);//这样写输出结果3 Tom/*else{printf("%d",count);printf(" %s",oldest.pname);printf(" %s\n",youngest.pname);}*/return 0;}
0 0
- PAT B1028 人口普查 最终ac 一开始总是差一个输出因把年龄和月份比较弄混了
- PAT---B1028. 人口普查(20)
- PAT B1028. 人口普查(20)
- PAT B1028. 人口普查
- PAT乙级练习题B1028.人口普查
- B1028. 人口普查(20)
- PAT B1028
- 浙大 PAT b1028
- PAT b1026-b1028题解
- 汪涵曾因太穷被前妻离婚,杨乐乐因一个动作就把初恋男友甩了
- 输入一个年份和一个月份,输出这月有多少天
- 等腰梯形,我总是把i和1弄错了!!!!!!!!!!!!!
- C语言实验:输入任意一个年份和月份,输出该月份的公历日历
- C语言实验:输入任意一个年份和月份,输出该月份的公历日历
- 输入任意一个年份和月份,输出该月份的公历日历
- 输入年份和月份,输出月份天数
- pat 1028. 人口普查(20)
- PAT(B) 1028. 人口普查
- Java并发编程注意事项
- 数学之路-sas备忘(2)
- 楼天城访谈
- eclipse设置代码自动提示
- 【集合】HashTable和HashMap的区别
- PAT B1028 人口普查 最终ac 一开始总是差一个输出因把年龄和月份比较弄混了
- 服务器间歇性异常网络中断问题的临时处理
- Linux下编程需要看哪些书
- C#判断文件的真实格式
- codefroces 425E Sereja and Sets (dp)
- Non-user Modes and the interrupt
- 【bzoj3098】Hash Killer II【丧心病狂的大水题】
- 男人长寿的6个好习惯
- 连通性问题--《C算法》学习笔记