程序设计C 实验二 题目三 计算生日是星期几(0078)
2017-10-19 13:51
176 查看
Description
输入一个日期,包括年、月、日。(一组测试数据)
Input
输出这个日期是星期几。
Output
Sample Input
Sample Output
1、 已知公元1 年1 月1 日是星期一 2、 算法提示:如果输入的是2006 年3 月12 日,计算方法是 (1) 先计算从公元0001 年初(0001-1-1)到2005 年末(2005-12-31)共多少天,注意其中 有闰年,闰年是366 天,平年是365 天。闰年的判断条件满足(见教材例3.8 题): (( year%4==0 && year%100!=0 )||(year%400==0)) (2) 然后再计算2006
年1 月1 日到2006-3-12 是多少天。注意同样判断本年度是否闰年, 即二月份是28 天还是29 天。 (3) 上述两部分相加即从公元0001 年初(0001-1-1)到2006 年末(2006-3-12)的天数, 用该天数模7(total%7)即得到星期数。
#include <stdio.h>
int main() {
int year = 0,month = 0,day = 0;
int leap = 0,noleap = 0;
int days_1 = 0,days_2 = 0;
int w = 0,days = 0;
scanf("%d %d %d",&year,&month,&day);
int i;
for (i = 1;i < year;i++) { //判断是否闰年
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
leap ++;
} else {
noleap ++;
}
}
days_1 = leap * 366 + noleap * 365;
//判断year年是否闰年
int j;
for (j = 1;j < month;j++) {
switch (j) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: days_2 += 31;break;
case 4:
case 6:
case 9:
case 11:days_2 += 30;break;
case 2: if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
days_2 += 29;
else
days_2 += 28;
break;
}
}
days = days_1 + days_2 + day;
w = days % 7;
switch (w) {
case 0:printf("Sunday\n");break;
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n");break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
}
return 0;
}
输入一个日期,包括年、月、日。(一组测试数据)
Input
输出这个日期是星期几。
Output
1 2 3 | 1 1 1 2 1 1 2006 7 10 |
1 2 3 | Monday Tuesday Monday |
1、 已知公元1 年1 月1 日是星期一 2、 算法提示:如果输入的是2006 年3 月12 日,计算方法是 (1) 先计算从公元0001 年初(0001-1-1)到2005 年末(2005-12-31)共多少天,注意其中 有闰年,闰年是366 天,平年是365 天。闰年的判断条件满足(见教材例3.8 题): (( year%4==0 && year%100!=0 )||(year%400==0)) (2) 然后再计算2006
年1 月1 日到2006-3-12 是多少天。注意同样判断本年度是否闰年, 即二月份是28 天还是29 天。 (3) 上述两部分相加即从公元0001 年初(0001-1-1)到2006 年末(2006-3-12)的天数, 用该天数模7(total%7)即得到星期数。
#include <stdio.h>
int main() {
int year = 0,month = 0,day = 0;
int leap = 0,noleap = 0;
int days_1 = 0,days_2 = 0;
int w = 0,days = 0;
scanf("%d %d %d",&year,&month,&day);
int i;
for (i = 1;i < year;i++) { //判断是否闰年
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
leap ++;
} else {
noleap ++;
}
}
days_1 = leap * 366 + noleap * 365;
//判断year年是否闰年
int j;
for (j = 1;j < month;j++) {
switch (j) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: days_2 += 31;break;
case 4:
case 6:
case 9:
case 11:days_2 += 30;break;
case 2: if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
days_2 += 29;
else
days_2 += 28;
break;
}
}
days = days_1 + days_2 + day;
w = days % 7;
switch (w) {
case 0:printf("Sunday\n");break;
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n");break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
}
return 0;
}
相关文章推荐
- 程序设计C 实验二 题目一 计算员工周工资(0077)
- 程序设计C 实验三 题目四 数字根的计算(0284)
- 程序设计C 实验五 题目二 班级课程成绩计算(0617)
- 数学方法计算蓝桥杯生日蜡烛题目
- C++程序设计实验报告(十二)----计算sin和cos的近似值
- 数学与计算机学院程序设计实验报告实验题目用函数实现字符串排序
- 程序设计C 实验三 题目二 距阵相乘(0074)
- 程序设计C 实验三 题目二 距阵相乘(0074)
- 程序设计就跟我们平时头脑想的是一样的[如何按生日的年月日计算年龄(周岁)]
- 程序设计C 实验三 题目八 one + two = 3(0287)
- 程序设计C 实验三 题目六 统计出现最多次的字母(0288)
- 程序设计C 实验三 题目五 求二阶逆矩阵(0285)
- 计算生日是星期几
- 程序设计C 实验四 题目四 求组合数(0082)
- 程序设计C 实验三 题目六 统计出现最多次的字母(0288)
- C++程序设计实验报告(十六)----用循环控制语句编写程序,完成表达式的计算
- 程序设计C 实验五 题目五 一维动态数组的应用(0293)
- 程序设计C 实验四 题目一 排序查找(0616)
- 程序设计C 实验五 题目四 二维动态数组转置(0294)
- 设计一个计算生日是星期几的程序