等价类划分法 软件测试

一、实验要求

编写NextDate程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12,1≤day≤31, 1900≤year≤2100),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。
如果输入日期不是当月最后一天,则把day变量的值加1;
如果输入日期是1~11月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;
如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。
关于最后一天的判断:
如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;
如果是有30天的月份(4,6,9,11),day变量值为30;
如果是有29天的月份(闰年的2月),day变量值为29;
如果是有28天的月份(非闰年的2月),day变量值为28。
分析以上问题,设计等价类表和用例表。

二、实验结果

1.等价类表
在这里插入图片描述

在这里插入图片描述
这里附上两种形式写的代码:

#include<stdio.h>
int main()
{
 int year;
 int month,maxmonth=12;
 int day,maxday;
 printf("请输入年份:(1000-3000)");
 scanf("%d",&year);
 if(year<1000||year>3000)
 {
  printf(" input error\n");
  printf("请重新输入年份:(1000-3000)");
  scanf("%d",&year);
 }
 printf("请输入月份:(1-12)");
 scanf("%d",&month);
 if(month<1||month>12)
 {
  printf(" input error\n");
  printf("请重新输入月份:(1000-3000)");
  scanf("%d",&month);
 }
 if(month==4||month==6||month==9||month==11)
 maxday=30;
 else if(month==2)
 {
  if(year%400==0)
   maxday=29;
  else
  {
   if(year%4==0&year%100!=0)
   maxday=29;
   else
   maxday=28;
  }
   
 }
 else
 maxday=31;
 printf("请输入日:(1-31)");
 scanf("%d",&day);
 if(day<1||day>maxday)
 {
  printf(" input error\n");
  printf("请重新输入日:(1-31)");
  scanf("%d",&day);
 }
 else if(month==maxmonth&&day==maxday)
 {
  year=year+1;
  day=1;
  month=1;
 }
 else if(month!=maxmonth&&day==maxday)
 {
  day=1;
  month=month+1;
 }
 else
  day=day+1;
 printf("下一天是%d年%d月%d日",year,month,day);
 return 0;
 
 

 } 
#include<stdio.h>
#include<stdio.h>
int maxday;
 int year;
 int month,maxmonth=12;
 int day;
void panduan()
{
 if(year%400==0)
 maxday=29;
 else
 {
  if(year%4==0&&year%100!=0)
  maxday=29;
  else
  maxday=28;
 }
 

 } 

int main()
{
printf("请输入年份:(1000-3000)");
 scanf("%d",&year);
 if(year<1000||year>3000)
 {
  printf(" input error\n");
  printf("请重新输入年份:(1000-3000)");
  scanf("%d",&year);
 }
 printf("请输入月份:(1-12)");
 scanf("%d",&month);
 if(month<1||month>12)
 {
  printf(" input error\n");
  printf("请重新输入月份:(1000-3000)");
  scanf("%d",&month);
 }
 if(month==4||month==6||month==9||month==11)
 maxday=30;
 else if(month==2)
 {
  panduan();
}
 else
 maxday=31;
 printf("请输入日:(1-31)");
 scanf("%d",&day);
 if(day<1||day>maxday)
 {
  printf(" input error\n");
  printf("请重新输入日:(1-31)");
  scanf("%d",&day);
 }
 else if(month==maxmonth&&day==maxday)
 {
  year=year+1;
  day=1;
  month=1;
 }
 else if(month!=maxmonth&&day==maxday)
 {
  day=1;
  month=month+1;
 }
 else
  day=day+1;
 printf("下一天是%d年%d月%d日",year,month,day);
 return 0;
 
 

 } 
发布了20 篇原创文章 · 获赞 2 · 访问量 333

猜你喜欢

转载自blog.csdn.net/weixin_44931542/article/details/105729234
今日推荐