#include <stdio.h> typedef enum{Sun,Mon,Tue,Wed,Thu,Fri,Sat} Weekday; Weekday zeller(int y,int m,int d) { int c; Weekday w; c=y/100 ;y=y%100; w=(c/4-2*c+y+y/4+13*(m+1)/5+d-1)%7; return w; } int main() { int y,m,d,w; printf("请输入一个日期(yyyy-mm-dd):"); scanf("%d-%d-%d",&y,&m,&d); w=zeller(y,m,d); switch(w){ case Sun: printf("星期天\n");break; case Mon: printf("星期一\n");break; case Tue: printf("星期二\n");break; case Wed: printf("星期三\n");break; case Thu: printf("星期四\n");break; case Fri: printf("星期五\n");break; case Sat: printf("星期六\n"); } return 0; }zeller公式计算日期y-m-d对应的星期数w时,需要在m=1或2时,将月份变成上一年的13或14月,为此,需要更正实验步骤1中zeller函数,在第4行Weekday w;之后添加y和m的变换代码,请给出该代码。在实验第1步中,要显示main函数第6行w对应的星期名该如何做?
时间: 2024-03-20 20:41:00 浏览: 79
在第6行switch语句中,可以根据枚举类型的值进行判断,并输出对应的星期名称,例如:
```
switch(w){
case Sun: printf("星期天\n");break;
case Mon: printf("星期一\n");break;
case Tue: printf("星期二\n");break;
case Wed: printf("星期三\n");break;
case Thu: printf("星期四\n");break;
case Fri: printf("星期五\n");break;
case Sat: printf("星期六\n");
}
```
要更正实验步骤1中zeller函数,在第4行Weekday w;之后添加y和m的变换代码,可以如下实现:
```
Weekday zeller(int y,int m,int d) {
int c;
//将1月、2月看成上一年的13月、14月
if(m==1 || m==2){
m+=12;
y--;
}
c=y/100 ;y=y%100;
Weekday w=(c/4-2*c+y+y/4+13*(m+1)/5+d-1)%7;
return w;
}
```
相关问题
#include <stdio.h> typedef enum{Sun,Mon,Tue,Wed,Thu,Fri,Sat} Weekday; Weekday zeller(int y,int m,int d) { int c; Weekday w; c=y/100 ;y=y%100; w=(c/4-2c+y+y/4+13(m+1)/5+d-1)%7; return w; } int main() { int y,m,d,w; printf("请输入一个日期(yyyy-mm-dd):"); scanf("%d-%d-%d",&y,&m,&d); w=zeller(y,m,d); switch(w){ case Sun: printf("星期天\n");break; case Mon: printf("星期一\n");break; case Tue: printf("星期二\n");break; case Wed: printf("星期三\n");break; case Thu: printf("星期四\n");break; case Fri: printf("星期五\n");break; case Sat: printf("星期六\n"); } return 0; }要显示main函数第6行w对应的星期名该如何做
在main函数第6行调用zeller函数后,根据返回的星期数w,可以使用switch语句输出对应的星期名称,例如:
```
switch(w){
case Sun: printf("星期天\n");break;
case Mon: printf("星期一\n");break;
case Tue: printf("星期二\n");break;
case Wed: printf("星期三\n");break;
case Thu: printf("星期四\n");break;
case Fri: printf("星期五\n");break;
case Sat: printf("星期六\n");break;
}
```
这样就可以根据zeller函数计算得到的星期数,输出对应的星期名称了。
阅读全文