这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 岭南EE码农港 » C语言课程设计作业--万年历

共3条 1/1 1 跳转至

C语言课程设计作业--万年历

菜鸟
2014-12-12 21:46:31     打赏
(1)代码
/* Note:Your choice is C IDE */
#include "stdio.h"
void screen(); 
void printmonth(int,int);  
void leapyear();  
void printyearday();  
int IsLeapYear(int);  
int whatisita(int,int);  
int everymonth(int,int);  
void whatisit();  
void printmonthday();  
char*week[]={"Sun.","Mon.","Tue.","Wedn.","Thu.","Fri.","Sat."};  
void main()  
{  
    screen();  
}  
void screen()  
{  
    int n;    
    while(1)    
    {    
      printf("标题:万年历查询程序:\n");    
      printf("1.查询某月的最大天数
");    
      printf("2.查询某年是否是闰年
");    
      printf("3.打印某年的全年日历
");    
      printf("4.查询某年某月某日是星期几\n");    
      printf("5.退出
");  
      printf("请输入要查询的选项:\n");    
      printf("(My ID number is:2013304132)\n"); 
      scanf("%d",&n);    
      switch(n)    
      {    
        case 1:printmonthday();break;    
        case 2:leapyear();break;    
        case 3:printyearday();break;    
        case 4:whatisit();break;    
        case 5:return;    
        default:printf("您的输入有误,请重新按要求输入!\n");
        break;    
      }    
    }    
}  
void printmonthday()       /*打印某年的某月最大天数的函数*/
{    
    int y,m,value,k=1;char yn;    
    while(k)    
    {    
        printf("请输入查询的年份,月份:\n");    
        scanf("%d,%d",&y,&m);    
        value=everymonth(y,m);    
        printf("%d年%d月的最大天数为%d:\n",y,m,value);    
        printf("%c",yn);
        getchar();    
        if(yn=='y'||yn=='y')    
             k=1;    
        else k=0;   
        printf("是否继续查询某年某月的最大天数?(Y/N)");    
        scanf("%c",&yn);    
        getchar();    
        if(yn=='y'||yn=='y')    
            k=1;    
        else k=0;    
    }    
}    
                      
int IsLeapYear(int year)     /*先判断出某年是否为闰年*/
{return (((year%4)==0 && (year%100)!=0) || ((year%400)==0));}    
    
void leapyear()             /*再进行查询某年是否为闰年*/
{    
    int y,k=1;char yn;    
    while(k)    
    {    
        printf("请输入要查询的年份:\n");    
        scanf("%d",&y);    
        if(IsLeapYear(y))    
            printf("是闰年!\n");    
        else    
        printf("不是闰年!\n");    
        printf("是否继续查询某年为闰年?(Y/N)");    
        scanf("%c",&yn);    
        getchar();    
        if(yn=='y'||yn=='y')    
            k=1;    
        else k=0;    
    }    
}    
    
int whatisita(int y,int m)      /*计算出该天是星期几*/
{    
    int n,i,sum;    
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},s=0;    
    for(i=1;i2)    
        s=s+i;    
        n=(y-1+(y-1)/4-(y-1)/100+(y-1)/400+sum)&7;    
    return n;    
}    
    
void printyearday()        /*打印某年的全年日历*/
{    
    int y,value,sum,i,k=1;char yn;    
    while(k)    
    {    
        printf("请输入查询日历的年份:
");    
        scanf("%d",&y);    
        for(i=1;i<=12;i++)    
        {    
            printf("%d年%d月的信息:\n",y,i);    
            value=whatisita(y,i);    
            sum=everymonth(y,i);    
            printmonth(value,  sum);    
            printf("\n");    
        }    
        printf("是否继续查询?(Y/N)");    
        scanf("%c",&yn);    
        getchar();    
        if(yn=='y'||yn=='y')    
            k=1;    
        else k=0;    
    }    
}    
    
int everymonth(int year,int month)    /*查询某月的最大天数*/
{    
    int s,i;    
    static int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};    
    s=a[month];    
    if(IsLeapYear(year)&&month==2)    
        s=s+i;    
    return s;    
}   

    void whatisit()         /*查询某年某月某日是星期几?*/
{    
    int y,m,d,s,k=1,sum,n,i;    
    char yn;    
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};    
    while(k)    
    {   printf("请依次输入年,月,日:\n");    
        scanf("%d,%d,%d",&y,&m,&d);    
        s=0;    
        for(i=1;i2)s=s+1;    
          sum=s;    
          n=(y-1+(y-1)/4-(y-1)/100+(y-1)/400+sum)%7;    
          printf("这天是%s\n",week[n]);    
          printf("是否继续查询(Y/N)?");    
          scanf("%c",&yn);    
          getchar();    
        if(yn=='y'||yn=='Y')k=1;    
        else k=0;    
        printf("是否继续查询某年某月某日是星期几?(Y/N)");    
        scanf("%c",&yn);    
        getchar();    
        if(yn=='y'||yn=='y')    
            k=1;    
        else k=0;    
    }    
}    

void printmonth(int value,int sum)       /*打印月历*/
{    
    int n,i=0,j;    
    char*x[7]={"Sun.","Mon.","Tue.","Wedn.","Thu.",    
               "Fri.","Sat."};   
    for(j=0;j<7;j++)    
    {    
      printf("%s",x[j]);    
    }    
    printf("\n");    
    while(i0)    
         printf("  %d",n);    
      else    
        printf("   %d",n);    
        n++;    
    }    
}
(2)运行结果

 

 

 

 

 

 

(3)我的总结

a、随着信息时代的发展,我们的生活变得十分的快捷和美好。想查询任何一个年份的具体日期都可以得心应手,显得十分信息化和科技化。相信中国一定会在信息快速发展的时代变得更加繁荣昌盛。

b、通过这次程序设计,懂得编程要更加严谨和细心,否则钻死牛角尖都查不出问题。

c、由这次作业,对C语言编程有了更深入的了解。




关键词: 语言     作业     万年历    

菜鸟
2014-12-19 19:52:14     打赏
2楼

水平低级者,请大家多多指教!谢谢


菜鸟
2015-03-04 16:23:05     打赏
3楼

多练习


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]