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

📄 1.c

📁 DS1302C加温度计用LCD显示的C语言程序
💻 C
字号:
//自己看,说的比较详细了.
#include<stdio.h> 
#include<stdlib.h> 

int isLeap(int year); //判断闰年 
int maxDay(int year,int month); //判断某年某月最多天数 
int eachYearTotal(int year,int month,int day); //判断这一天是该年的第几天 
int week(int year,int month,int day); //判断某年某月某日的编号(0-6) 
char *chineseWeek(int number); //将编号转化为星期(日-六) 
void output(int year,int month,int day); //输出该天星期几 
void display(int year,int month); //显示月历 
int check(int year,int month,int day); //检查有效性 
void display1(int year); //输出年历 
void display2(int year,int month); //输出月历 
void display3(int year,int month,int day); //输出日历 
void getMenu(); //调菜单 

void main() 
{ 
    int year,month,day,flag,select; //flag判断输入是否有效 
    while(1) 
    { 
        getMenu(); 
        printf("请输入你的选择: "); 
        fflush(stdin); //清空输入缓冲区 
        scanf("%d",&select); 
        fflush(stdin); 
        switch(select) 
        { 
        case 1: 
            do //do_while检错处理 
            { 
                printf("请输入年: "); 
                scanf("%d",&year); 
                flag=check(year,1,1); 
                if(flag==0) 
                { 
                    printf("输入无效\n"); 
                } 
            }while(flag==0); 
            display1(year); //输出年历 
            break; 
        case 2: 
            do 
            { 
                printf("请输入年月: "); 
                scanf("%d%d",&year,&month); 
                flag=check(year,month,1); 
                if(flag==0) 
                { 
                    printf("输入无效\n"); 
                } 
            }while(flag==0); 
            display2(year,month); //输出月历 
            break; 
        case 3: 
            do 
            { 
                printf("请输入年月日: "); 
                scanf("%d%d%d",&year,&month,&day); 
                flag=check(year,month,day); 
                if(flag==0) 
                { 
                    printf("输入无效\n"); 
                } 
            }while(flag==0); 
            display3(year,month,day); //输出日历 
            break; 
        case 4: 
            exit(0); 
        default: 
            printf("输入有误!\n\n"); 
        } 
    } 
} 

int isLeap(int year) //判断闰年 
{ 
    if(year%4==0&&year%100!=0||year%400==0) 
        return 1; 
    else 
        return 0; 
} 

int maxDay(int year,int month) //判断某年某月最多天数 
{ 
    int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; 
    if(isLeap(year)) 
        a[1]=29; 
    return a[month-1]; 
} 

int eachYearTotal(int year,int month,int day) //判断这一天是该年的第几天 
{ 
    int i,sum=0; 
    for(i=1;i<month;i++) 
    { 
        sum+=maxDay(year,i); 
    } 
    sum+=day; 
    return sum; 
} 

int week(int year,int month,int day) //判断某年某月某日的编号(0-6) 
{ 
    int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachYearTotal(year,month,day); 
    number%=7; 
    return number; 
} 

char *chineseWeek(int number) //将编号转化为星期(日-六) 
{ 
    switch(number) 
    { 
    case 0: 
        return "星期日"; 
    case 1: 
        return "星期一"; 
    case 2: 
        return "星期二"; 
    case 3: 
        return "星期三"; 
    case 4: 
        return "星期四"; 
    case 5: 
        return "星期五"; 
    case 6: 
        return "星期六"; 
    default: 
        return "error"; 
    } 
} 

void output(int year,int month,int day) //输出该天星期几 
{ 
    int number=week(year,month,day); 
    printf(" 公元%d年%d月%d日%10s\n\n",year,month,day,chineseWeek(number)); 
} 

void display(int year,int month) //显示日历 
{ 
    int max,number,i,j=1; 
    max=maxDay(year,month); 
    number=week(year,month,1); //该年该月的1号为星期几作为起始位 
    printf("%4s%4s%4s%4s%4s%4s%4s\n","日","一","二","三","四","五","六"); 
    for(i=0;i<number;i++) //找起始位 
    { 
        printf(" "); 
    } 
    while(j<=max) 
    { 
        printf("%4d",j); 
        if(i%7==6) //周六换行 
        { 
            printf("\n"); 
        } 
        i++; 
        j++; 
    } 
    printf("\n\n"); 
} 

int check(int year,int month,int day) //检查有效性 
{ 
    if(year<0||month<1||month>12||day<1||day>maxDay(year,month)) 
        return 0; 
    else 
        return 1; 
} 

void display1(int year) //输出年历 
{ 
    int i; 
    printf("\n"); 
    for(i=1;i<=12;i++) 
    { 
        printf(" 公元%d年%d月\n\n",year,i); 
        display(year,i); 
    } 
} 

void display2(int year,int month) //输出月历 
{ 
    printf("\n 公元%d年%d月\n\n",year,month); 
    display(year,month); 
} 

void display3(int year,int month,int day) //输出日历 
{ 
    printf("\n"); 
    output(year,month,day); //显示星期几 
    display(year,month); 
} 

void getMenu() //调菜单 
{ 
    printf("1.年历\t2.月历\t3.日历\t4.退出\n"); 
} 


⌨️ 快捷键说明

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