程序设计实习第三讲数制转换和日期处理

上传人:mg****85 文档编号:49942467 上传时间:2018-08-05 格式:PPT 页数:54 大小:344KB
返回 下载 相关 举报
程序设计实习第三讲数制转换和日期处理_第1页
第1页 / 共54页
程序设计实习第三讲数制转换和日期处理_第2页
第2页 / 共54页
程序设计实习第三讲数制转换和日期处理_第3页
第3页 / 共54页
程序设计实习第三讲数制转换和日期处理_第4页
第4页 / 共54页
程序设计实习第三讲数制转换和日期处理_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《程序设计实习第三讲数制转换和日期处理》由会员分享,可在线阅读,更多相关《程序设计实习第三讲数制转换和日期处理(54页珍藏版)》请在金锄头文库上搜索。

1、程序设计实习课程(C+ Programming Practice)程序设计实习第三讲 数制转换和日期处理主讲教师:田永鸿 2008年2月25日北京大学程序设计实习课程通知o课程网页改在:http:/ nPOJ作业+平时邮件作业 nPOJ作业在http:/ 4讲作业_张三_100 ) oPOJ帐号规定n如果有计算概论课程的ID,可继续使用该ID,如果没有帐号, 则使用学号注册自己的IDn昵称一律改为CPP08XX+ 自己喜欢的名称 (XX为小班号,详 见分班情况) 北京大学程序设计实习课程关于助教和分班o上机及助教分班已在网页上公布;o本班四个助教n01班:黄贝宁() 学号: #include

2、double mysqrt(double guess, double x); bool goodEnough(double guess, double x); double improve(double guess, double x); void main()cout #include double mysqrt(double guess, double x); bool goodEnough(double guess, double x); double improve(double guess, double x); void main()cout= b) return -1; ret

3、*= b; ret += xi - 0 ; return (long)ret; 北京大学程序设计实习课程程序设计练习 例1#include #include long b2ten(char* x,int b); void main( ) int n; char p8,q8,r8; scanf(“%d“, while(n-) scanf(“%s%s%s“, p, q, r); for(int b = 2; b void main() int m112=31,28,31,30,31,30,31,31,30,31,30,31;int m212=31,29,31,30,31,30,31,31,30,3

4、1,30,31;char week710=“Saturday“,“Sunday“,“Monday“,“Tuesday“,“Wednesday“,“Thursday“,“Friday“;int days, weekday; scanf(“%d“, while(days != -1) days+; weekday = (days-1)%7; int daysinyear=0; int ithyear=0; while(days 0) /确定年if(ithyear%100=0 else if(ithyear%4=0) daysinyear = 366; else daysinyear = 365;

5、days -= daysinyear; ithyear +; 北京大学程序设计实习课程程序设计练习 例2ithyear -; days += daysinyear; int ithmonth=0; while(days 0)/确定月if(daysinyear = 365) days -= m1ithmonth;else days -= m2ithmonth; ithmonth +; if(daysinyear = 365) days += m1ithmonth-1; /确定天else days += m2ithmonth-1; printf(“%d-%02d-%02d %sn“,2000+it

6、hyear,ithmonth,days,weekweekday);scanf(“%d“, / while / main北京大学程序设计实习课程程序设计练习 例3o问题描述:n一种细菌的繁殖速度是每天成倍增长。例如:第一 天有10个,第二天就变成20个,第三天变成40个, 第四天变成80个,。n现在给出第一天的日期和细菌数目,要你写程序求 出到某一天的时候,细菌的数目。北京大学程序设计实习课程程序设计练习 例3o输入n第一行有一个整数n,表示测试数据的数目。其后n 行每行有5个整数,整数之间用一个空格隔开。第一 个数表示第一天的月份,第二个数表示第一天的日 期,第三个数表示第一天细菌的数目,第四

7、个数表 示要求的那一天的月份,第五个数表示要求的那一 天的日期。n已知第一天和要求的一天在同一年并且该年不是闰 年,要求的一天一定在第一天之后。数据保证要求 的一天的细菌数目在长整数(long)范围内。o输出n对于每一组测试数据,输出一行,该行包含一个整 数,为要求的一天的细菌数。北京大学程序设计实习课程程序设计练习 例3o样例输入 2 1 1 1 1 2 2 28 10 3 2 o样例输出 2 40 北京大学程序设计实习课程解题思路o求给定的两天之间间隔的天数m,第一天的细菌数乘以 2的m次方就是题目的答案o难点:每月的天数不很规则,程序处理过程中较为复 杂n用一个数组将每个月的天数存起来o

8、算法框架n读入测试样例数n;n做n次 (1)读入两个日期及第一天的细菌数; (2)将两个日期转换为当前的第几天; (3)得到两个天数的差,即他们中间间隔的天数m; (4)用第一天的细菌数乘以2的m次方得到x; (5)输出x#include void main() int nDays12=31,28,31,30,31,30,31,31,30,31,30,31; int n;scanf(“%d“, for (int i = 0; i n; i+) int month_1,day_1,month_2,day_2,num; /起止日期的月份和日期 scanf(“%d%d%d%d%d“, int sum

9、 = 0; for (int k = month_1; k month_2; k+) sum += nDaysk - 1; sum -= day_1; sum += day_2; long nNum = num; for (k = 0; k sum; k+) nNum *=2; printf(“%dn“, nNum); 北京大学程序设计实习课程程序设计练习 课堂练习2o2210o问题描述n有一种特殊的日历法,它的一天和我们现在用的日 历法的一天是一样长的。它每天有10个小时,每个 小时有100分钟,每分钟有100秒。10天算一周,10 周算一个月,10个月算一年。n现在要你编写一个程序,将我们

10、常用的日历法的日 期转换成这种特殊的日历表示法。这种日历法的时 、分、秒是从0开始计数的。日、月从1开始计数, 年从0开始计数。秒数为整数。假设 0:0:0 1.1.2000 等同于特殊日历法的 0:0:0 1.1.0。北京大学程序设计实习课程程序设计练习 课堂练习2o输入n第一行是一个整数 N ,表示测试样例的数目。 每个 测试样例包含一行,格式为: “hour:minute:second day.month.year” 日期总是合法的,并且 2000 = year = 50000. o输出n对于每个测试样例输出一行,该行包含转换后得到 的特殊日历表示法,形如:“mhour:mmin:mse

11、c mday.mmonth.myear“北京大学程序设计实习课程程序设计练习 课堂练习2o输入样例 7 0:0:0 1.1.2000 10:10:10 1.3.2001 0:12:13 1.3.2400 23:59:59 31.12.2001 0:0:1 20.7.7478 0:20:20 21.7.7478 15:54:44 2.10.20749 o输出样例 0:0:0 1.1.0 4:23:72 26.5.0 0:8:48 58.2.146 9:99:98 31.8.0 0:0:1 100.10.2000 0:14:12 1.1.2001 6:63:0 7.3.6848北京大学程序设计实习课程20080225作业o2965o2351o2967o1565o1008(选做)o2210(选做)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号