谁能帮我看看c语言代码?

#include<stdio.h>/*1.公元1年1月1日,是星期一2.累加至输入年份之前的所有年的天数3.总天数模7,0(星期日)---6(星期六)*/intcheck... #include<stdio.h>
/*1.公元1年1月1日,是星期一
2.累加至输入年份之前的所有年的天数
3.总天数模7,0(星期日)---6(星期六)
*/

int check_year(int year){//检查平年闰年函数

if((year%400==0)||(year%4==0&&year%100!=0)){
return 1;
}else{
return 0;
}
}

int week_f(int year){//返回xx年1月1日是星期几

if(year==1){
return 1;
}

int sum=0;
for(int i=1;i<year;i++){
if(check_year(i)==1){
sum=sum+366;
} else{
sum=sum+365;
}
}

//printf("sum=%d\n",sum);

return (sum+1)%7;
}

int month_run(int n){
switch(n){
case 1:return 31;
case 2:return 29;
case 3:return 31;
case 4:return 30;
case 5:return 31;
case 6:return 30;
case 7:return 31;
case 8:return 31;
case 9:return 30;
case 10:return 31;
case 11:return 30;
case 12:return 31;
}
}

int month_ping(int n){
switch(n){
case 1:return 31;
case 2:return 28;
case 3:return 31;
case 4:return 30;
case 5:return 31;
case 6:return 30;
case 7:return 31;
case 8:return 31;
case 9:return 30;
case 10:return 31;
case 11:return 30;
case 12:return 31;
}
}

///闰年输出函数
void run(int week){
int enter=0;//记录换行
int wee=week;
for(int i=1;i<=12;i++){//最外层遍历12个月

printf("------>%d月<------\n",i);
printf("日 一 二 三 四 五 六\n") ;//输出星期标头

for(int k=0;k<wee;k++){//输出空格
printf(" ");
enter++;
}

for(int j=1;j<=month_run(i);j++){//输出每月的天
if(enter%7==0){

printf("\n");
}
printf("%d ",j);
enter++;
}

wee=(wee+month_run(i))%7;
enter=enter-wee;

printf("\n\n\n");

}
}

///平年输出函数
void ping(int week){
int enter=0;//记录换行
int wee=week;
for(int i=1;i<=12;i++){//最外层遍历12个月
printf("------>%d月<------\n",i);
printf("日 一 二 三 四 五 六\n") ;//输出星期标头

for(int k=0;k<wee;k++){//输出空格
printf(" ");
enter++;
}

for(int j=1;j<=month_ping(i);j++){//输出每月的天
if(enter%7==0){
printf("\n");
}
printf("%d ",j);
enter++;
}

wee=(wee+month_ping(i))%7;
enter=enter-wee;

printf("\n\n\n");

}
}
int main(){
int year;
int week=0;
int sum=0;
printf("请输入年份:");
scanf("%d",&year);
week=week_f(year);

if(check_year(year)==1){
run(week);
} else{
ping(week);
}
return 0;
}
展开
 我来答
小王解优
2023-03-08 · 小小菜鸟,尽我所能,解你所忧
小王解优
采纳数:10 获赞数:15

向TA提问 私信TA
展开全部

这是一个输出某一年份日历的C语言程序。程序的主要思路是先计算输入年份的1月1日是星期几,然后按照每个月的天数输出整个年份的日历。程序中使用了两个函数来检查平年和闰年,并使用switch语句来输出每个月的天数。

以下是代码的一些详细解释和建议:

  • check_year函数:该函数用来检查一个年份是否是闰年。其中%运算符用来判断年份是否能够被4或者400整除,但不能被100整除。当函数返回1时,表示输入的年份是闰年,否则为平年。

  • week_f函数:该函数用来计算输入年份的1月1日是星期几。它首先遍历每一年,统计前面所有年的天数,然后再加上1,最后模7得到1月1日的星期几。例如,week_f(2019)将返回2,表示2019年1月1日是星期二。

  • month_run函数和month_ping函数:这两个函数用来返回每个月的天数,分别对应于闰年和平年。它们使用了switch语句来判断每个月有多少天。

  • run函数和ping函数:这两个函数用来输出整个年份的日历。它们都有一个参数week,表示输入年份的1月1日是星期几。每个函数都遍历12个月,输出每个月的日历。在输出日历之前,先输出星期标头,然后输出每个月的日期,需要计算每个月的起始位置,以及在星期六之后开始换行。

  • main函数:该函数是程序的主函数。它首先读取用户输入的年份,然后调用week_f函数来计算1月1日是星期几。如果输入的年份是闰年,调用run函数来输出日历;如果是平年,调用ping函数来输出日历。最后返回0表示程序正常结束。

  • 代码的可读性较好,建议继续保持并加以改进。例如,可以添加注释来解释代码的逻辑。此外,可以考虑使用更好的函数名来提高代码的可读性。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式