C语言大作业(仅供参考)
实验综合练习一
打印万年历
(1)已知公元1年1月1日是星期一,计算输入的年月日是星期几?编程如下:
#include
void main()
{
int i,year,month,day,day_of_year,day_of_month;
long sumday=0;
printf("请先输入年、月、日,中间以空格或换行符间隔:\n");
scanf("%ld%ld%ld",&year,&month,&day);
for(i=1;i<=year-1;i++)
{
if(i%400==0||i%100!=0&&i%4==0)
day_of_year=366;
else
day_of_year=365;
sumday=sumday+day_of_year;
}
for(i=1;i<=month-1;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
day_of_month=31;
else if(i==4||i==6||i==9||i==11)
day_of_month=30;
else if(i==2)
{
if(year%400==0||year%100!=0&&year%4==0)
day_of_month=29;
else
day_of_month=28;
}
sumday=sumday+day_of_month;
}
sumday=sumday+day;
i=sumday%7;
if(i==0)
i=7;
printf("%ld年%ld月%ld日是星期%d\n",year,month,day,i);
}
为了使输出的星期为大写且将星期7变成星期天,可作如下改动:#include
void main()
{
int i,year,month,day,day_of_year,day_of_month;
long sumday=0;
printf("请先输入年、月、日,中间以空格或换行符间隔:\n");
scanf("%ld%ld%ld",&year,&month,&day);
for(i=1;i<=year-1;i++)
{
if(i%400==0||i%100!=0&&i%4==0)
day_of_year=366;
else
day_of_year=365;
sumday=sumday+day_of_year;
}
for(i=1;i<=month-1;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
day_of_month=31;
else if(i==4||i==6||i==9||i==11)
day_of_month=30;
else if(i==2)
{
if(year%400==0||year%100!=0&&year%4==0)
day_of_month=29;
else
day_of_month=28;
}
sumday=sumday+day_of_month;
}
sumday=sumday+day;
i=sumday%7;
switch(i)
{
case 0: printf("%ld年%ld月%ld日是星期日",year,month,day); break;
case 1: printf("%ld年%ld月%ld日是星期一",year,month,day); break;
case 2: printf("%ld年%ld月%ld日是星期二",year,month,day); break;
case 3: printf("%ld年%ld月%ld日是星期三",year,month,day); break;
case 4: printf("%ld年%ld月%ld日是星期四",year,month,day); break;
case 5: printf("%ld年%ld月%ld日是星期五",year,month,day); break;
case 6: printf("%ld年%ld月%ld日是星期六",year,month,day); break;
}
printf("\n");
}
当然也可以这样编程:
#include
int leap_year(int year)
{
if(year%400==0 || year%100!=0 && year%4==0)
return 1;
else
return 0;
}
void main()
{
long year, month, day;
char *a[7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
printf("请先输入年、月份、日,中间以空格或换行符间隔:\n");
scanf("%ld%ld%ld",&year,&month,&day);
int i, xq=0,sumday=0;
for(i=1;i<=year-1;i++)
{
sumday=sumday+365+leap_year(i);
}
for(i=1;i<=month-1;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
sumday=sumday+31;
else if(i==4||i==6||i==9||i==11)
sumday=sumday+30;
else if(i==2)
sumday=sumday+28+leap_year(year);
}
sumday=sumday+day;
i=sumday%7;
printf("%ld年%ld月%ld日是%s\n",year,month,day,a[i]);
}
(2)输入年份,在屏幕上输出该年的年历(已知1900年第一天也是星期一)。#include
void main()
{
int year,i,j,k,sumday,yuandan,weekday,day,day_of_year,day_of_month;
printf("Please input the year:\n");
scanf("%d",&year);
printf("\n");
for(i=1,sumday=0;i<=year-1990;i++)
{
if(i%400==0||i%100!=0&&i%4==0)
day_of_year=366;
else
day_of_year=365;
sumday=sumday+day_of_year;
}
yuandan=(sumday+1)%7;
weekday=yuandan;
printf(" 公元%d年\n",year);
for(i=1;i<=12;i++)
{
printf(" %d月\n",i);
printf(" Sun Mon Tue Wed Thu Fri Sat\n");
for(j=0;j printf(" "); if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) day_of_month=31; else if(i==4||i==6||i==9||i==11) day_of_month=30; else if(i==2) { if(year%400==0 || year%100!=0 && year%4==0) day_of_month=29; else day_of_month=28; } day=day_of_month; for(k=1;k<=day;k++) { printf("%4d",k); weekday=(weekday+1)%7; if(weekday==0) printf("\n"); } printf("\n\n"); } } #include void main() { int year,i,j,k,sumday,yuandan,weekday,day,day_of_year,day_of_month; printf("Please input the year:\n"); scanf("%d",&year); printf("\n"); for(i=1,sumday=0;i<=year-1;i++) { if(i%400==0||i%100!=0&&i%4==0) day_of_year=366; else day_of_year=365; sumday=sumday+day_of_year; } yuandan=(sumday+1)%7; weekday=yuandan; printf(" 公元%d年\n",year); for(i=1;i<=12;i++) { switch(i) { case 1:printf(" January\n"); break; case 2:printf(" February\n"); break; case 3:printf(" March\n"); break; case 4:printf(" April\n"); break; case 5:printf(" May\n"); break; case 6:printf(" June\n"); break; case 7:printf(" July\n"); break; case 8:printf(" August\n"); break; case 9:printf(" September\n"); break; case 10:printf(" October\n"); break; case 11:printf(" November\n"); break; case 12:printf(" December\n");break; } printf(" Sun Mon Tue Wed Thu Fri Sat\n"); for(j=0;j printf(" "); if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) day_of_month=31; else if(i==4||i==6||i==9||i==11) day_of_month=30; else if(i==2) { if(year%400==0 || year%100!=0 && year%4==0) day_of_month=29; else day_of_month=28; } day=day_of_month; for(k=1;k<=day;k++) { printf("%4d",k); weekday=(weekday+1)%7; if(weekday==0) printf("\n"); } printf("\n"); } } 或者: #include void main() { int year,i,j,k,sumday,yuandan,weekday,day,day_of_year,day_of_month; cha*a[13]={"","January","February","March","April","May","June","July","Au gust","September","October","November","December"}; printf("Please input the year:\n"); scanf("%d",&year); printf("\n"); for(i=1,sumday=0;i<=year-1990;i++) { if(i%400==0||i%100!=0&&i%4==0) day_of_year=366; else day_of_year=365; sumday=sumday+day_of_year; } yuandan=(sumday+1)%7; weekday=yuandan; printf(" 公元%d年\n",year); for(i=1;i<=12;i++) { printf(" %s\n”,a[i]); printf(" Sun Mon Tue Wed Thu Fri Sat\n");