當前位置:首頁 » 編程軟體 » 萬年歷編程

萬年歷編程

發布時間: 2025-06-26 06:07:41

① 萬年歷C語言編程全過程

#include<stdio.h>
#include<windows.h>
void main()
{
char ans;
do{
int year,month;//月份和年份
int days = 0;//月份總天數
int sum = 0;//天數總和
int first;//月份第一天
int month_sum[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
printf("請輸入年份:");
scanf("%d",&year);
printf("請輸入月份:");
scanf("%d",&month);
do
{
if(month < 1 || month > 12)
{
printf("輸入錯誤。請重新輸入:");
scanf("%d",&month);
}
else
{
break;
}
}while(1);
//判斷離1990-1-1多少天。
for(int i = 1900; i < year; i++)
{
if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
{
sum += 366;
}
else
{
sum += 365;
}
}
//判斷當年是不是閏年
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
month_sum[1] = 29;
}
//將月份總天數和年份總天數加起來
for(i = 1; i < month; i++)
{
sum += month_sum[i-1 ];
}
sum += 1;
//算出月份的第一天
first = sum % 7;
//輸入格式
printf("%d年%d月\n",year,month);
printf("\n------------------------------------------------------\n");
printf("日 一 二 三 四 五 六\n");
switch(first)
{
case 0:
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;
}
for(i = 1; i <= month_sum[month-1]; i++)
{
printf("%d",i);
if((first+i) % 7 == 0)
{
printf("\n");
}
else
{
printf("\t");
}
}
printf("\n");
printf("繼續?(y):");
fflush(stdin);
ans = getchar();
system("cls");
if(ans != 'Y' && ans != 'y')
{
break;
}
}while(1);
}

剛剛做好的,望採納,可以實現循環輸入。
另:每月的第一天是距1900年的總天數除以7的余數來決定的,

② 萬年歷查詢程序 功能要求: (1)提供菜單方式選擇 (2)輸入年份、月份、日期,計算得到的是這一天

計算得到的這一天是星期幾嗎?? 還是?/* welcome to use the WanNianLi system! */
#include<stdio.h>
#include<stdlib.h>
char* month_str[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

int leap (int year)//判斷閏年
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else return 0;
}
int month_day(int year,int month) //判斷這一個月有多少天
{
int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; //初始化每個月的天數
if(leap(year)&&month==2 )
return 29;
else
return(mon_day[month-1]);

}
int firstday(int year,int month,int day)//判斷這一個月的第一天是星期幾
{
int c=0;
float s;
int m;
for(m=1;m<month;m++)
c=c+month_day(year,m);
c=c+day;
s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400-40+c;
return ((int)s%7);
}
int PrintAllYear(int year)/*print the all year*/
{
int a,b;
int i,j=1,n=1,k;
for(k=1;k<=12;k++)
{
j=1,n=1;
b=month_day(year,k);
a=firstday(year,k,1);
printf("\n\n%s(%d)\n",month_str[k-1],k);
printf(" Sun Mon Tue Wed Thu Fri Sat \n**************");
if(a==7)
{
for(i=1;i<=b;i++)
{
printf("%4d",i);
if(i%7==0)
{
printf("**************\n**************");
}
}
}
if(a!=7)
{
while (j<=4*a)
{
printf(" ");
j++;
}
for(i=1;i<=b;i++)
{
printf("%4d",i);
if(i==7*n-a)
{
printf("**************\n**************");
n++;
}
}
}
printf("**************\n");
}
return 1;
}
int main()
{
int option,da;
char ch;
int year,month,day;
while(1)
{
printf("\n請選擇你所需要的服務:\n");
printf("\n輸入1求某個日期對應的星期");
printf("\n輸入2結束程序\n");
scanf("%d",&option);
switch(option)
{
case 1:
while(1)
{
printf("\nPlease input the year,month and day(XXXX,XX,XX):");
scanf("%d,%d,%d,%c",&year,&month,&day);
da=firstday(year,month,day);
printf("\n%d-%d-%d is %s,do you want to continue?(Y/N)",year,month,day,week[da]);
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 2:
fflush(stdin);
printf("Are you sure?(Y/N)");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
break;
default:
printf("\nError:Sorry,there is no this service now!\n");
break;
}
}
return 0;
}

熱點內容
android雙進程 發布:2025-06-26 12:28:05 瀏覽:123
ipfs存儲板塊怎麼樣 發布:2025-06-26 12:25:51 瀏覽:633
虛擬機linux配置網路 發布:2025-06-26 12:22:47 瀏覽:81
資料庫容災方案 發布:2025-06-26 12:22:10 瀏覽:736
awk命令交叉編譯 發布:2025-06-26 12:19:11 瀏覽:431
c語言doubleint 發布:2025-06-26 12:17:50 瀏覽:956
pdf拒絕訪問 發布:2025-06-26 11:50:36 瀏覽:516
解壓時出現需要下一壓縮分卷 發布:2025-06-26 11:32:55 瀏覽:406
mineoraft國際版伺服器地址 發布:2025-06-26 11:32:44 瀏覽:837
迷你世界怎麼從腳本獲得麒麟坐騎 發布:2025-06-26 11:32:07 瀏覽:448