c语言编程软件下载 给一个1900年及其以后的年月日日期,求这一天是星期几

输入任意一个日期的年、月、日的值,求出是星期几并输出。
[问题点数:40分]
输入任意一个日期的年、月、日的值,求出是星期几并输出。
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年5月 专题开发/技术/项目大版内专家分月排行榜第二2010年3月 C/C++大版内专家分月排行榜第二
2012年4月 Linux/Unix社区大版内专家分月排行榜第三2011年7月 Linux/Unix社区大版内专家分月排行榜第三2010年2月 C/C++大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第二
2010年6月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|文档分类:
c语言课程设计报告之万年历毕业设计.doc
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
下载文档到电脑,查找使用更方便
还剩?页未读,继续阅读
该用户其他文档
下载所得到的文件列表c语言课程设计报告之万年历毕业设计.doc
文档介绍:
《C 语言课程设计》课程设计中南民族大学计算机科学学院计算机科学与技术专业学号:
姓名:卢唯 1 万年历一、目的根据所学知识,编写指定题目的 C 语言程序,并规范地完成课程设计报告。通过课程设计, 加深对《C 语言程序设计》课程所学知识的理解, 熟练掌握和巩固 C 语言的基本知识和语法规范, 包括: 数据类型( 整形、实型、字符型、指针、数组、结构等); 运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等) ;程序结构(顺序结构、判断选择结构、循环结构) ;库函数应用(时间函数、绘图函数以及文件的读写操作函数等) ;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。学会编制结构清晰、风格良好、数据结构适当的 C 语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。二、需求分析 1 、程序运行之前,给出友好菜单界面,包括菜单项和输入提示。 2、对于要求一: 用户输入一个四位数, 代表的是输入年份, 则根据要求输出该年份对应的年历信息。 3、对于要求二: 用户输入某一个 6 位的数字, 代表输入的是年份和月份, 则根据要求输出该月份对应的月历信息。 4、对于要求三: 用户输入某一个 8 位的数字, 代表输入的是年份、月份和日期, 则根据要求输出这一天是星期几,距离今天有多少天。三、概要设计 1 .本程序包含八个模块: (1 )主程序模块: main(){ 定义以及初始化; 获得系统时间并用全局变量记录下来; 调用菜单等函数; 对输入的数字进行判断,并将之转换成相应的代表的年月日然后进行判断用户的具体要求。《C 语言课程设计》课程设计中南民族大学计算机科学学院计算机科学与技术专业学号:
姓名:卢唯 2 }(2 )菜单函数模块: void caidan() { 这是一个返回值为空的函数,主要进行打印的任务。}(3 )打印月历的函数之一: void print_yueli_1(int year,int month) { 返回值为空类型的有两个参数的函数; 这里的 year 接收主函数输入的 number 转换而来的年份, month 接收主函数 numbe r 转换而来的月份; 函数主要是打印日历中的月历。}(4 )打印月历的函数之二: void print_yueli_2(int year,int month) { 同样是返回值为空类型的有两个函数入口的函数; 接收的值来源和类型和上一个函数一样, 之所以设置两个打印月历的函数是因为任务书要求分为两部分打印,故有了两个答应月历的函数。}(5 )控制输出时位置(或坐标)的函数: void change_position (int x,int y) { 便于打印年历时光标的顺利移动; X ,Y 相当于横纵坐标。}(6 )获得 8 位数从而得到具体是哪一天的函数: int give day(int year,int month,int day) { 《C 语言课程设计》课程设计中南民族大学计算机科学学院计算机科学与技术专业学号:
姓名:卢唯 3 获取三个参数从而利用数学计算公式算得具体的星期信息; 该函数中用到了 for 循环便于更好的判断输入的代表的是星期几; 该返回值的类型为 int 型。}(7 )判断是否为闰年的函数: int runnian(int year) { 本函数主要依据判断闰年的公式; 函数期间定义了一个标志变量来进行判断是否为闰年; 该函数有一个形参对应 year ,一个味 int 类型的返回值。}(8 )计算输入的日期距离现在相差多少天的函数: long int sumofdays(int thyear,int thmonth,int thday) { 函数的形参用您要查询的日期替换; 分为当前日期大于和小于输入的日期两种情况; 分别按年,月,日计算对应的天数差值,并累加; 返回计算的总差值。} 四、详细设计/* 万年历*/ #include&stdio.h& /* 定义头文件*/ #include&time.h& /* 日期和时间头文件*/ #include&windows.h& int year,month, /* 使用全局变量记录当前的年月日*/ int 《C 语言课程设计》课程设计中南民族大学计算机科学学院计算机科学与技术专业学号:
姓名:卢唯 4 daysofmonth[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,3 1,31,30,31, 30,31}}; int position_of_ /* 使用控制光标位置的纵坐标*/ void caidan(); /* 菜单函数*/ void change_position(int x,int y); /* 利用坐标将光标的位置移动*/ void print_yueli_1(int year,int month); /* 打印 1~6 月的月历*/ void print_yueli_2(int year,int month); /* 打印 7~12 月的月历*/ int runnian(int year); /* 判断闰年*/ int giveday(int year,int month,int day); /* 获取某年某月某日是星期几*/ long int sumofdays(int thyear,int thmonth,int thday); /* 计算输入年月日距离现在相差多少天*/ struct tm* getDay() /* 利用结构体从系统取得当前时间,在#include&time.h& 里面*/{ time_ struct tm* time(&timer); gmt=localtime(&timer); } int main() { 《C 语言课程设计》课程设计中南民族大学计算机科学学院计算机科学与技术专业学号:
姓名:卢唯 5 char reply = 'y'; do { system(&cls&); /* 清屏,在#include&windows.h& */ struct tm *gmt=getDay(); int the_month, the_year, the_day, /* 记录输入的数字:四位,六位或八位*/ year = gmt-&tm_year+1900; /* 引用结构体成员, 用于记录系统的当前年*/ month = gmt-&tm_mon+1; /* 引用结构体成员,用于记录系统的当前月*/ day = gmt-&tm_ /* 引用结构体成员, 用于记录系统的当前日*/ caidan(); scanf(&%ld&,&number); getchar(
内容来自淘豆网www.taodocs.com转载请标明出处.
文件大小:0 KB
下载次数:已知某天是星期几,求任意给定的日期是星期几
#includestd相关信息.hintisLeapYea(intyea){if((yea%4==0&&yea%100!=0)||(yea%100==0)&&(yea%3200!=0))etun1;elseetun0;}intmain(){loop2:inta[12]={1,0,1,0,1,0,1,1,0,1,0,1};intweekDay,c,y,intyea,month,chak;pintf("请按年月日格式输入(如1949101):"); ("%d%d%d",&yea,&month,&day);判断输入的年月日是否正确if(yea0){pintf("年份不能为负数!请重输:");}elseif(month1||month12){pintf("输入月份只能在1-12之间!请重输:");}elseif(day1||day31){pintf("日的最大范围只在1-31之间!请重输:");}elseif(month==2&&day29){pintf("二月没有%d日!请重输:",day);}elseif(month==2){if(!isLeapYea(yea)&&day==29){pintf("该年不是闰年,二月没有29日!请重输:");}}elseif(!a[month-1]&&day==31){pintf("%d月是小月,没有31日!请重输:",month);}蔡勒(Zelle)公式:w=y+[y4]+[c4]-2c+[26(m+1)10...
#includestd相关信息.hintisLeapYea(intyea){if((yea%4==0&&yea%100!=0)||(yea%100==0)&&(yea%3200!=0))etun1;elseetun0;}intmain(){loop2:inta[12]={1,0,1,0,1,0,1,1,0,1,0,1};intweekDay,c,y,intyea,month,chak;pintf("请按年月日格式输入(如1949101):"); ("%d%d%d",&yea,&month,&day);判断输入的年月日是否正确if(yea0){pintf("年份不能为负数!请重输:");}elseif(month1||month12){pintf("输入月份只能在1-12之间!请重输:");}elseif(day1||day31){pintf("日的最大范围只在1-31之间!请重输:");}elseif(month==2&&day29){pintf("二月没有%d日!请重输:",day);}elseif(month==2){if(!isLeapYea(yea)&&day==29){pintf("该年不是闰年,二月没有29日!请重输:");}}elseif(!a[month-1]&&day==31){pintf("%d月是小月,没有31日!请重输:",month);}蔡勒(Zelle)公式:w=y+[y4]+[c4]-2c+[26(m+1)10]+d-1loop3:if(month==1||month==2){month+=12;yea--;}y=yea%100;c=yea100;temp=y+y4+c4-2*c+26*(month+1)10+day-1;while(temp0){temp+=7;}weekDay=temp%7;pintf("\n\n那天正逢星期");switch(weekDay){case0:pintf("日");case1:pintf("一");case2:pintf("二");case3:pintf("三");case4:pintf("四");case5:pintf("五");case6:pintf("六");}pintf("\n\n\n");pintf("退出程序吗?(yn)\n\n");dok=getcha();while(k!='y'&&k!='n'&&k!='Y'&&k!='N');if(k=='y'||k=='Y');elsegotoloop2;}
找个懂电脑的帮你吧,他们懂行
下面的代码采用一维数组存储阶乘后的数据,每个元素只存储一位数字。数组的0下标元素,存储长整数的位数。例如:5!=120,存储形式为:3 0 2 1 ...
int main()
char a[100]="";
char c='';
char * p=a;
char * q=a;
while(!(asd='e'||'E'));本身就是一个错误。“=”是赋值号,“==”才是条件判断符,而且不能||'E' 这么写,这么写的话就只能相当于(as...
switch (表达式或属性){
case 值1 : 语句1
值2 : 语句2
答: 要是讲课的话,受限得让大家明白什么事清洁生产,清洁生产的重要性。十二五以来,国家确定了清洁生产的重要意义,从源头削减污染物,生产过程、服务、产品使用过程中减少污...
答: 网络技术和应用的快速发展,也使得软件技术呈现出网络化、服务化与全球化的发展态势
答: 分享个:P2P终结者软件~就挺厉害的~
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区Posts - 282,
Articles - 0,
Comments - 0
15:15 by kingshow, ... 阅读,
在前面,我们分别利用泰勒公式和C标准库中的mktime()函数推算了某个特定日期所对应的星期几,刚做完这些,就又遇到了一个与日期相关的新任务:
老板把每个月例会的时间定在了每个月的第一个星期一,他让我把具体日期整理出来,发给每一个成员,提醒大家准时参加。
简单地讲,也就是把每个月的第一个星期一对应的日期提取出来。如果时间范围比较短(比如一年),自己翻翻日历勉强也能解决,如果要是时间范围比较长(比如十年),再去一个个翻日历,就麻烦了。怎么办?
还记得我们在中所认识和体会到的:
程序,就是用来帮助人们完成这些看起来枯燥繁琐但是带有一定规律性的事情的。
面对这个麻烦而又有一定规律的问题,我们同样可以用C语言写个程序来解决。
如何解决呢?想想我们是如何在日历中找出每个月的第一个星期一的?我们先用1月份的第一个星期一作为起点,然后以七天为一个间隔,查看下一个星期一的日期,如果是新的一个月的星期一,则输出,如果在已经输出的这个月,则继续加上7天向下寻找,知道找完这一年为止。
基本思路就是这样,但是,我们这里还用到了mktime()函数的一个特点,也就是如果输入的分解时间的日期tm_mday超出了其取值范围[0,30],mktime()会将其折算成相邻月份的日期,比如,某个月的tm_mday 为32,而这个月只有30天,mktime()会将其视作下个月的第二天,而不会将其视作日期错误。利用这个特性,我们就可以通过递增tm_mday完成整个一年的遍历访问量了。
按照上面分析的思路,我们可以将其实现如下:
#include &string.h&
#include &time.h&
#include &stdio.h&
#include &stdbool.h&
int main()
memset(&,0,sezeof(t));
//用年月日填充分解时间t
//这里指定1月中的第一个星期为起点
t.tm_year = 2013 - 1900; // 年份,减去起始年份
t.tm_mon = 1 - 1; // 月份
t.tm_mday = 7;
// 日是1月份的第一个星期一
puts("the first mondays in 2013 are");
// 记录已经输出的月份
int lastmon = -1;
while(true)
//将分解时间t转换为日历时间ct
time_t ct = mktime(&t);
if(-1 == ct) //日期错误
//用localtime()函数获取日历时间ct对应的分解时间
struct tm* bt = localtime(&ct);
//判断是否在2013年内
if(bt-&tm_year != 2013-1900)
//判断这个星期一是否是本月的第一个星期一
if(t.tm_mon != lastmon)
//如果是,输出对应的日期
printf("%d - %d\n",bt-&tm_mon+1,bt-&tm_mday);
//记录本月已经输出
lastmon = bt-&tm_
//更新日期
t.tm_mday += 7; //检查下一个星期一
利用这个函数,我们可以轻松地得到2013年的每个月的第一个星期一对应的日期,可以圆满向老板交差了。
the first mondays in 2013 are
1 & 7, 2 & 4, 3 & 4, 4 & 1, 5 & 6, 6 & 3
7 & 1, 8 & 5, 9 & 2, 10 & 7, 11 & 4, 12 & 2}

我要回帖

更多关于 c语言编程实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信