• UT源码+105032014074


    NextDate函数问题 

    NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性

           NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。 要求输入变量month、day和year均为整数值,并且满足下列条件:

       条件1  1≤ month ≤12  否则输出,月份超出范围

       条件2  1≤ day ≤31 否则输出,日期超出范围

       条件3  1912≤ year ≤2050  否则输出:年份超出范围

         String  nextdate(int m,int d,int y)

       注意返回值是字符串。

    程序要求:

    1)先显示“请输入日期”

    2)不满足条件1,返回:“月份超出范围”;不满足条件2,返回:“日期超出范围”;不满足条件3,返回:“年份超出范围”;如果出现多个不满足,以最先出现不满足的错误返回信息。

    3)条件均满足,则输出第二天的日期:格式“****年**月**日”(如果输入2050年12月31日,则正常显示2051年1月1日

    Java版

      1 package test01;
      2 import java.util.Scanner;
      3 public class Test01_nextdate {
      4  public static void main(String[] args) {
      5   // TODO Auto-generated method stub
      6   int y=0 ,m=0,d=0;
      7   System.out.println("请输入年  月 日(用空格隔开),-1退出:");
      8   Scanner scan = new Scanner(System.in);
      9   while(true){
     10   y=scan.nextInt();
     11   if(y == -1)System.exit(0);;//-1退出程序
     12   m=scan.nextInt();
     13   d=scan.nextInt();
     14   System.out.println(nextDate(y,m,d));
     15   }
     16  }
     17  public static String nextDate(int y,int m,int d)//nextDate函数
     18  {
     19   String newDate = "";//用来接收日期
     20   boolean flag = true;//作为错误的标识
     21   boolean isR = ((y%4 == 0)&&(y%100 != 0))||(y %400 == 0);//作为是否为闰年的标识
     22   switch(m)
     23   {
     24   case 1:
     25   case 3:
     26   case 5:
     27   case 7:
     28   case 8:
     29   case 10:
     30   case 12:
     31    if(d<31)d++;
     32    else if(d==31)
     33    {
     34     if(m!=12)
     35     {
     36      m++;
     37      d=1;
     38     }
     39     else
     40     {
     41      y++;
     42      m=1;
     43      d=1;
     44     }
     45    }
     46    else{
     47     newDate="日期超出范围";
     48     flag=false;
     49    }
     50    break;
     51    
     52   case 4:
     53   case 6:
     54   case 9:
     55   case 11:
     56    if(d<30)d++;
     57    else if(d==30)
     58    {
     59     m++;
     60     d=1;
     61    }
     62    else{
     63     newDate="日期超出范围";
     64     flag=false;
     65    }
     66    break;
     67   case 2:
     68    if(isR)
     69    {
     70     if(d<29) d++;
     71     else if(d==29)
     72     {
     73      m++;
     74      d=1;
     75     }
     76     else{
     77      newDate="日期超出范围";
     78      flag=false;
     79     }
     80    }
     81    else{
     82     if(d<28) d++;
     83     else if(d==28)
     84     {
     85      m++;
     86      d=1;
     87     }
     88     else{
     89      newDate="日期超出范围";
     90      flag=false;
     91     }
     92    }
     93    break;
     94    
     95    default://如果月份不在1~12之间
     96     newDate="月份超出范围";
     97     flag=false;
     98     break;
     99   }
    100   
    101   if(flag)
    102   {
    103    if(y<1912 || y>2050)
    104    {
    105     newDate="年份超出范围";
    106     flag=false;
    107    }
    108   }
    109   if(flag)
    110   {
    111    newDate=y+"年"+m+"月"+d+"日";
    112   }
    113   else{
    114   flag=true;//还原标识
    115   }
    116   return newDate;
    117  }
    118 }

    C++版

      1 # include <stdio.h>
      2 # include <stdlib.h>
      3 void nextdate(int y, int m, int d)
      4 {
      5  int flag = 1; //标识是否为错误
      6  int r=((y%4==0)&&(y%100!=0))||(y%400==0);//标识是否为闰年 
      7  switch(m)
      8  {
      9   case 1:
     10     case 3:
     11      case 5:
     12       case 7:
     13        case 8:
     14         case 10:
     15          case 12:
     16           if (d<31) d++;
     17           else if(d==31) 
     18           {
     19            if(m!=12){
     20             m++;
     21             d=1;
     22            }
     23            else{
     24             y++;
     25             m=1;
     26             d=1;
     27            }
     28           }
     29           else 
     30           {
     31            flag=0;
     32            printf("日期超出范围
    "); 
     33           }
     34           break;
     35           
     36           case 4:
     37               case 6:
     38             case 9:
     39              case 11:
     40               if(d<30)d++;
     41               else if(d==30)
     42               {
     43                m++;
     44                d=1;
     45               }
     46               else
     47               {
     48                flag=0;
     49                printf("日期超出范围
    "); 
     50               
     51               }
     52               break;
     53               
     54               case 2:
     55                if(r==1) {
     56                 if(d<29)d++;
     57                 else if(d==29)
     58                 {
     59                  m++;
     60                  d=1;
     61                 }
     62                 else
     63                 {
     64                  flag=0;
     65                  printf("日期超出范围
    ");
     66                 }
     67                 
     68                }
     69                else{
     70                 if(d<28)d++;
     71                 else if(d==28)
     72                 {
     73                  m++;
     74                  d=1;
     75                 }
     76                 else
     77                 {
     78                  flag=0;
     79                  printf("日期超出范围
    ");
     80                 }
     81                }
     82                break; 
     83                default:
     84                 flag=0;
     85                                                            printf("月份超出范围
    ");
     86                 break;
     87            
     88   } 
     89 //  if(m<1 || m>12)
     90 //  {
     91 //   flag=0;
     92 //   printf("月份超出范围");
     93 //  }
     94   if(y<1912 || y>2050){
     95    flag=0;
     96    printf("年份超范围
    ");
     97   }
     98   if(flag!=0)//如果没有错误输出nextdate 
     99   {
    100    printf("%d,%d,%d
    ",y,m,d);
    101       } 
    102  flag=1;//返回初始值 
    103 } 
    104   int main()
    105   { 
    106   int y=0,m=0,d=0;
    107   printf("请输入年,月,日:(用逗号隔开,输入-1退出):
    ");  
    108   while(scanf("%d,%d,%d",&y,&m,&d)!=EOF&& y!=-1)
    109   {
    110   nextdate(y,m,d);
    111   printf("请继续输入(用逗号隔开,输入-1退出):
    ");
    112 }
    113   system("pause");
    114   return 0;
    115   }
  • 相关阅读:
    PIC基础学习3
    增强WebClient的同步下载功能
    同步模式下的端口映射程序
    .Net并行库介绍——Parallel
    写了一个测试正则表达式的小工具
    Windows 7下的虚拟光驱
    昨天发的一篇帖子竟然上了60天点击排行榜了
    .Net中的Junction Points操作
    在技嘉主板上实现USB启动
    正则表达式测试工具原型完成
  • 原文地址:https://www.cnblogs.com/linpanhuang/p/6530604.html
Copyright © 2020-2023  润新知