有偿请求编写c语音程序

img

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

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

#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

只限c语言?

结果如图,满意的话可以私我,要进行修改也可

img

公元1年1月1日开始就离谱,1582年10月可是少了整整10天

运行结果如下:
1900年之前的日期测试:计算星期几(背景图是百度搜索的日期)

img

2022年5月24日的日期测试:计算星期几

img

闰年判断:

img

某月的最大天数:

img

满意的话私信我。