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

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

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

具体代码如下:

#include <stdioh>

#include <stdlibh>

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=1900;i<=y;i++)  //计算闰年的个数

{

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

r++;

}

for(i=0;i<m-1;i++)  //统计当年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 <stdioh>

void main ()

{

int y,m,d,c,s,w;

printf("请输入8位年月日,以空格隔开:");

scanf("%d%d%d",&y,&m,&d);

if (m==1) c=d;

else if (m==2) c=31+d;

else if (m==3) c=31+28+d;

else if (m==4) c=31+28+31+d;

else if (m==5) c=31+28+31+30+d;

else if (m==6) c=31+28+31+30+31+d;

else if (m==7) c=31+28+31+30+31+30+d;

else if (m==8) c=31+28+31+30+31+30+31+d;

else if (m==9) c=31+28+31+30+31+30+31+31+d;

else if (m==10) c=31+28+31+30+31+30+31+31+30+d;

else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;

else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;

if (m>2)

{if (y%100==0) {if (y%400==0) c=c+1;}

else if (y%4==0) c=c+1;}

s=(y-1)365+(y-1)/4-(y-1)/100+(y-1)/400+c;

w=s%7;

switch (w)

{

case 0: printf("星期日");break;

case 1: printf("星期一");break;

case 2: printf("星期二");break;

case 3: printf("星期三");break;

case 4: printf("星期四");break;

case 5: printf("星期五");break;

case 6: printf("星期六");break;

printf("\n");

}

}

当然后面switch语句可用更简单的办法替换。。。如果你需要

# include <stdioh>

int main(void)

{

struct date {

int day;

int month;

int year;

} theDate;

int daysPerMonth[13] = {

0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

printf("Please specify the date(mm dd YYYY): "); //输入格式: 月 日 年

scanf("%i%i%i", &theDatemonth, &theDateday, &theDateyear);

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

daysPerMonth[2] = 29;

if (theDateyear < 1900 || theDateyear > 2005 || theDatemonth < 1 || theDatemonth > 12 ||

theDateday < 1 || theDateday > daysPerMonth[theDatemonth]) {

printf("Sorry! bad input!\n");

return 1;

}

printf("Current month: ");

switch (theDatemonth) {

case 1:

printf("January");

break;

case 2:

printf("February");

break;

case 3:

printf("March");

break;

case 4:

printf("April");

break;

case 5:

printf("May");

break;

case 6:

printf("June");

break;

case 7:

printf("July");

break;

case 8:

printf("August");

break;

case 9:

printf("September");

break;

case 10:

printf("October");

break;

case 11:

printf("November");

break;

case 12:

printf("December");

break;

default:

printf(" ");

break;

}

printf("\nThank You!\n");

return 0;

}

/思路:我们可以划分成三个函数来写:输入参数的检测函数、计算闰年的函数和计算日期的函数;最后写个主程序就OK了/

//定义判断年份、月份和日期数据输入是否正确的函数

bool judgemonthday(int m,int d,bool r)

{

bool rmday;//判断数据输入,即月份和日期是否真确,rmday为真是真确,假为不正确

if(m<1 || m>12 || d<1 || d>31) {cout<<"数据输入错误。月份必须在1~12之间,日必须在1~31之间。"<<endl;rmday=false;}

else if(r==false && m==2 && d>28) {cout<<"该年不是闰年,因而2月份没有29号"<<endl;rmday=false;}

else if(r==true && m==2 && d>29) {cout<<"该年是闰年,但2月份没有30、31号"<<endl;rmday=false;}

else if((m==4 || m==6 || m==9 || m==11) && d==31) {cout<<m<<"月份没有31号"<<endl;rmday=false;}

else rmday=true;

return rmday;

}

//定义判断是否为闰年的函数

bool judgeyear(int y)

{

bool r;//r为真,即为闰年,r为假不为闰年

if(y%4==0 && y%100!=0) r=true;

else if(y%400==0) r=true;

else r=false;

return r;

}

//定义计算当前日期是该年第几天的函数

int nday(int month,int day,bool r)

{

int i,s=0;

for (i=1;i<month;i++)

switch(i)

{

case 1: case 3: case 5: case 7: case 8: case 10:case 12:s+=31;break;

case 4: case 6: case 9: case 11: s+=30;break;

case 2:{if (r) s+=29;else s+=28;break;}

}

return s+day;

}

//主程序

# include <iostreamh>

void main()

{

bool judgeyear(int y);//声明判断是否为闰年的函数

bool judgemonthday(int m,int d,bool r);//声明判断数据输入是否正确的函数

int nday(int m,int d,bool r);//声明计算日期的函数

int year,month,day,n;

bool ryear,rmd;//ryear是用来判断该年是否为闰年,rmd是用来判断输入的月份值、日值是否正确。

cout<<"请输入日期的年、月、日的值:";

cin>>year>>month>>day;

ryear=judgeyear(year);

rmd=judgemonthday(month,day,ryear);

if(rmd)//只有数据输入正确的情况下,才进行计算

{

n=nday(month,day,ryear);

cout<<year<<"年"<<month<<"月"<<day<<"日是"<<year<<"年的第"<<n<<"天。"<<endl;

}

}

程序试运行结果:

请输入日期的年、月、日的值:2000 3 1

2000年3月1日是2000年的第61天。

import javautil;

public class A

{

public static void main(String[] args)

{

int[] a=new int[]{5,2,9};

int min=a[0];

for(int i=0;i<alength;i++)

{

if(min>a[i])

{

min=a[i];

}

}

Systemoutprintln("最小值是:"+min);

}

}

以上就是关于C语言程序,输入年月日算出当天星期几全部的内容,包括:C语言程序,输入年月日算出当天星期几、C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出。、编写一个C语言程序,用结构存储日期信息(日、月、年),等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10073980.html

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

发表评论

登录后才能评论

评论列表(0条)

保存