鱼C论坛

 找回密码
 立即注册
查看: 1661|回复: 2

C语言求助

[复制链接]
发表于 2020-3-14 15:02:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 上官洛栖 于 2020-3-16 18:16 编辑
  1. #pragma warning(disable : 4996)
  2. #include <stdio.h>
  3. #include <time.h>
  4. int total(int yeara)  //计算公元一年一月一日到输入年份之前的总天数
  5. {
  6.     int i, s = 0, a;

  7.         for (i = 1; i <= yeara - 1; i++)
  8.         {
  9.             if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
  10.                 a = 366;
  11.             else
  12.                 a = 365;
  13.             s = s + a;
  14.         }
  15.         return s;
  16.    
  17. }
  18. int where(int yearb, int monb) //判断每月天数
  19. {
  20.     int tian;
  21.     switch (monb)
  22.     {
  23.     case 1:            tian = 31; break;
  24.     case 2:
  25.         if (yearb % 4 == 0 && yearb % 100 != 0 || yearb % 400 == 0)
  26.             tian = 29;
  27.         else
  28.             tian = 28;
  29.         break;
  30.     case 3:            tian = 31; break;
  31.     case 4:            tian = 30; break;
  32.     case 5:            tian = 31; break;
  33.     case 6:            tian = 30; break;
  34.     case 7:            tian = 31; break;
  35.     case 8:            tian = 31; break;
  36.     case 9:            tian = 30; break;
  37.     case 10:        tian = 31; break;
  38.     case 11:        tian = 30; break;
  39.     case 12:        tian = 31; break;
  40.     default:
  41.         printf("输入日期不存在");
  42.         main();
  43.     }
  44.     return tian;
  45. }
  46. void when(int day)    //判断输入日期是星期几
  47. {
  48.     FILE* fp = fopen("1.txt", "a+");
  49.     switch (day)
  50.     {
  51.     case 1:            fprintf(fp, "该日为星期一\n");  printf("该日为星期一\n");     fclose(fp); break;
  52.     case 2:            fprintf(fp,"该日为星期二\n");   printf("该日为星期二\n");     fclose(fp); break;
  53.     case 3:            fprintf(fp,"该日为星期三\n");   printf("该日为星期三\n");     fclose(fp); break;
  54.     case 4:            fprintf(fp,"该日为星期四\n");   printf("该日为星期四\n");     fclose(fp); break;
  55.     case 5:            fprintf(fp,"该日为星期五\n");   printf("该日为星期五\n");     fclose(fp); break;
  56.     case 6:            fprintf(fp,"该日为星期六\n");   printf("该日为星期六\n");     fclose(fp); break;
  57.     case 7:            fprintf(fp,"该日为星期日\n");   printf("该日为星期日\n");     fclose(fp); break;
  58.     }
  59. }
  60. void why(int month, int day)  //公历节日判断
  61. {
  62.     FILE* fp = fopen("1.txt", "a+");
  63.     if (month == 1)
  64.         if (day == 1)
  65.         {
  66.             printf("该日是元旦\n");
  67.             fprintf(fp, "该日是元旦\n");

  68.         }
  69.         else
  70.         {
  71.             printf("该日不是公历节日!\n");
  72.             fprintf(fp, "该日不是公历节日!\n");

  73.         }
  74.     if (month == 3)
  75.     {
  76.         switch (day)
  77.         {
  78.         case 8:     printf("该日是国际妇女节\n");     fprintf(fp, "该日是国际妇女节\n");        break;
  79.         case 12:    printf("该日是植树节\n");         fprintf(fp, "该日是植树节\n");           break;
  80.         default:    printf("该日不是公历节日!\n");   fprintf(fp, "该日不是公历节日!\n");       break;
  81.         }
  82.     }
  83.     if (month == 4)
  84.         if (day == 5)
  85.         {
  86.             printf("该日是清明节\n");
  87.             fprintf(fp, "该日是清明节\n");
  88.         }
  89.         else
  90.         {
  91.             printf("该日不是公历节日!\n");
  92.             fprintf(fp, "该日不是公历节日!\n");

  93.         }
  94.     if (month == 5)
  95.     {
  96.         switch (day)
  97.         {
  98.         case 1:        printf("该日是劳动节\n");        fprintf(fp, "该日是劳动节\n");                  break;
  99.         case 4:        printf("该日是五四青年节\n");     fprintf(fp, "该日是五四青年节\n");        break;
  100.         default:       printf("该日不是公历节日!\n");   fprintf(fp, "该日不是公历节日!\n");       break;
  101.         }
  102.     }
  103.     if (month == 6)
  104.         if (day == 1)
  105.         {
  106.             printf("该日是儿童节\n");
  107.             fprintf(fp, "该日是儿童节\n");
  108.         }
  109.         else
  110.         {
  111.             printf("该日不是公历节日!\n");
  112.             fprintf(fp, "该日不是公历节日!\n");
  113.         }
  114.     if (month == 7)
  115.         if (day == 1)
  116.         {
  117.             printf("该日是中国建党节\n");
  118.             fprintf(fp, "该日是中国建党节\n");
  119.         }
  120.         else

  121.         {
  122.             printf("该日不是公历节日!\n");
  123.             fprintf(fp, "该日不是公历节日!\n");
  124.         }
  125.     if (month == 8)
  126.         if (day == 1)
  127.         {
  128.             printf("该日是建军节\n");
  129.             fprintf(fp, "该日是建军节\n");

  130.         }
  131.         else
  132.         {
  133.             printf("该日不是公历节日!\n");
  134.             fprintf(fp, "该日不是公历节日!\n");
  135.         }
  136.     if (month == 9)
  137.     {
  138.         switch (day)
  139.         {
  140.         case 3:         printf("该日是抗日战争胜利纪念日\n");   fprintf(fp, "该日是抗日战争胜利纪念日\n");          break;
  141.         case 10:        printf("该日是教师节\n");              fprintf(fp, "该日是教师节\n");                   break;
  142.         default:        printf("该日不是公历节日!\n");         fprintf(fp, "该日不是公历节日!\n");         break;
  143.         }
  144.     }
  145.     if (month == 10)
  146.         if (day == 1)
  147.         {
  148.             printf("该日是国庆节\n");
  149.             fprintf(fp, "该日是国庆节\n");
  150.         }
  151.         else
  152.         {
  153.             printf("该日不是公历节日!\n");
  154.             fprintf(fp, "该日不是公历节日!\n");
  155.         }
  156.     if(month==11)
  157.     {
  158.         printf("该日不是公历节日");
  159.         fprintf(fp, "该日不是公历节日");
  160.     }
  161.     if (month == 2)
  162.     {
  163.         printf("该日不是公历节日");
  164.         fprintf(fp, "该日不是公历节日");
  165.     }
  166.     if (month == 12)
  167.     {
  168.         printf("该日不是公历节日");
  169.         fprintf(fp, "该日不是公历节日");
  170.     }

  171.                 fclose(fp);
  172. }
  173. void output_year()        //年份输出
  174. {
  175.     int year, d, di, did, z, j;

  176.         printf("请输入年份(eg:2015):");
  177.         FILE* fp = fopen("1.txt", "a+");
  178.         scanf_s("%d", &year);
  179.         fprintf(fp, "查询%d年的年历\n",year);
  180.         z = total(year);
  181.         if (year > 2040 || year < 1940)
  182.         {
  183.             printf("查询范围为1940年到2040年");
  184.             fprintf(fp,"查询范围为1940年到2040年");
  185.             fclose(fp);
  186.             main();
  187.         }
  188.         else
  189.         {
  190.         for (j = 1; j <= 12; j++)
  191.         {
  192.             d = z % 7;
  193.             printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  194.             printf("        %d月份\n", j);
  195.             printf("sun mon tue wed thu fri sat\n");
  196.             fprintf(fp,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  197.             fprintf(fp,"        %d月份\n", j);
  198.             fprintf(fp,"sun mon tue wed thu fri sat\n");
  199.             if (d < 6)
  200.                 for (di = 1; di <= d + 1; di++)
  201.                 {
  202.                     printf("    ");
  203.                     fprintf(fp, "    ");
  204.                 }
  205.             for (did = 1; did <= where(year, j); did++)
  206.             {
  207.                 printf("%d", did);
  208.                 fprintf(fp, "%d", did);
  209.                 if (did < 10)
  210.                 {
  211.                     printf("   ");
  212.                     fprintf(fp, "   ");
  213.                 }
  214.                 else
  215.                 {
  216.                     printf("  ");
  217.                     fprintf(fp, "  ");
  218.                 }
  219.                 if (did == 6 - d || (did - 6 + d) % 7 == 0 || did == where(year, j))
  220.                 {
  221.                     printf("\n");
  222.                     fprintf(fp, "\n");
  223.                 }
  224.             }
  225.             z = z + where(year, j);
  226.         }
  227.         fclose(fp);
  228.         main();
  229.     }
  230. }
  231. void  output_month()    //年月输出
  232. {
  233.     int year, m, n, d, di, did, j, Z, D;
  234.     printf("请输入所查日历的年月(eg:2015 01):");
  235.     FILE* fp = fopen("1.txt", "a+");
  236.     scanf_s("%d%d", &m, &n);
  237.     fprintf(fp, "查询%d年%d月的月历\n",m,n);
  238.     if (m > 2040 || m < 1940)
  239.     {
  240.         printf("查询范围为1940年到2040年");
  241.         main();
  242.     }
  243.     else
  244.     {
  245.         Z = total(m);
  246.         for (j = 1; j <= n - 1; j++)
  247.         {
  248.             D = where(m, j);
  249.             Z = Z + D;
  250.         }
  251.         d = Z % 7;
  252.         if (n < 12)
  253.         {
  254.             printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  255.             printf("        %d月份\n", n);
  256.             printf("sun mon tue wed thu fri sat\n");
  257.             fprintf(fp,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  258.             fprintf(fp,"        %d月份\n", n);
  259.             fprintf(fp,"sun mon tue wed thu fri sat\n");
  260.             if (d < 6)
  261.                 for (di = 1; di <= d + 1; di++)
  262.                     printf("    ");
  263.             fprintf(fp,"    ");
  264.             for (did = 1; did <= where(m, n); did++)
  265.             {
  266.                 printf("%d", did);
  267.                 fprintf(fp,"%d", did);
  268.                 if (did < 10)
  269.                 {
  270.                     printf("   ");
  271.                     fprintf(fp, "   ");
  272.                 }
  273.                 else
  274.                 {
  275.                     printf("  ");
  276.                     fprintf(fp, "  ");
  277.                 }
  278.                 if (did == 6 - d || (did - 6 + d) % 7 == 0 || did == where(m, n))
  279.                     printf("\n");
  280.                 fprintf(fp,"\n");
  281.             }
  282.         }
  283.         else
  284.         {
  285.             printf("月份输入不正确");
  286.         }
  287.         fclose(fp);
  288.         main();
  289.     }
  290. }
  291. void  output_day()        //年月日输出
  292. {
  293.     int d, h, j, k, l, x, y, z, Z, Z1, D, jian, judge;
  294.     time_t timep;
  295.     struct tm* p;
  296.     time(&timep);    //系统时间获取
  297.     p = localtime(&timep);  //此函数获得的tm结构体的时间,是已经进行过时区转化为本地时间
  298.     printf("请输入年月日(eg:2015 01 01):");
  299.     FILE* fp = fopen("1.txt", "a+");
  300.     scanf("%d%d%d", &x, &y, &z);
  301.     fprintf(fp, "查询%d年%d月%d日的日历\n",x,y,z);
  302.     if (x > 2040 || x< 1940)
  303.     {
  304.         printf("查询范围为1940年到2040年");
  305.         main();
  306.     }
  307.     else
  308.     {
  309.         judge = where(x, y);
  310.         if (judge < z || y>12)
  311.         {
  312.             printf("输入日期不存在!");
  313.             fprintf(fp, "输入日期不存在!");
  314.         }
  315.         else
  316.         {
  317.             Z = total(x);
  318.             for (j = 1; j <= y - 1; j++)
  319.             {
  320.                 D = where(x, j);
  321.                 Z = Z + D;
  322.             }
  323.             Z = Z + z;
  324.             h = 1900 + p->tm_year;//时间赋值
  325.             k = 1 + p->tm_mon;
  326.             l = 1 + p->tm_mday;
  327.             Z1 = total(h);
  328.             for (j = 1; j <= k - 1; j++)
  329.             {
  330.                 D = where(k, j);
  331.                 Z1 = Z1 + D;
  332.             }
  333.             Z1 = Z1 + l;
  334.             jian = Z1 - Z;
  335.             printf( "输入日期距今有%d天\n", jian);
  336.             fprintf(fp,"输入日期距今有%d天\n", jian);
  337.             d = Z % 7;
  338.             when(d);
  339.             why(y, z);
  340.         }
  341.         fclose(fp);
  342.         main();
  343.     }
  344. }
  345. int main()
  346. {
  347.     int number;
  348.     printf("\n\n*************查询方式************* \n");
  349.     printf("*        1.查询某年的日历        * \n");
  350.     printf("*        2.查询某月的日历        * \n");
  351.     printf("*        3.查询特定的日期        * \n");
  352.     printf("*        4.查询特定的农历        * \n");
  353.     printf("*        5.查询结束--退出        * \n");
  354.     printf("********************************** \n");
  355.     do
  356.     {
  357.         printf("请输入查询方式:");
  358.         FILE* fp = fopen("1.txt", "a+");
  359.         scanf_s("%d", &number);
  360.         fprintf(fp, "所选的查询方式是第%d项\n",number);
  361.         fclose(fp);
  362.         switch (number)
  363.         {
  364.         case 1:         output_year();  break;
  365.         case 2:         output_month(); break;
  366.         case 3:         output_day();   break;
  367.         case 4:         printf("暂未完成,敬请期待"); main();
  368.         case 5:                        break;
  369.         default:        printf("输入错误!\n--------------\n"); break;
  370.         }
  371.     } while (number != 1 && number != 2 && number != 3 && number != 4&&number!=5);
  372. }
复制代码





为啥输出每月的月历存入到txt里面就不一样了呢??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-14 15:27:06 | 显示全部楼层
本帖最后由 上官洛栖 于 2020-3-14 15:28 编辑

[img]C:\Users\86132\DesktopC:\Users\86132\Desktop[/img]file:///C:/Users/86132/Pictures/Camera%20Roll/Z8QV)%7D)~@HOFUL~MEY43IBE.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 16:02:31 | 显示全部楼层
  1. #pragma warning(disable : 4996)
  2. #include <stdio.h>
  3. #include <time.h>
  4. int total(int yeara)  //计算公元一年一月一日到输入年份之前的总天数
  5. {
  6.     int i, s = 0, a;

  7.         for (i = 1; i <= yeara - 1; i++)
  8.         {
  9.             if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
  10.                 a = 366;
  11.             else
  12.                 a = 365;
  13.             s = s + a;
  14.         }
  15.         return s;
  16.    
  17. }
  18. int where(int yearb, int monb) //判断每月天数
  19. {
  20.     int tian;
  21.     switch (monb)
  22.     {
  23.     case 1:            tian = 31; break;
  24.     case 2:
  25.         if (yearb % 4 == 0 && yearb % 100 != 0 || yearb % 400 == 0)
  26.             tian = 29;
  27.         else
  28.             tian = 28;
  29.         break;
  30.     case 3:            tian = 31; break;
  31.     case 4:            tian = 30; break;
  32.     case 5:            tian = 31; break;
  33.     case 6:            tian = 30; break;
  34.     case 7:            tian = 31; break;
  35.     case 8:            tian = 31; break;
  36.     case 9:            tian = 30; break;
  37.     case 10:        tian = 31; break;
  38.     case 11:        tian = 30; break;
  39.     case 12:        tian = 31; break;
  40.     default:
  41.         printf("输入日期不存在");
  42.         main();
  43.     }
  44.     return tian;
  45. }
  46. void when(int day)    //判断输入日期是星期几
  47. {
  48.     FILE* fp = fopen("1.txt", "a+");
  49.     switch (day)
  50.     {
  51.     case 1:            fprintf(fp, "该日为星期一\n");  printf("该日为星期一\n");     fclose(fp); break;
  52.     case 2:            fprintf(fp,"该日为星期二\n");   printf("该日为星期二\n");     fclose(fp); break;
  53.     case 3:            fprintf(fp,"该日为星期三\n");   printf("该日为星期三\n");     fclose(fp); break;
  54.     case 4:            fprintf(fp,"该日为星期四\n");   printf("该日为星期四\n");     fclose(fp); break;
  55.     case 5:            fprintf(fp,"该日为星期五\n");   printf("该日为星期五\n");     fclose(fp); break;
  56.     case 6:            fprintf(fp,"该日为星期六\n");   printf("该日为星期六\n");     fclose(fp); break;
  57.     case 7:            fprintf(fp,"该日为星期日\n");   printf("该日为星期日\n");     fclose(fp); break;
  58.     }
  59. }
  60. void why(int month, int day)  //公历节日判断
  61. {
  62.     FILE* fp = fopen("1.txt", "a+");
  63.     if (month == 1)
  64.         if (day == 1)
  65.         {
  66.             printf("该日是元旦\n");
  67.             fprintf(fp, "该日是元旦\n");

  68.         }
  69.         else
  70.         {
  71.             printf("该日不是公历节日!\n");
  72.             fprintf(fp, "该日不是公历节日!\n");

  73.         }
  74.     if (month == 3)
  75.     {
  76.         switch (day)
  77.         {
  78.         case 8:     printf("该日是国际妇女节\n");     fprintf(fp, "该日是国际妇女节\n");        break;
  79.         case 12:    printf("该日是植树节\n");         fprintf(fp, "该日是植树节\n");           break;
  80.         default:    printf("该日不是公历节日!\n");   fprintf(fp, "该日不是公历节日!\n");       break;
  81.         }
  82.     }
  83.     if (month == 4)
  84.         if (day == 5)
  85.         {
  86.             printf("该日是清明节\n");
  87.             fprintf(fp, "该日是清明节\n");
  88.         }
  89.         else
  90.         {
  91.             printf("该日不是公历节日!\n");
  92.             fprintf(fp, "该日不是公历节日!\n");

  93.         }
  94.     if (month == 5)
  95.     {
  96.         switch (day)
  97.         {
  98.         case 1:        printf("该日是劳动节\n");        fprintf(fp, "该日是劳动节\n");                  break;
  99.         case 4:        printf("该日是五四青年节\n");     fprintf(fp, "该日是五四青年节\n");        break;
  100.         default:       printf("该日不是公历节日!\n");   fprintf(fp, "该日不是公历节日!\n");       break;
  101.         }
  102.     }
  103.     if (month == 6)
  104.         if (day == 1)
  105.         {
  106.             printf("该日是儿童节\n");
  107.             fprintf(fp, "该日是儿童节\n");
  108.         }
  109.         else
  110.         {
  111.             printf("该日不是公历节日!\n");
  112.             fprintf(fp, "该日不是公历节日!\n");
  113.         }
  114.     if (month == 7)
  115.         if (day == 1)
  116.         {
  117.             printf("该日是中国建党节\n");
  118.             fprintf(fp, "该日是中国建党节\n");
  119.         }
  120.         else

  121.         {
  122.             printf("该日不是公历节日!\n");
  123.             fprintf(fp, "该日不是公历节日!\n");
  124.         }
  125.     if (month == 8)
  126.         if (day == 1)
  127.         {
  128.             printf("该日是建军节\n");
  129.             fprintf(fp, "该日是建军节\n");

  130.         }
  131.         else
  132.         {
  133.             printf("该日不是公历节日!\n");
  134.             fprintf(fp, "该日不是公历节日!\n");
  135.         }
  136.     if (month == 9)
  137.     {
  138.         switch (day)
  139.         {
  140.         case 3:         printf("该日是抗日战争胜利纪念日\n");   fprintf(fp, "该日是抗日战争胜利纪念日\n");          break;
  141.         case 10:        printf("该日是教师节\n");              fprintf(fp, "该日是教师节\n");                   break;
  142.         default:        printf("该日不是公历节日!\n");         fprintf(fp, "该日不是公历节日!\n");         break;
  143.         }
  144.     }
  145.     if (month == 10)
  146.         if (day == 1)
  147.         {
  148.             printf("该日是国庆节\n");
  149.             fprintf(fp, "该日是国庆节\n");
  150.         }
  151.         else
  152.         {
  153.             printf("该日不是公历节日!\n");
  154.             fprintf(fp, "该日不是公历节日!\n");
  155.         }
  156.     if(month==11)
  157.     {
  158.         printf("该日不是公历节日");
  159.         fprintf(fp, "该日不是公历节日");
  160.     }
  161.     if (month == 2)
  162.     {
  163.         printf("该日不是公历节日");
  164.         fprintf(fp, "该日不是公历节日");
  165.     }
  166.     if (month == 12)
  167.     {
  168.         printf("该日不是公历节日");
  169.         fprintf(fp, "该日不是公历节日");
  170.     }

  171.                 fclose(fp);
  172. }
  173. void output_year()        //年份输出
  174. {
  175.     int year, d, di, did, z, j;
  176.         printf("请输入年份(eg:2015):");
  177.         FILE* fp = fopen("1.txt", "a+");
  178.         scanf_s("%d", &year);
  179.         fprintf(fp, "查询%d年的年历\n",year);
  180.         z = total(year);
  181.         if (year > 2040 || year < 1940)
  182.         {
  183.             printf("查询范围为1940年到2040年");
  184.             fprintf(fp,"查询范围为1940年到2040年");
  185.             fclose(fp);
  186.             main();
  187.         }
  188.         else
  189.         {
  190.         for (j = 1; j <= 12; j++)
  191.         {
  192.             d = z % 7;
  193.             printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  194.             printf("        %d月份\n", j);
  195.             printf("sun mon tue wed thu fri sat\n");
  196.             fprintf(fp,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  197.             fprintf(fp,"        %d月份\n", j);
  198.             fprintf(fp,"sun mon tue wed thu fri sat\n");
  199.             if (d < 6)
  200.                 for (di = 1; di <= d + 1; di++)
  201.                 {
  202.                     printf("    ");
  203.                     fprintf(fp, "       ");
  204.                 }
  205.             for (did = 1; did <= where(year, j); did++)
  206.             {
  207.                 printf("%d", did);
  208.                 fprintf(fp, "%d", did);
  209.                 if (did < 10)
  210.                 {
  211.                     printf("   ");
  212.                     fprintf(fp, "     ");
  213.                 }
  214.                 else
  215.                 {
  216.                     printf("  ");
  217.                     fprintf(fp, "   ");
  218.                 }
  219.                 if (did == 6 - d || (did - 6 + d) % 7 == 0 || did == where(year, j))
  220.                 {
  221.                     printf("\n");
  222.                     fprintf(fp, "\n");
  223.                 }
  224.             }
  225.             z = z + where(year, j);
  226.         }
  227.         fclose(fp);
  228.         main();
  229.     }
  230. }
  231. void  output_month()    //年月输出
  232. {
  233.     int year, m, n, d, di, did, j, Z, D;
  234.     printf("请输入所查日历的年月(eg:2015 01):");
  235.     FILE* fp = fopen("1.txt", "a+");
  236.     scanf_s("%d%d", &m, &n);
  237.     fprintf(fp, "查询%d年%d月的月历\n",m,n);
  238.     if (m > 2040 || m < 1940)
  239.     {
  240.         printf("查询范围为1940年到2040年");
  241.         main();
  242.     }
  243.     else
  244.     {
  245.         Z = total(m);
  246.         for (j = 1; j <= n - 1; j++)
  247.         {
  248.             D = where(m, j);
  249.             Z = Z + D;
  250.         }
  251.         d = Z % 7;
  252.         if (n < 12)
  253.         {
  254.             printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  255.             printf("        %d月份\n", n);
  256.             printf("sun mon tue wed thu fri sat\n");
  257.             fprintf(fp,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  258.             fprintf(fp,"        %d月份\n", n);
  259.             fprintf(fp,"sun mon tue wed thu fri sat\n");
  260.             if (d < 6)
  261.                 for (di = 1; di <= d + 1; di++)
  262.                 {
  263.                     printf("    ");
  264.                     fprintf(fp, "       ");
  265.                 }
  266.             for (did = 1; did <= where(m, n); did++)
  267.             {
  268.                 printf("%d", did);
  269.                 fprintf(fp,"%d", did);
  270.                 if (did < 10)
  271.                 {
  272.                     printf("   ");
  273.                     fprintf(fp, "     ");
  274.                 }
  275.                 else
  276.                 {
  277.                     printf("  ");
  278.                     fprintf(fp, "   ");
  279.                 }
  280.                 if (did == 6 - d || (did - 6 + d) % 7 == 0 || did == where(m, n))
  281.                 {
  282.                     printf("\n");
  283.                     fprintf(fp, "\n");
  284.                 }
  285.             }
  286.         }
  287.         else
  288.         {
  289.             printf("月份输入不正确");
  290.         }
  291.         fclose(fp);
  292.         main();
  293.     }
  294. }
  295. void  output_day()        //年月日输出
  296. {
  297.     int d, h, j, k, l, x, y, z, Z, Z1, D, jian, judge;
  298.     time_t timep;
  299.     struct tm* p;
  300.     time(&timep);    //系统时间获取
  301.     p = localtime(&timep);  //此函数获得的tm结构体的时间,是已经进行过时区转化为本地时间
  302.     printf("请输入年月日(eg:2015 01 01):");
  303.     FILE* fp = fopen("1.txt", "a+");
  304.     scanf("%d%d%d", &x, &y, &z);
  305.     fprintf(fp, "查询%d年%d月%d日的日历\n",x,y,z);
  306.     if (x > 2040 || x< 1940)
  307.     {
  308.         printf("查询范围为1940年到2040年");
  309.         main();
  310.     }
  311.     else
  312.     {
  313.         judge = where(x, y);
  314.         if (judge < z || y>12)
  315.         {
  316.             printf("输入日期不存在!");
  317.             fprintf(fp, "输入日期不存在!");
  318.         }
  319.         else
  320.         {
  321.             Z = total(x);
  322.             for (j = 1; j <= y - 1; j++)
  323.             {
  324.                 D = where(x, j);
  325.                 Z = Z + D;
  326.             }
  327.             Z = Z + z;
  328.             h = 1900 + p->tm_year;//时间赋值
  329.             k = 1 + p->tm_mon;
  330.             l = 1 + p->tm_mday;
  331.             Z1 = total(h);
  332.             for (j = 1; j <= k - 1; j++)
  333.             {
  334.                 D = where(k, j);
  335.                 Z1 = Z1 + D;
  336.             }
  337.             Z1 = Z1 + l;
  338.             jian = Z1 - Z;
  339.             printf( "输入日期距今有%d天\n", jian);
  340.             fprintf(fp,"输入日期距今有%d天\n", jian);
  341.             d = Z % 7;
  342.             when(d);
  343.             why(y, z);
  344.         }
  345.         fclose(fp);
  346.         main();
  347.     }
  348. }
  349. int main()
  350. {
  351.     int number;
  352.     printf("\n\n*************查询方式************* \n");
  353.     printf("*        1.查询某年的日历        * \n");
  354.     printf("*        2.查询某月的日历        * \n");
  355.     printf("*        3.查询特定的日期        * \n");
  356.     printf("*        4.查询特定的农历        * \n");
  357.     printf("*        5.查询结束--退出        * \n");
  358.     printf("********************************** \n");
  359.     do
  360.     {
  361.         printf("请输入查询方式:");
  362.         FILE* fp = fopen("1.txt", "a+");
  363.         scanf_s("%d", &number);
  364.         fprintf(fp, "所选的查询方式是第%d项\n",number);
  365.         time_t timep;
  366.         struct tm* p;
  367.         time(&timep);
  368.         p = gmtime(&timep);

  369.         fputs("日期: ", fp);
  370.         fprintf(fp, "%d", p->tm_year + 1900);    //获取年
  371.         fputs("年", fp);
  372.         fprintf(fp, "%d", p->tm_mon + 1);        //获取月
  373.         fputs("月", fp);
  374.         fprintf(fp, "%d", p->tm_mday);        //获取日
  375.         fputs("日", fp);

  376.         fputs("      ", fp);
  377.         fputs("时间: ", fp);
  378.         fprintf(fp, "%d", p->tm_hour + 8);        //获取时
  379.         fputs("时", fp);
  380.         fprintf(fp, "%d", p->tm_min);            //获取分
  381.         fputs("分", fp);

  382.         fputs("\r\n", fp);
  383.         fclose(fp);
  384.         getchar();

  385.         //关闭文件
  386.         fclose(fp);
  387.         switch (number)
  388.         {
  389.         case 1:         output_year();  break;
  390.         case 2:         output_month(); break;
  391.         case 3:         output_day();   break;
  392.         case 4:         printf("暂未完成,敬请期待"); main();
  393.         case 5:                        break;
  394.         default:        printf("输入错误!\n--------------\n"); break;
  395.         }
  396.     } while (number != 1 && number != 2 && number != 3 && number != 4&&number!=5);
  397. }
复制代码

已解决,for循环有点小问题,现在改正了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-1 06:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表