先做一个函数,计算1900年1月1日到该天的天数,然后用膜除求出星期几并输出。
具体代码如下:
#include <stdio.h>#include <stdlib.h>
int Day(int y,int m,int d)
int main(int argc, char *argv[]) {
int i //循环变量
int year,month,day //读取用户输入的年月日
int days //储存从1900-1-1到该天的天数
int week=0 //储存求余后的星期
//字符串组合输出星期
char b[]={"星期"}
char c[7][4]={"日","一","二","三","四","五","六"}
loop:printf("请输入年 月 日:(空格分隔)\n")
scanf(" %d%d%d",&year,&month,&day)
days=Day(year,month,day)
//增强程序的健壮性
if(days==-1)
{
printf("输入格式有误,")
fflush(stdin) //防止用户输入字母等其他非数字字符
goto loop
}
else
{
week=days%7 //用求余计算星期几
printf("%d年%d月%d日是%s%s\n",year,month,day,b,c[week])
}
system("pause")
return 0
}
//函数功能:输入年月日,输出1900-1-1到该天的天数,-1位输入不合法
int Day(int y,int m,int d)
{
int i
int r=0 //储存1900到该天的闰年个数
int a[]={31,28,31,30,31,30,31,31,30,31,30} //m给每出月的天数
if(y>=1900 && m>0 && m<13 && d>0 && d<32)
{
for(i=1900i<=yi++) //计算闰年的个数
{
if(i%400==0||i%100!=0&&i%4==0)
r++
}
for(i=0i<m-1i++) //统计当年1月1日到当月的天数
{
d+=a[i]
}
if((y%400==0||y%100!=0&&y%4==0)&&m<3) //如果当年是闰年但不到二月就不能算进去
r--
return 365*(y-1900)+r+d
}
else
return -1
}
#include<stdio.h>int isRn(int num){
if((num%4==0&&num%400!=0)||num%400==0){
return 1
}else{
return 0
}
int monthDay(int year,int month){
if(month==1||month==3||month==5
||month==7||month==8||month==10
||month==12){
return 31
}else if(month==4||month==6||month==9
||month==11)
{
return 30
}else if(month==2){
if(isRn(int num)==1){
return 29
}else{
return 28
}
}
}
void main(){
int sum=0,year,month,day,i,temp,j
printf("请输入年份:")
scanf("%d",&year)
while(year<1900){
printf("年份必须从1900年开始!\n\n")
printf("请输入年份:")
scanf("%d",&year)
}
printf("请输入月份:")
scanf("%d",&month)
while(month<1||month>12){
printf("月份必须是1到12之间!\n\n")
printf("请输入月份:")
scanf("%d",&month)
}
printf("请输入日:")
scanf("%d",&day)
while(day>monthDay(year,month)||day<1){
printf("日必须从1开始,并且不能大于该月的天数!\n\n")
printf("请输入日:")
scanf("%d",&day)
}
temp=month
temp-=1
for(i=1900i<=yeari++){
for(j=1j<=12j++){
if(i==year&&j==temp){
break
}
sum+= monthDay(year,j)
}
}
sum+=day
printf("%d年%d月%d日,是星期",year,month,day)
if(sum%7==0){
printf("日。\n")
}else if(sum%7==1){
printf("一。\n")
}else if(sum%7==2){
printf("二。\n")
}else if(sum%7==3){
printf("三。\n")
}else if(sum%7==4){
printf("四。\n")
}else if(sum%7==5){
printf("五。\n")
}else if(sum%7==2){
printf("六。\n")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)