2000年一月一日是星期二,输入2000年的某月某日,输出是星期几?这个程序用c语言怎么写????
答案:3 悬赏:10
解决时间 2021-11-13 21:50
- 提问者网友:年齡太小℡蘿莉
- 2021-11-13 16:47
2000年一月一日是星期二,输入2000年的某月某日,输出是星期几?这个程序用c语言怎么写????
最佳答案
- 二级知识专家网友:陪伴是最长情的告白
- 2021-11-13 17:03
#include<stdio.h>
void main()
{
int i,n=0,month,day;
int month_day[]={31,29,31,30,31,30,31,31,30,31,30,31};
char str[7][10]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
printf("请输入月、日:");
scanf("%d%d",&month,&day);
for(i=1;i<month;i++)
n=n+month_day[i-1];
n=n+day;
n=(n+1)%7;
printf("2000年%d月%d日是%s\n",month,day,str[n]);
}
void main()
{
int i,n=0,month,day;
int month_day[]={31,29,31,30,31,30,31,31,30,31,30,31};
char str[7][10]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
printf("请输入月、日:");
scanf("%d%d",&month,&day);
for(i=1;i<month;i++)
n=n+month_day[i-1];
n=n+day;
n=(n+1)%7;
printf("2000年%d月%d日是%s\n",month,day,str[n]);
}
全部回答
- 1楼网友:一起来看看吧
- 2021-11-13 18:34
#include <stdio.h>
void main ()
{
int y,m,d,c,s,w;
printf("请输入8位年月日,以空格隔开:");
scanf("%d%d%d",&y,&m,&d);
if (m==1) c=d;
else if (m==2) c=31+d;
else if (m==3) c=31+28+d;
else if (m==4) c=31+28+31+d;
else if (m==5) c=31+28+31+30+d;
else if (m==6) c=31+28+31+30+31+d;
else if (m==7) c=31+28+31+30+31+30+d;
else if (m==8) c=31+28+31+30+31+30+31+d;
else if (m==9) c=31+28+31+30+31+30+31+31+d;
else if (m==10) c=31+28+31+30+31+30+31+31+30+d;
else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;
else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;
if (m>2)
{if (y%100==0) {if (y%400==0) c=c+1;}
else if (y%4==0) c=c+1;}
s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;
w=s%7;
switch (w)
{
case 0: printf("星期日");break;
case 1: printf("星期一");break;
case 2: printf("星期二");break;
case 3: printf("星期三");break;
case 4: printf("星期四");break;
case 5: printf("星期五");break;
case 6: printf("星期六");break;
printf("\n");
}
}
- 2楼网友:开心就好
- 2021-11-13 17:52
#include
#define size 31
void inputcheck(int,int,int);
int leayear(int);
main()
{
int year,month,day,d1,result,sum=0;
scanf("%d%d%d",&year,&month,&day);
inputcheck(year,month,day);
for(;year>1; year--)
{
if((year%4==0 && year%100!=0)||(year%400==0))
sum+=366;
else
sum+=365;
}
d1=leayear(month);
if((year%4==0 && year%100!=0) || (year%400==0))
{
result=(sum+d1+day)%7;}
else
{ if(month>2)
result=(sum+d1+day-1)%7;
else result=(sum+d1+day)%7;
}
switch(result)
{
case 1:printf("monday\n");break;
case 2:printf("tuesday\n");break;
case 3:printf("wedensday\n");break;
case 4:printf("thurfay\n");break;
case 5:printf("friday\n");break;
case 6:printf("saturday\n");break;
case 7:printf("sunday\n");break;
}
return 0;
}
int leayear(int m)
{
int t=0;
for(; m>1;m--)
{
switch(m)
{
case 2:
t+=29;
break;
case 4:
case 6:
case 9:
case 11:
t+=30;
break;
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
t+=31;break;
}
}
return t;
}
void inputcheck(int year,int month,int day)
{
if(year<0)
printf("input is wrong!\n");
else
{
switch(month)
{
case 2:
if(day>28 && (!((year%4==0 && year%100!=0) || (year%400==0))))
printf("input is wrong!\n");
if(day>29 && ((year%4==0 && year%100!=0) || (year%400==0)))
printf("input is wrong!\n");break;
case 4:
case 6:
case 9:
case 11:
if(day>30)
printf("input is wrong!\n");break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day>31)
printf("input is wrong!\n");
}
}
}
感觉应该加上判断输入数据是否合格的函数,即便没这个要求,我用测试数据1900 1 1试了试,我的结果是星期一,你的错误你来找吧
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯