⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 moon_age.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/* PD by Michelangelo Jones, 1:1/124. *//***  Returns 0 for new moon, 15 for full moon,**  29 for the day before new, and so forth.*//***  This routine sometimes gets "off" by a few days,**  but is self-correcting.*/#include "datetime.h"int moon_age(int month, int day, int year){      static short int ages[] =            {18, 0, 11, 22, 3, 14, 25, 6, 17,             28, 9, 20, 1, 12, 23, 4, 15, 26, 7};      static short int offsets[] =            {-1, 1, 0, 1, 2, 3, 4, 5, 7, 7, 9, 9};      if (day == 31)            day = 1;      return ((ages[(year + 1) % 19] + ((day + offsets[month-1]) % 30) +            (year < 1900)) % 30);}#ifdef TEST#include <stdio.h>#include <stdlib.h>static char *description[] = {      "new",                  /* totally dark                         */      "waxing crescent",      /* increasing to full & quarter light   */      "in its first quarter", /* increasing to full & half light      */      "waxing gibbous",       /* increasing to full & > than half     */      "full",                 /* fully lighted                        */      "waning gibbous",       /* decreasing from full & > than half   */      "in its last quarter",  /* decreasing from full & half light    */      "waning crescent"       /* decreasing from full & quarter light */      };static char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",                         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};int main(int argc, char *argv[]){      int month, day, year, phase;      if (4 > argc)      {            puts("Usage: MOON_AGE month day year");            return EXIT_FAILURE;      }      month = atoi(argv[1]);      day   = atoi(argv[2]);      year  = atoi(argv[3]);      if (100 > year)            year += 1900;      printf("moon_age(%d, %d, %d) returned %d\n", month, day, year,            phase = moon_age(month, day, year));      printf("Moon phase on %d %s %d is %s\n", day, months[month - 1], year,            description[(int)((phase + 2) * 16L / 59L)]);      return EXIT_SUCCESS;}#endif /* TEST */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -