先做一个函数,计算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语言程序,用结构存储日期信息(日、月、年),等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)