C语言程序,输入年月日算出当天星期几

C语言程序,输入年月日算出当天星期几,第1张

先做一个函数,计算1900年1月1日到该天的天数,然后用膜除求出星期几并输出。

具体代码如下:

#include <stdio.h>

#include <stdlib.h>

int Day(int y,int m,int d)

int main(int argc, char *argv[]) {

int i  //循环变量

int year,month,day  //读取用户输入的年月日

int days  //储存从1900-1-1到该天的天数

int week=0  //储存求余后的星期

//字符串组合输出星期

char b[]={"星期"}

char c[7][4]={"日","一","二","三","四","五","六"}

loop:printf("请输入年 月 日:(空格分隔)\n")

scanf(" %d%d%d",&year,&month,&day)

days=Day(year,month,day)

//增强程序的健壮性

if(days==-1)

{

printf("输入格式有误,")

fflush(stdin)  //防止用户输入字母等其他非数字字符

goto loop

}

else

{

week=days%7  //用求余计算星期几

printf("%d年%d月%d日是%s%s\n",year,month,day,b,c[week])

}

system("pause")

return 0

}

//函数功能:输入年月日,输出1900-1-1到该天的天数,-1位输入不合法

int Day(int y,int m,int d)

{

int i

int r=0  //储存1900到该天的闰年个数

int a[]={31,28,31,30,31,30,31,31,30,31,30} //m给每出月的天数

if(y>=1900 && m>0 && m<13 && d>0 && d<32)

{

for(i=1900i<=yi++)  //计算闰年的个数

{

if(i%400==0||i%100!=0&&i%4==0)

r++

}

for(i=0i<m-1i++)  //统计当年1月1日到当月的天数

{

d+=a[i]

}

if((y%400==0||y%100!=0&&y%4==0)&&m<3)  //如果当年是闰年但不到二月就不能算进去

r--

return 365*(y-1900)+r+d

}

else

return -1

}

#include<stdio.h>

int isRn(int num){

if((num%4==0&&num%400!=0)||num%400==0){

return 1

}else{

return 0

}

int monthDay(int year,int month){

if(month==1||month==3||month==5

||month==7||month==8||month==10

||month==12){

return 31

}else if(month==4||month==6||month==9

||month==11)

{

return 30

}else if(month==2){

if(isRn(int num)==1){

return 29

}else{

return 28

}

}

}

void main(){

int sum=0,year,month,day,i,temp,j

printf("请输入年份:")

scanf("%d",&year)

while(year<1900){

printf("年份必须从1900年开始!\n\n")

printf("请输入年份:")

scanf("%d",&year)

}

printf("请输入月份:")

scanf("%d",&month)

while(month<1||month>12){

printf("月份必须是1到12之间!\n\n")

printf("请输入月份:")

scanf("%d",&month)

}

printf("请输入日:")

scanf("%d",&day)

while(day>monthDay(year,month)||day<1){

printf("日必须从1开始,并且不能大于该月的天数!\n\n")

printf("请输入日:")

scanf("%d",&day)

}

temp=month

temp-=1

for(i=1900i<=yeari++){

for(j=1j<=12j++){

if(i==year&&j==temp){

break

}

sum+= monthDay(year,j)

}

}

sum+=day

printf("%d年%d月%d日,是星期",year,month,day)

if(sum%7==0){

printf("日。\n")

}else if(sum%7==1){

printf("一。\n")

}else if(sum%7==2){

printf("二。\n")

}else if(sum%7==3){

printf("三。\n")

}else if(sum%7==4){

printf("四。\n")

}else if(sum%7==5){

printf("五。\n")

}else if(sum%7==2){

printf("六。\n")

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12012191.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存