C语言的问题:根据输入的年月日,输出该日为该年度的第几周、第几天、星期几。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言的问题:根据输入的年月日,输出该日为该年度的第几周、第几天、星期几。相关的知识,希望对你有一定的参考价值。

C语言的问题:日历计算(不得使用C语言的日期库函数)
根据输入的年月日,输出该日为该年度的第几周、第几天、星期几。

如输入: 2007,12,1
则输出: 48z,335t,6xq

参考技术A //根据输入的年月日,输出该日为该年度的第几周、第几天、星期几。

//如输入: 2007,12,1
//则输出: 48z,335t,6xq
int date[12]=31,28,31,30,31,30,31,31,30,31,30,31;
#include<stdio.h>
int Check(int a,int b,int c);//判断输入的合法性
int CountWeek(int a,int b,int c);//判断第几周
int CountDay(int a,int b,int c);//计算第几天
int CountWeekday(int a,int b,int c);//计算星期几
int LeapYear(int a)int x=(!(a%4)&&(a%100)||!(a%400))?1:0;return x;
int main(void)

int year,month,day;
do
printf("请输入年,月,日:");
scanf("%d%d%d",&year,&month,&day);
//printf("%d\n",Check(year,month,day));
if(Check(year,month,day)!=0)
printf("你输入错误,请重新输入.\n");
while(Check(year,month,day)!=0);
printf("第%d周 第%d天 星期%d\n",CountWeek(year,month,day),CountDay(year,month,day),CountWeekday(year,month,day));
return 0;


int Check(int a,int b,int c)//如果输入的日期不合法,则返回1,否则返回0

if(a<=0||a>9999) return 1; //年输入不合法
else

if(b<=0||b>12) return 1; //月输入不合法
else

date[1]=(!(a%4)&&(a%100)||!(a%400))?29:28;
if(c<=0||c>date[b-1])
return 1;
else return 0;





int CountDay(int a,int b,int c)

int x=c;
int IsLeapYear=(!(a%4)&&(a%100)||!(a%400))?1:0;
if(IsLeapYear==1) date[1]=29;
for(int i=0;i<b-1;i++)

x+=date[i];

return x;

int CountWeek(int a,int b,int c)

int x;
if(CountDay(a,b,c)%7==0) x=CountDay(a,b,c)/7;
else x=CountDay(a,b,c)/7+1;
return x;

int CountWeekday(int a,int b,int c)

int i,x1,x2,y;
if(a<2007)

x1=LeapYear(a)?(366-CountDay(a,b,c)):(365-CountDay(a,b,c));
for(x2=0,i=a+1;i<2007;i++)
x2+=CountDay(i,12,31);
y=6-(x1+x2+1)%7;
if(y<0) y+=7;

else

x1=CountDay(a,b,c);
for(i=2007,x2=0;i<a;i++)
x2+=CountDay(i,12,31);
y=6+(x1+x2+1)%7;
if(y>7) y-=7;

return y;
本回答被提问者采纳

C语言 定义一个结构体变量(包括年月日),计算该日在本年中是第几天

#include <stdio.h>
struct
	int year;
	int month;
	int day;
date;
int main()
	int days;
	printf("input year,month,day:");
	scanf("%d,%d,%d",&date.year,&date.month,&date.day);
	switch(date.month)
		case 1:days=date.day; 	   break;
		case 2:days=date.day+31;   break;
		case 3:days=date.day+59;   break;
		case 4:days=date.day+90;   break;
		case 5:days=date.day+120;  break;
		case 6:days=date.day+151;  break;
		case 7:days=date.day+181;  break;
		case 8:days=date.day+212;  break;
		case 9:days=date.day+243;  break;
		case 10:days=date.day+273; break;
		case 11:days=date.day+304; break;
		case 12:days=date.day+334; break;
	
	if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)
		days+=1;
	printf("%d/%d is the %dth day in %d.",date.month,date.day,days,date.year);
	return 0;

以上是关于C语言的问题:根据输入的年月日,输出该日为该年度的第几周、第几天、星期几。的主要内容,如果未能解决你的问题,请参考以下文章

用C语言写一个函数,给出年月日,计算该日是该年的第几天

用C语言写一个函数,给出年月日,计算该日是该年的第几天

编程:要求输入某一年月日,判断其为该年的第几天?

C语言 定义一个结构体变量(包括年月日),计算该日在本年中是第几天

C语言 定义一个结构体变量(包括年月日),计算该日在本年中是第几天

YTUOJ-计算该日在本年中是第几天(用户自己定义类型)