C语言 黑色星期五的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:06:06
/输入某年1月1日 输出一年中又是星期五又是13号的日子
#include<stdio.h>

//判断闰年的函数
int LeapYear(int y)
{
if(y % 4 != 0 || (y % 100 == 0 && y % 400 != 0 ))
return 0; //非闰
else
return 1; //是闰年
}

int BlackFirday(int y, int m, int d)
{
int count;
int i;
int month_13[12];
int dayofmonth[2][12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int date;

int LeapYear(int);

int date_13 = 13;

if((d + 12) % 7 == 5) //先判断第一个月的13号是不是星期五
count++;

if(LeapYear(y) == 0)
{
date_13 = date_13 + dayofmonth[0][11];

if(date_13 % 7 == 5)
{
count++;
date = month_13[i++];
}

}
else
{
date_13 = date_13 + dayofmonth[1][11];

if(date_13 % 7 == 5)
{
count++;
date = month_13[i++];

你的算法太乱了给你简单的自己研究吧:
#include "stdio.h"
#include "math.h"
main()
{int num,n,i,x;
int a[13]={0,12,43,71,102,132,163,193,224,255,285,316,346};/*非闰年对应的每个月13号到1月1号的天数,以下用到a[0]=0避免麻烦。多加一个数*/
int b[13]={0,12,43,72,103,133,164,194,225,256,286,317,347};};/*闰年对应的每个月13号到1月1号的天数,以下用到*/

for(i=1;i<12;i++)
{printf("input a year:\n");
scanf("%d",&num);
if(num % 4 != 0 || (num % 100 == 0 && num % 400 != 0 ))
{for(i=1;i<12;i++)
{if((365*num+(int)(num/4)-(int)(num/100)+(int)(num/400)+a[i])%7==5)/*判断i月的13号是不是星期5*/
printf ("month %d,day %d is black friday\n",i,13);
}}
else
{for(i=1;i<12;i++)
{if((365*num+(int)(num/4)-(int)(num/100)+(int)(num/400)+b[i])%7==5)
printf ("month %d,day %d is black friday\n",i,13);}}
}
}

好像挺复杂的