最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)萬年歷小程序

 更新時間:2019年10月30日 10:24:30   作者:gaobosky  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)萬年歷小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、雜談

大一學了C之后一直困惑,C到底怎么用?它不像HTML那么直觀,也沒有SQL那么常用,更沒有Java那么功能強大,那他為何還存在,并依然火熱呢?

答案很簡單:編程語言是一家,C語言結構簡單,但所蘊含的邏輯思維和其他語言大致相同,適合初學者。

編程不是一蹴而就,能力需要日積月累,推薦想我一樣的初學者,大家自己動手玩玩簡單的C程序!

二、萬年歷

像這樣一個簡單的全年日歷,仔細觀察不難發(fā)現(xiàn)由每個月的日歷組成,每個月有最多6行,占6周,每周7天;

程序如下:

設定日歷大?。?/p>

int date[12][6][7];  //12個月,每月最多6行,每行7天
int calendar[ ][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 year;
char title[]="SUN MON TUE WED THU FRI SAT";  //周幾
int sw,leap,i,j,k,wd,day;          //變量
// sw 周幾,leap 0平年 1閏年,i,j,k輔助變量,wd 第幾周,day 日

提示用戶輸入想要查詢的年份:(回車換行)

printf("Please input the year whose calendar you want to know: ");
scanf("%d%*c",&year);

 再計算該年1月1 日是起于周幾:

(由于公元1月1日設為星期六,故3月1日為星期三。為使算法達到最簡,故本算法以“星期”為計算單位。且選3月1日為基月。

每 4年(3個平年+1個閏年)共208周+5天 =208*7+5=1461
每百年共100*(208周+5天)-1天=5217周+5天 (整百年暫設為平年)
每400年共4*(5217周+5天)+1天(整400年閏)=20871周+0天
即400年一輪回!) 

long int getyear(int year,int month){
 if(month<3) return year-1;  //以元年3月為基石
 else return year;
}
long int getmonth(int month){
 if(month<3) return month+13; //將月份調至下個月
 else return month+1;
}
long int getday(int year,int month,int day){
 return 1461L*getyear(year,month)/4+153L*getmonth(month)/5+day;  //計算距離元年3月1日天數(shù)
  //計算方法:每四年一周期1461天(相當于計算平均每年多少天) 
  //每五個月一周期153天(相當于計算平均每月多少天)  
}
int getweekday(int year,int month,int day){
 return(int)((getday(year,month,day)%7-2+7)%7);        //得該日期的星期數(shù)
  //得到的天數(shù)除以7天取余,減去3月1日周三,其他均為保證正數(shù)1-7的附加計算
}

判斷是否為閏年:

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;

填充該年日期:

sw=getweekday(year,1,1);
for(i=0;i<12;i++)
 for(wd=0,day=1; day <= calendar[leap][i]; day++){
  date[i][wd][sw]=day;
 sw = ++sw%7;
 if(sw==0)
       wd++;
 }

格式化輸出:

printf("\n|==================The Calendar of Year %d =====================|\n|",year);
 for(i=0;i<6;i++){
 for(wd=0,k=0;k<7;k++)
  wd+=date[i][5][k]+date[i+6][5][k];
 wd=wd?6:5;
 printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);
 for(j=0;j<wd;j++){
 printf("  ");
 for(k=0;k<7;k++)
  if(date[i][j][k])
  printf("%4d",date[i][j][k]);
  else printf("  ");
 printf("   ");
 for(k=0;k<7;k++)
  if(date[i+6][j][k])
  printf("%4d",date[i+6][j][k]);
  else printf("  ");
 printf(" |\n|");
 }
 scanf("%*c");
 } 
 puts("=================================================================|");
 puts("\n Press any key to quit...");

結果為

完整代碼:

#include "stdio.h"
long int getyear(int year,int month){
 if(month<3) return year-1;
 else return year;
}
 
long int getmonth(int month){
 if(month<3) return month+13;
 else return month+1;
}
 
long int getday(int year,int month,int day){
 return 1461L*f(year,month)/4+153L*g(month)/5+day;
}
 
int getweekday(int year,int month,int day){
 return(int)((n(year,month,day)%7-2+7)%7);
}
 
int date[12][6][7];
int calender[ ][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}};
main()
{int sw,leap,i,j,k,wd,day;
 int year;
 char title[]="SUN MON TUE WED THU FRI SAT";
printf("Please input the year 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;
for(i=0;i<12;i++)
 for(wd=0,day=1;day<=day_tbl[leap][i];day++){
 date[i][wd][sw]=day;
 sw=++sw%7;
 if(sw==0) wd++;
 }
 printf("\n|==================The Calendar of Year %d =====================|\n|",year);
for(i=0;i<6;i++){
 for(wd=0,k=0;k<7;k++)
 wd+=date[i][5][k]+date[i+6][5][k];
 wd=wd?6:5;
 printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);
 for(j=0;j<wd;j++)
 {
 printf("  ");
 for(k=0;k<7;k++)
  if(date[i][j][k])
  printf("%4d",date[i][j][k]);
  else printf("  ");
 printf("   ");
 for(k=0;k<7;k++)
  if(date[i+6][j][k])
  printf("%4d",date[i+6][j][k]);
  else printf("  ");
 printf(" |\n|");
 }
 scanf("%*c"); 
}
puts("=================================================================|");
puts("\n Press any key to quit...");
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C語言代碼實現(xiàn)簡單掃雷游戲

    C語言代碼實現(xiàn)簡單掃雷游戲

    這篇文章主要為大家詳細介紹了C語言代碼實現(xiàn)簡單掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • STL區(qū)間成員函數(shù)及區(qū)間算法總結

    STL區(qū)間成員函數(shù)及區(qū)間算法總結

    這篇文章主要匯總介紹了STL區(qū)間成員函數(shù)及區(qū)間算法,有需要的小伙伴可以參考下。
    2015-07-07
  • C++定時器實現(xiàn)和時間輪介紹

    C++定時器實現(xiàn)和時間輪介紹

    這篇文章主要介紹了C++定時器實現(xiàn)和時間輪介紹,定時器可以由很多種數(shù)據結構實現(xiàn),比如最小堆、紅黑樹、跳表、甚至數(shù)組都可以,其本質都是拿到最小時間的任務,然后取出該任務并執(zhí)行,更多相關內容介紹,需要的小伙伴可以參考一下
    2022-09-09
  • C語言常見的文件操作函數(shù)

    C語言常見的文件操作函數(shù)

    這篇文章主要為大家介紹了C語言文件操作函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • opencv3.0識別并提取圖形中的矩形的方法

    opencv3.0識別并提取圖形中的矩形的方法

    這篇文章主要介紹了opencv3.0識別并提取圖形中的矩形的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • C語言的strcpy函數(shù)你了解嗎

    C語言的strcpy函數(shù)你了解嗎

    這篇文章主要為大家詳細介紹了C語言的strcpy函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++函數(shù)返回值為對象時,構造析構函數(shù)的執(zhí)行細節(jié)

    C++函數(shù)返回值為對象時,構造析構函數(shù)的執(zhí)行細節(jié)

    C++函數(shù)返回值為對象時,構造析構函數(shù)的執(zhí)行細節(jié),需要的朋友,可以參考下
    2013-02-02
  • C語言?詳解如何刪除有序數(shù)組中的重復項

    C語言?詳解如何刪除有序數(shù)組中的重復項

    數(shù)組不擅長插入(添加)和刪除元素。數(shù)組的優(yōu)點在于它是連續(xù)的,所以查找數(shù)據速度很快。但這也是它的一個缺點。正因為它是連續(xù)的,所以當插入一個元素時,插入點后所有的元素全部都要向后移;而刪除一個元素時,刪除點后所有的元素全部都要向前移
    2022-03-03
  • C語言實現(xiàn)通訊錄功能

    C語言實現(xiàn)通訊錄功能

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • c語言實現(xiàn)整蠱朋友小程序(附源碼)

    c語言實現(xiàn)整蠱朋友小程序(附源碼)

    這篇文章主要給大家介紹了關于c語言實現(xiàn)整蠱朋友小程序的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02

最新評論

安西县| 沁水县| 泽州县| 淮阳县| 永济市| 安吉县| 东乌| 泽州县| 稻城县| 阳东县| 鄂州市| 义乌市| 江口县| 曲阳县| 肥城市| 华坪县| 宣威市| 克拉玛依市| 东乡县| 名山县| 武穴市| 亳州市| 靖江市| 晋州市| 博客| 昭觉县| 泰来县| 突泉县| 郓城县| 大竹县| 镇远县| 平安县| 芒康县| 临颍县| 景宁| 鸡泽县| 江北区| 富民县| 鹤壁市| 抚松县| 铜梁县|