分别用C++和Java写的计算后天的日期代码

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
    #include<iostream>  
    #include<cstdio>  
    #include<cstring>  
    using namespace std;  
    bool checkNum(char c){  
        if(c >='0' && c <='9')  
            return true;  
        return false;  
    }  
    bool checkString(string str){  
        if(checkNum(str[0])&&checkNum(str[1])&&checkNum(str[2])  
           &&checkNum(str[3])&&(str[4]=='-')&&checkNum(str[5])  
           &&checkNum(str[6])&&(str[7]=='-')&&checkNum(str[8])&&checkNum(str[9]))  
            return true;  
        return false;  
    }  
    int main(){  
        string str;  
        int year;  
        int month;  
        int day;  
        while(cin>>str){  
           int flag = 1;   
          if(!checkString(str)){  
               flag=0;  
               cout<<"您输入的日期格式不符合要求"<<endl<<endl;  
          }else{  
            year=(str[0]-'0')*1000+(str[1]-'0')*100+(str[2]-'0')*10+(str[3]-'0');  
            month=(str[5]-'0')*10+(str[6]-'0');  
            day=(str[8]-'0')*10+(str[9]-'0');  
            if(month==1 || month==3 || month==5 || month==7   
                || month==8 || month==10 || month==12){  
                if(day >=1 && day <=31){  
                    day += 2;  
                    if(day > 31){  
                        month += 1;  
                        day = 1;  
                    }  
                    if(month > 12){  
                        year += 1;  
                        month = 1;  
                    }  
                }else{  
                    flag=0;  
                    cout<<"您输入的日期不存在"<<endl<<endl;  
                }  
            }  
            else if(month==4 || month==6 || month==9 || month==11){  
                if(day >=1 && day <=30){  
                    day += 2;  
                    if(day > 30){  
                        month += 1;  
                        day = 1;  
                    }  
                    if(month > 12){  
                        year += 1;  
                        month = 1;  
                    }  
                }else{  
                    flag=0;  
                    cout<<"您输入的日期不存在"<<endl<<endl;  
                }  
            }  
            else if(month == 2){  
                if((year%4==0 && year%100!=0) || (year%400==0)){    
                //如果为闰年   
                    if(day >=1 && day <=29){  
                        day += 2;  
                        if(day > 29){  
                            month += 1;  
                            day = 1;  
                        }  
                        if(month > 12){  
                            year += 1;  
                            month = 1;  
                        }  
                    }else{  
                       flag=0;  
                       cout<<"您输入的日期不存在"<<endl<<endl;  
                    }  
                }  
                else{  
                    if(day >=1 && day <=28){  
                        day += 2;  
                        if(day > 28){  
                            month += 1;  
                            day = 1;  
                        }  
                        if(month > 12){  
                            year += 1;  
                            month = 1;  
                        }  
                    }else{  
                       flag=0;  
                       cout<<"您输入的日期不存在"<<endl<<endl;  
                    }  
                }  
            }  
            else{  
                cout<<"您输入的月份不存在"<<endl<<endl;  
            }  
          }  
          if(flag==1){  
            cout<<"后天的日期为: "<<year<<"年"<<month<<"月"<<day<<"日"<<endl<<endl;  
          }  
        }  
        return 0;  
    }  

    import java.util.Scanner;  
      
    public class CalculateTheDayAfterTomorrow {  
      
        public static boolean checkNum(char c) {  
            // 判断当前字符是否为数字  
            if (c >= '0' && c <= '9')  
                return true;  
            return false;  
        }  
      
        public static boolean checkString(String str) {  
            // 判断字符串是否为指定的日期格式:yyyy-mm-dd  
            if (checkNum(str.charAt(0)) && checkNum(str.charAt(1))  
                    && checkNum(str.charAt(2)) && checkNum(str.charAt(3))  
                    && (str.charAt(4) == '-') && checkNum(str.charAt(5))  
                    && checkNum(str.charAt(6)) && (str.charAt(7) == '-')  
                    && checkNum(str.charAt(8)) && checkNum(str.charAt(9)))  
                return true;  
            return false;  
        }  
      
        public static void main(String args[]) {  
            String str;  
            int year = 0;  
            int month = 0;  
            int day = 0;  
            Scanner scanner = new Scanner(System.in);  
            while ((str = scanner.nextLine()) != null) {  
                int flag = 1;  
                if (!checkString(str)) {  
                    flag = 0;  
                    System.out.println("您输入的日期格式不符合要求" + "\n");  
                } else {  
                    // 计算年月日  
                    year = (str.charAt(0) - '0') * 1000 + (str.charAt(1) - '0')  
                            * 100 + (str.charAt(2) - '0') * 10  
                            + (str.charAt(3) - '0');  
                    month = (str.charAt(5) - '0') * 10 + (str.charAt(6) - '0');  
                    day = (str.charAt(8) - '0') * 10 + (str.charAt(9) - '0');  
                    // 每个月的天数不一样,分类讨论  
                    if (month == 1 || month == 3 || month == 5 || month == 7  
                            || month == 8 || month == 10 || month == 12) {  
                        if (day >= 1 && day <= 31) {  
                            day += 2;  
                            if (day > 31) { // 已经跨月了  
                                month += 1;  
                                day -= 31;  
                            }  
                            if (month > 12) { // 后两天跨年了  
                                year += 1;  
                                month = 1;  
                            }  
                        } else {  
                            flag = 0;  
                            System.out.println("您输入的日期不存在" + "\n");  
                        }  
                    } else if (month == 4 || month == 6 || month == 9  
                            || month == 11) {  
                        if (day >= 1 && day <= 30) {  
                            day += 2;  
                            if (day > 30) {  
                                month += 1;  
                                day -= 30;  
                            }  
                            if (month > 12) {  
                                year += 1;  
                                month = 1;  
                            }  
                        } else {  
                            flag = 0;  
                            System.out.println("您输入的日期不存在" + "\n");  
                        }  
                    } else if (month == 2) {  
                        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {  
                            // 如果为闰年  
                            if (day >= 1 && day <= 29) {  
                                day += 2;  
                                if (day > 29) {  
                                    month += 1;  
                                    day -= 29;  
                                }  
                                if (month > 12) {  
                                    year += 1;  
                                    month = 1;  
                                }  
                            } else {  
                                flag = 0;  
                                System.out.println("您输入的日期不存在" + "\n");  
                            }  
                        } else {// 平年  
                            if (day >= 1 && day <= 28) {  
                                day += 2;  
                                if (day > 28) {  
                                    month += 1;  
                                    day -= 28;  
                                }  
                                if (month > 12) {  
                                    year += 1;  
                                    month = 1;  
                                }  
                            } else {  
                                flag = 0;  
                                System.out.println("您输入的日期不存在" + "\n");  
                            }  
                        }  
                    } else {  
                        flag = 0;  
                        System.out.println("您输入的月份不存在" + "\n");  
                    }  
                }  
                if (flag == 1) { // 通过flag标志输入的日期是否合法  
                    System.out.println("后天的日期为: " + year + "年" + month + "月" + day  
                            + "日" + "\n");  
                }  
            }  
        }  
    }  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:python获取一组汉字的拼音首字母

下一篇:C# 高精度延迟代码执行时间(us/ns)