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版

package test01;

import java.util.Scanner;

public class Test01_nextdate {

public static void main(String[] args) {
  // TODO Auto-generated method stub
  int y=0 ,m=0,d=0;
  System.out.println("请输入年  月 日(用空格隔开),-1退出:");
  Scanner scan = new Scanner(System.in);
  while(true){
  y=scan.nextInt();
  if(y == -1)System.exit(0);;//-1退出程序
  m=scan.nextInt();
  d=scan.nextInt();
  System.out.println(nextDate(y,m,d));
  }
 }

public static String nextDate(int y,int m,int d)//nextDate函数
 {
  String newDate = "";//用来接收日期
  boolean flag = true;//作为错误的标识
  boolean isR = ((y%4 == 0)&&(y%100 != 0))||(y %400 == 0);//作为是否为闰年的标识
  switch(m)
  {
  case 1:
  case 3:
  case 5:
  case 7:
  case 8:
  case 10:
  case 12:
   if(d<31)d++;
   else if(d==31)
   {
    if(m!=12)
    {
     m++;
     d=1;
    }
    else
    {
     y++;
     m=1;
     d=1;
    }
   }
   else{
    newDate="日期超出范围";
    flag=false;
   }
   break;
   
  case 4:
  case 6:
  case 9:
  case 11:
   if(d<30)d++;
   else if(d==30)
   {
    m++;
    d=1;
   }
   else{
    newDate="日期超出范围";
    flag=false;
   }
   break;
  case 2:
   if(isR)
   {
    if(d<29) d++;
    else if(d==29)
    {
     m++;
     d=1;
    }
    else{
     newDate="日期超出范围";
     flag=false;
    }
   }
   else{
    if(d<28) d++;
    else if(d==28)
    {
     m++;
     d=1;
    }
    else{
     newDate="日期超出范围";
     flag=false;
    }
   }
   break;
   
   default://如果月份不在1~12之间
    newDate="月份超出范围";
    flag=false;
    break;
  }
  
  if(flag)
  {
   if(y<1912 || y>2050)
   {
    newDate="年份超出范围";
    flag=false;
   }
  }
  if(flag)
  {
   newDate=y+"年"+m+"月"+d+"日";
  }
  else{
  flag=true;//还原标识
  }
  return newDate;
 }
}

C++版

# include <stdio.h>
# include <stdlib.h>
void nextdate(int y, int m, int d)
{
 int flag = 1; //标识是否为错误
 int r=((y%4==0)&&(y%100!=0))||(y%400==0);//标识是否为闰年
 switch(m)
 {
  case 1:
    case 3:
     case 5:
      case 7:
       case 8:
        case 10:
         case 12:
          if (d<31) d++;
          else if(d==31)
          {
           if(m!=12){
            m++;
            d=1;
           }
           else{
            y++;
            m=1;
            d=1;
           }
          }
          else
          {
           flag=0;
           printf("日期超出范围\n");
          }
          break;
          
          case 4:
              case 6:
            case 9:
             case 11:
              if(d<30)d++;
              else if(d==30)
              {
               m++;
               d=1;
              }
              else
              {
               flag=0;
               printf("日期超出范围\n");
              
              }
              break;
              
              case 2:
               if(r==1) {
                if(d<29)d++;
                else if(d==29)
                {
                 m++;
                 d=1;
                }
                else
                {
                 flag=0;
                 printf("日期超出范围\n");
                }
                
               }
               else{
                if(d<28)d++;
                else if(d==28)
                {
                 m++;
                 d=1;
                }
                else
                {
                 flag=0;
                 printf("日期超出范围\n");
                }
               }
               break;
               default:
                flag=0;
                                                           printf("月份超出范围\n");
                break;
          
  }
//  if(m<1 || m>12)
//  {
//   flag=0;
//   printf("月份超出范围");
//  }
  if(y<1912 || y>2050){
   flag=0;
   printf("年份超范围\n");
  }
  if(flag!=0)//如果没有错误输出nextdate
  {
   printf("%d,%d,%d\n",y,m,d);
      }
 flag=1;//返回初始值
}
  int main()
  {
  int y=0,m=0,d=0;
  printf("请输入年,月,日:(用逗号隔开,输入-1退出):\n"); 
  while(scanf("%d,%d,%d",&y,&m,&d)!=EOF&& y!=-1)
  {
  nextdate(y,m,d);
  printf("请继续输入(用逗号隔开,输入-1退出):\n");
}
  system("pause");
  return 0;
  }

时间: 2024-10-14 12:10:35

UT源码+105032014074的相关文章

UT源码+158

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

UT源码+117

设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Cellphone screen protector)三个部件,每个部件单价为:耳机80元,手机壳10元,手机贴膜8元,每月月末向制造商报告销量,制造商根据销量给销售商佣金.如果销售额不足1000元按10%提取佣金,1000-1800元部分按15%提取佣金,超过1800元部分按20%提取佣金. 程序要求: 1)先显

UT源码105032014052

1)设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等腰直角三角形,判断为等腰三角形) 现在要求输入三个整数a.b.c,必须满足以下条件: 条件1   1≤a≤100          条件4   a<b+ c 条件2   1≤b≤100          条件5   b<a+ c 条件3   1≤c≤100          条件6   c<a

UT源码 040

设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等腰直角三角形,判断为等腰三角形) 现在要求输入三个整数a.b.c,必须满足以下条件: 条件1   1≤a≤100          条件4   a<b+ c 条件2   1≤b≤100          条件5   b<a+ c 条件3   1≤c≤100          条件6   c<a+

UT源码_105032014033

需求描述: 设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Cellphone screen protector)三个部件,每个部件单价为:耳机80元,手机壳10元,手机贴膜8元,每月月末向制造商报告销量,制造商根据销量给销售商佣金.如果销售额不足1000元按10%提取佣金,1000-1800元部分按15%提取佣金,超过1800元部分按20%提取佣金. 程序要求

UT源码 065 ( java version )

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

UT源码+105032014036

设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Cellphone screen protector)三个部件,每个部件单价为:耳机80元,手机壳10元,手机贴膜8元,每月月末向制造商报告销量,制造商根据销量给销售商佣金.如果销售额不足1000元按10%提取佣金,1000-1800元部分按15%提取佣金,超过1800元部分按20%提取佣金. 程序要求: 1)先显

UT源码+105032014043

(1)设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等腰直角三角形,判断为等腰三角形) 现在要求输入三个整数a.b.c,必须满足以下条件: 条件1   1≤a≤100          条件4   a<b+ c 条件2   1≤b≤100          条件5   b<a+ c 条件3   1≤c≤100          条件6   c<

UT源码105032014098

(2)NextDate函数问题 NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性 NextDate函数包含三个变量month.day和year,函数的输出为输入日期后一天的日期. 要求输入变量month.day和year均为整数值,并且满足下列条件: 条件1  1≤ month ≤12  否则输出,月份超出范围 条件2  1≤ day ≤31 否则输出,日期超出范围 条件3  1912≤ year ≤2050  否则输出:年份超出范围 String  nextdate(in