小于哥的鱼干


私信TA

用户名:yuhui1207

访问量:16846

签 名:

在人间已是巅,何苦要上青天

等  级
排  名 399
经  验 4873
参赛次数 2
文章发表 32
年  龄 24
在职情况 在职
学  校 常熟理工
专  业

  自我简介:

解题思路:

        该题说白了就是求明年的今天是星期几。

        闰年,共366天
        平年,共365天

        比如17年8月16到18年8月16就过去了365天,到19年8月16就是730天,以此类推,一个星期七天,            如果这个数字能被7整除,那就是那一年没错啦;

        

        注意事项:

        分三种情况  a. 2月28号之前(从当年判断是否为闰年)

                           b.3月1号之后(从下一年判断是否为闰年)

                           c. 输入的刚好是闰年的2月29日(非得闰年才有这一天)



参考代码:

#include <stdio.h>
int runnian(int year);
int runnian(int year)            //判断闰年
{
	if((year%4==0)&&(year%100!=0)||(year%400==0))
		return 366;
	else
		return 365;

}
int main()
{
	
	int t,sum=0;
	int i;
	int year,mounth,day;
	char arr[10000][11];            //存储几组数据
	scanf("%d",&t);
	for(i=0;i<t;i++)
	{
		scanf("%s",arr[i]);
	}
	for(i=0;i<t;i++)            //从字符串中分离出我们需要用到的 年 月 日等信息
	{
		sum=0;
		year=(arr[i][0]-'0')*1000+(arr[i][1]-'0')*100+(arr[i][2]-'0')*10+(arr[i][3]-'0');
		mounth=(arr[i][5]-'0')*10+(arr[i][6]-'0');
		day=(arr[i][8]-'0')*10+(arr[i][9]-'0');
	
	    while(1)
	        {
		
		        if(mounth<=2&&day<29)        //2月28之前
		        {
					sum+=runnian(year);
					if(sum%7==0)
					{
			    	    printf("%d\n",year+1);
			    	    break;
					}
					else
				    year++;
		        }
		        else if(mounth==2&&day==29)  //2月29当天
		        {
					sum+=runnian(year+1);
					if(sum%7==0&&runnian(year+1)==366)
					{
						printf("%d\n",year+1);
						break;
					}
					year++;
		        }
		        else                    //3月1日之后
		        {
					sum+=runnian(year+1);
					if(sum%7==0)
					{
						printf("%d\n",year+1);
						break;
					}
					year++;
				}
			}
	}
	return 0;
	
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

这个有问题吧。2000-2-29会输出2006年
2022-08-14 16:40:49
  • «
  • 1
  • »