當前位置:首頁 » 編程語言 » c語言萬年歷流程圖
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言萬年歷流程圖

發布時間: 2022-01-15 20:54:29

❶ 誰知道怎麼畫c語言萬年歷的流程圖

#include<stdio.h>
long int f(int year,int month)
{//f(年,月)=年-月,如月<3;否則,f(年,月)=年
if (month <3)
return year-1;
else return year;
}
long int g(int month)
{//g( 月)=月+13,如月<3;否則,g(月)=月+1
if(month<3)
return month + 13;
else
return month + 1;

}
long int n(int year,int month,int day)
{
return 1461L*f(year,month)/4+153L*g(month)/5+day;
}
int w(int year,int month,int day)
{
return(int) ((n(year,month,day)%7-621049L%7+7)%7);
}

int date[12][6][7];
int day_tbl[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};

int main()
{
int sw,leap,i,j,k,wd,day;
int year;
char title[]="SUN MON TUE WED THU FRI SAT";

printf("Please input the yewr whose calendar you want to know:");
scanf("%d%*c",&year);
sw=w(year,1,1);
leap=year%4==0&&year%100||year%400==0;//判斷閏年
for(i=0;i<12;i++)
for (j=0;j<6;j++)
for(k=0;k<7;k++)
date[i][j][k]=0;//將日期表置0
for(i=0;i<12;i++)//一年12個月
for(wd=0,day=1;day<=day_tbl[leap][i];day++)
{//將i+1月的日期填入日期表
date[i][wd][sw]=day;
sw=++sw%7;//每星期7天,以0~6計數
if (sw==0)
wd++;//日期表每七天一行,星期天開始新的一行

}

❷ c語言萬年歷程序圖中的getchar()的作用是什麼

圖上的這個程序寫錯了。
應該是:
getchar(); scanf("%c",&yn);
這里的getchar(); 是用於讀取上一次scanf("%d,%d,%d",&y,&m,&d);時遺留在鍵盤緩沖區中的回車符。如果沒有這個getchar(); 語句,或者照圖上的那樣(沒有起到應有的作用),就會使得變數yn必定只能讀到回車符,而讀不到y或n了。

❸ C語言萬年歷程序

出現無限遞歸的問題,我提供的頭文件是不會有這樣的問題的,請查看是否有遞歸調用的問題,同時,檢查項目設置屬性是否正確。

另附原始頭文件如下:

#ifndef_HELPER_H_
#define_HELPER_H_
voidShowMenu(void);//顯示菜單
voidGL2NL(void);//公歷轉農歷
voidNL2GL(void);//農歷轉公歷
voidRL(void);//顯示一個月的日歷
voidJQ(void);//節氣查詢
#endif//_HELPER_H_

❹ C語言程序設計萬年歷

int GetDays (int year,int month,int day)
{
int sum=0;
if (DateCheck(year,month,day)==0)
{
return -1;//日期有誤
}
if(year>=1901)
{
int X=(int)(year/100);//世紀數
int Y=X-(int)(X/4);//如果按4年一閏來算,Y指的是比實際上多算的天數,在下面需要減去
if (month<=2&&month>0)
{
year--;//把1月、2月視為上一年的13月、14月(純粹為了計算需要)
month+=12;
}
sum=(int)(365.25*(year-1900))+(int)(30.6*(month+1))+day-Y-49;//以365.25(本來實際太陽年是365.2425天)來計算是為了計算按4年一閏的整數年總天數,加上月份天數再加上餘下天數,減掉多閏天數,再減掉一個偏差值(多加的)
//月份以30.6天的平均值計算。最後減去的49,是多加的一個月以及其餘相差天數的和,可得到1900年1月1日的積日為0
}
return sum;//返回距離1900年1月1日的總天數(積日)
}

❺ 萬年歷(C語言編程)

#include<stdio.h>
#include<time.h>
int
leap
(int
year)//判斷閏年
{
if(year%4==0&&year%100!=0||year%400==0)
return
1;
else
return
0;
}
int
days_month
(int
month,int
year)//判斷月
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return
31;
if(month==4||month==6||month==9||month==11)
return
30;
if(month==2&&leap(year)==1)
return
29;
else
return
28;
}
int
firstday(int
month,int
year)//判斷年
{
int
w;
w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;
return
w;
}
main()
{
//調用系統時間
time_t
tval;
struct
tm
*now;
tval
=
time(NULL);
now
=
localtime(&tval);
printf("現在時間:
%4d年
%d月
%02d日
%d:%02d:%02d\n",
now->tm_year+1900,
now->tm_mon+1,
now->tm_mday,
now->tm_hour,
now->tm_min,
now->tm_sec);
//調用結束
int
i,j=1,k=1,a,b,month,year;
b=days_month(now->tm_mon+1,now->tm_year+1900);
a=firstday
(now->tm_mon+1,now->tm_year+1900);
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*k-a)
{
printf("\n");
k++;
}
}
}
printf("\n");
}

❻ c語言萬年歷程序

已經編譯運行確認過。

#include <stdio.h>
#include <stdlib.h>

int leap(int); /*判斷是否為閏年*/
int md(int m,int y); /*返回本月的天數*/
void prtweek(void); /*輸出表頭*/
int fw(int m,int y); /*返回本月一號是星期幾*/
void prtmonth(int m); /*輸出月份表頭*/
int main(void)
{
int y,m,i,test,week;
printf("請輸入您要查詢的年份: ");
scanf("%d",&y);
for (m=1; m<=12; m++) {
test=1;
prtmonth(m);
prtweek();
week=fw(m,y);
if (week!=6)
for (i=0; i<=week; i++) {
putchar('\t');
test++;
}
for (i=1; i<=md(m,y); i++,test++) {
printf("%d\t",i);
if (test%7==0) {
putchar('\n');
}
}
putchar('\n');

system("pause");//暫停,以便觀察輸出
}
return 0;
}
int leap(int y)
{
return (y%4==0&&y%100||y%400==0)?1:0;
}
int md(int m,int y)
{
int d;
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:d=31;break;
case 4:
case 6:
case 9:
case 11:d=30;break;
case 2:d=leap(y)?29:28;break;

}
return d;
}
void prtweek(void)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","Sun","Mon","Tue","Wed","Thur","Fri","Sat");
}
int fw(int m,int y)
{
int f;
if (m<3) {
m+=12;
y--;
}
f=(1+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return f;
}
void prtmonth(int m)
{
switch (m) {
default:
case 1:puts("===January===");break;
case 2:puts("===February===");break;
case 3:puts("===March===");break;
case 4:puts("===April===");break;
case 5:puts("===May===");break;
case 6:puts("===June===");break;
case 7:puts("===July===");break;
case 8:puts("===August===");break;
case 9:puts("===September===");break;
case 10:puts("===October===");break;
case 11:puts("===November===");break;
case 12:puts("===December===");break;
}
}

❼ 用c語言編寫一個萬年歷程序

#include <stdio.h> #include <stdlib.h> int leap(int); //判斷是否為閏年 int md(int m,int y); //返回本月的天數 void prtweek(void); //輸出表頭 int fw(int m,int y); //返回本月一號是星期幾 void prtmonth(int m); //輸出月份表頭 int main(int argc, char* argv[]) { int y,m,i,test,week; printf("Year:"); scanf("%d",&y); for (m=1; m<=12; m++) { test=1; prtmonth(m); prtweek(); week=fw(m,y); if (week!=6) for (i=0; i<=week; i++) { putchar('\t'); test++; } for (i=1; i<=md(m,y); i++,test++) { printf("%d\t",i); if (test%7==0) { putchar('\n'); } } putchar('\n'); system("pause");//暫停,以便觀察輸出 } return 0; } int leap(int y) { return (y%4==0&&y%100||y%400==0)?1:0; } int md(int m,int y) { int d; switch (m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:d=31;break; case 4: case 6: case 9: case 11:d=30;break; case 2:d=leap(y)?29:28;break; } return d; } void prtweek(void) { printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","Sun","Mon","Tue","Wed","Thur","Fri","Sat"); } int fw(int m,int y) { int f; if (m<3) { m+=12; y--; } f=(1+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; return f; } void prtmonth(int m) { switch (m) { default: case 1:puts("===January===");break; case 2:puts("===February===");break; case 3:puts("===March===");break; case 4:puts("===April===");break; case 5:puts("===May===");break; case 6:puts("===June===");break; case 7:puts("===July===");break; case 8:puts("===August===");break; case 9:puts("===September===");break; case 10:puts("===October===");break; case 11:puts("===November===");break; case 12:puts("===December===");break; } }

❽ 怎麼用C語言編寫萬年歷程序

我的空間里也有.TC版的.

❾ 用C語言怎麼編寫萬年歷

C語言編寫萬年歷的源代碼如下:

#include <stdio.h>

int week(int y,int m,int d);

int main()

{

char wk[7][3] = {{"天"},{"一"},{"二"},{"三"},{"四"},{"五"},{"六"}};

int year, month, day, w;

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

w = week(year, month, day);

printf("%d年%d月%d日 星期%s", year, month, day, wk[w]);

}

int week(int y,int m,int d)

{

static int r[13]={0,0,3,3,6,1,4,6,2,5,0,3,5};

int c,w;

y %= 400;

if ((y==0||y%4==0&&y%100!=0)&&m<3)

c = 5;

else

c = 6;

w = (y+y/4-y/100+r[m]+d+c)%7;

return w;

}

(9)c語言萬年歷流程圖擴展閱讀

電子時鍾C語言版的源代碼如下:

#include<stdio.h>

#include<time.h>

#include<string.h>

int main()

{

char str[50];

time_t t;

struct tm *nt;

while(1)

{

system("cls");//清屏函數

t=time(NULL);

nt=localtime(&t);

strftime(str,50,"%Y-%m-%d %H:%M:%S 「,nt);

printf("現在時刻:%s ",str);

}

getch();

return 0;

}