陆离628 2022-05-23 22:46 采纳率: 50%
浏览 148
已结题

有偿请求编写c语音程序

img

请求帮忙编写这段c语言程序,完成后联系我给我看一下截图,满意后钱立刻到账。
联系方式:QQ1198736195
微信:Hearbeat021124
也可以私我

  • 写回答

5条回答 默认 最新

  • 程序喵正在路上 后端领域新星创作者 2022-05-24 13:41
    关注

    你可以参考一下,希望采纳

    #include <stdio.h>
    #include <math.h>
     
    int welcome();                            //显示欢迎界面 
    int function1();                         //搜索某年的年历或某月的日历 
    int function2();                         //查询历史上的某日为星期几 
    void function3();                         //判断历史上某年是否为闰年 
    void function4();                         //查询历史上某月的最大天数 
    void searchhead(int year,int month);    //打印月历的表头 
    int leapyear(int year);                    //判断是否为闰年 
    int monthnum(int year,int month);        //查看哪个月份有多少天 
    int week(int year,int month,int day);    //根据蔡勒公式计算星期几 
    int nowyear();                            //获取系统的年份  
    int nowmonth();                            //获取系统的月份
     
     
     //主函数 
    int main()
    {    
        int select;        //用于接收用户的选择 
        char ch;
        
        while(1)
        { 
            select = welcome();
            
            //用if语句对用户的选择进行判断后执行相应功能 
            if(select == 1)
            {
                function1();
            } 
            else if(select == 2)
            {
                function2();
            } 
            else if(select == 3) 
            {
                  function3();    
            }
            else if(select == 4)
            {
                function4();
            } 
            else if(select == 0)
            {
                printf("感谢您的使用,祝您生活愉快!\n");
                break;
            }
            else
            {
                printf("您的输入有误,请重新输入!\n");
            }
        } 
            
        return 0;
    }
     
     //显示欢迎界面的函数 
    int welcome()            
    {
        int select;
        
        //用printf语句打印出欢迎界面 
        printf("\n\n\t\t\t<--欢迎使用万年历-->\n\n");
        printf("\t\t****************************************\n");
        printf("\t\t请选择要使用的功能:\n\n");
        printf("\t\t\t1.搜素某年的年历或某月的日历\n");
        printf("\t\t\t2.查询历史上某日为星期几\n");
        printf("\t\t\t3.判断历史上某年是否为闰年\n");
        printf("\t\t\t4.查询历史上某月的最大天数\n");
        printf("\t\t\t0.退出\n\n");
        printf("\t\t****************************************\n");
        printf("\t\t\t请选择<1,2,3,4,0>:"); 
        
        scanf("%d", &select) ;
        printf("\n");
        
        return select;
    }
     
     //打印月历的表头的函数 
    void searchhead(int year,int month)            
    {
        printf("\t%d年%d月\n",year,month);
         printf("\t***************************************************\n")    ;
         printf("\t\t\t\t\t\t\t\n"); 
    }
    
    //查看哪个月份有多少天的函数 
    int monthnum(int year,int month)            
    {
        int a1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
         int a2[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
         if(leapyear(year)==1)
             {
                 return(a2[month]);
             }
         else
             {
                 return(a1[month]);
             }
    }
    
    //功能一:搜素某年的年历或某月的日历
    int function1()            
    {
        int year = 0, month = 1, i, j, spacenum, count;
          printf("-----搜素某年的年历或某月的日历-----\n\n");
          
          //如果输入的年份小于等于0,就判定为无效年份,提示用户重新输入 
          //运用do...while循环,只要用户输入不对就一直重新输入,输入正常就执行后面的语句 
        do
        {
            //判断输入年份是否小于等于0 
            if(year <= 0)        
             {
                 printf("\t系统提示:您输入了错误的年份请从新输入...\n");
             }
             
             //提示用户重新输入 
            printf("\t请输入要查看的年份:");
             scanf("%d", &year);
             printf("\n");
        } while(year <= 0);
     
         
         //同理,如果输入的月份不是正常范围,就判定为无效月份,提示用户重新输入 
        do
        {
            //判断输入月份是否在1月和12月之间,或者是0(0表示查看年历) 
            if(month < 0 || month > 12)
             {
                 printf("\t系统提示:您输入了错误的月份请从新输入...\n");
             }
             
             //提示用户重新输入 
            printf("\t请输入查看%d年的第几月,若想查看%d年年历请输入0:", year, year);
            scanf("%d", &month);
            printf("\n");
        } while(month < 0 || month > 12);
     
        //查看1-12月中某个月的日历 
        if(month != 0)
         {        
             searchhead(year,month)    ;        //首先打印日历的表头 
            spacenum = week(year,month,1);    //调用week函数计算日历前面有几天是空的 
            
            //如果空的天数不是7天,那就按空几天打印几个间隔 
            if(spacenum != 7)            
            {
                 for(i = 1;i <= spacenum;i++)
                 {
                     printf("\t ");
                 }    
            }
            
            //查看哪个月份有多少天后,循环打印出日历 
            count = spacenum;
            for(i = 1;i <= monthnum(year,month);i++)    
              {
                  printf("\t%d ",i);
                  count++;
                  
                  //如果一行打印了7天,就换行 (遇到 7的倍数就换行) 
                  if(count%7 == 0)
                {
                    printf("\n");
                }    
             }
         }
         
         //查看输入年份的年历 
        if(month == 0)
          {
              for(j=1;j<=12;j++)
            {
                searchhead(year,j);                //打印日历的表头
                 spacenum = week(year,j,1);        //调用week函数计算日历前面有几天是空的 
                 
                 //如果空的天数不是7天,那就按空几天打印几个间隔
                 if(spacenum != 7)        
                 {
                     for(i = 1;i <= spacenum;i++)
                     {
                         printf("\t ");
                     }    
                 }
                 
                 //查看哪个月份有多少天后,循环打印出日历 
                 count = spacenum;
                for(i = 1;i <= monthnum(year,j);i++)    
                  {
                      printf("\t%d ",i);
                      count++;
                      
                      //如果一行打印了7天,就换行 
                      if(count%7 == 0)
                      {
                          printf("\n");
                      }    
                 }
                printf("\n\n");    
            }
          }         
    }
     
    //根据蔡勒公式计算星期几 
    int week(int year,int month,int day)            
    {    
        int w ,c,y;
        
        if(month == 1) 
        {
             month = 13;
             year = year - 1;
        }
        
        if(month == 2) 
        {
             month = 14;
             year = year - 1;
        }
        
        y = year % 100;
        c = (year/1000) * 10 + (year/100%10);
         
        if(y == 0)
        {
             c=c-1;
        }
        
        //floor函数,其功能是向下取整
        w = y + floor(y/4) + floor(c/4)-2*c + floor(26*(month+1)/10.0) + day - 1;
        
        while(w < 0)
        {
            w = w + 7;
        }
        
        if(w % 7 == 0)
        {
             return 7;
        }
        
        return w%7;
    }
     
    //功能二:查询历史上某日为星期几 
    int function2()            
    {    
        int year = 0,month = 1,day = 1;
        printf("-----查询历史上某日为星期几-----\n");
        printf("\n");
        
        //如果输入的年份小于等于0,就判定为无效年份,提示用户重新输入 
        do
        {
            //判断输入年份是否小于等于0 
            if(year <= 0)
             {
                 printf("\t系统提示:您输入了错误的年份请从新输入...\n");
             }
             
             //提示用户重新输入 
            printf("\t请输入要查询的年份:");
            scanf("%d",&year);
            printf("\n");
         } while(year <= 0);
         
         //如果输入的月份不是正常范围,就判定为无效月份,提示用户重新输入 
         do
         {
             if(month < 1 || month > 12)
             {
                 printf("\t系统提示:您输入了错误的月份请从新输入...\n");
             }
             
            printf("\t请输入%d年的第几月:",year);
            scanf("%d",&month);
            printf("\n");
         } while(month < 1 || month > 12);
         
         //如果输入的日期不是正常范围,就判定为无效日期,提示用户重新输入 
         do
         {
             //日期必须在 1到 31之间 
             if(day < 1 || day > 31)
             {
                 printf("\t系统提示:您输入了错误的日期请从新输入...\n");
             }
             
             printf("\t请输入%d年%d月的第几天:",year,month);
             scanf("%d",&day);
             printf("\n");
         } while(day < 1 || day > 31);
         
         ////调用week函数查看所查日期是星期几 
         printf("\t您查询的%d年%d月%d号是星期%d\n\n",year,month,day,week(year,month,day));
    }
     
    //判断是否为闰年的函数 
    int leapyear(int year)            
    {
        //是闰年 
        if(year%4 == 0 && year%100 != 0 || year%4 == 0 && year%400 == 0) 
        {
            return 1;
        }         
        else    //不是闰年 
         {
             return 0;
         } 
    } 
    
    //功能三:判断历史上某年是否为闰年
    void function3()            
    {
        int year = 0;
        printf("-----判断历史上某年是否为闰年-----\n");
        
        do
        {
            //判断年份是否在正常范围 
            if(year <= 0)
            {
                 printf("\t系统提示:您输入了错误的年份请从新输入...\n");
            }
            
            printf("\t请输入要查询的年份:");
            scanf("%d",&year);
            printf("\n");
        } while(year <= 0);
        
        //调用leapyear函数判断是否为闰年 
        if(leapyear(year) == 1)
         {
             printf("\t您查询的%d年是闰年\n\n",year);    
         }
        else
         {
             printf("\t您查询的%d年不是闰年\n\n",year);    
         }
    }
     
    //功能四:查询某月的最大天数
    void function4()
    {
         int year = 0,month = 1,day = 0,i;
        int a[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};        //保存闰年的月份天数 
        int b[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};        //保存不是闰年的月份天数 
        printf("-----查询某月的最大天数-----\n");
        printf("\n");
         
        //判断用户输入年份是否正常 
        do
        {
            if(year <= 0)
             {
                 printf("\t系统提示:您输入了错误的年份请从新输入...\n");
             }
             
            printf("\t请输入要查询的年份:");
            scanf("%d",&year);
            printf("\n");
        } while(year <= 0);
         
        //判断用户输入月份是否正常 
        do
        {
            if(month < 1 || month > 12)
             {
                 printf("\t系统提示:您输入了错误的月份请从新输入...\n");
             }
            printf("\t请输入要查询%d年的第几月:",year);
             scanf("%d",&month);
             printf("\n");
        } while(month < 1 || month > 12);
         
        //判断是否是闰年,以此来确定月份的天数 
        if(leapyear(year) == 1)
         {
             day = a[month];
         }
        else
         {
             day = b[month];
         }
         
        printf("\t您查询的%d年%d月的最大天数有%d天\n",year,month,day);
     }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 已采纳回答 5月24日
  • 创建了问题 5月23日

悬赏问题

  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,