一.实验内容:
- 三角形问题的等价类测试和边界值分析测试
- NextDate()函数决策表法测试
二.实验要求:给出测试用例和测试结果
三.实验步骤及结果:
3.1(三角形)实验代码(c)
#include<stdio.h>
#include<stdlib.h>
int a=0,b=0,c=0;
void shuru();
void panduan(int a1,int b1,int c1);
int main()
{
char se;
shuru();
panduan(a,b,c);
while(1)
{
printf("是否要继续y or n :");
scanf("%c",&se);
if(se=='\n') scanf("%c",&se);
switch(se)
{
case 'y':
shuru();
panduan(a,b,c);
break;
case 'n':
return 0;
}
}
return 0;
}
void shuru()
{
printf("Please enter 三角形三边 (a,b,c)\n");
scanf("%d,%d,%d",&a,&b,&c);
while((a<1||a>100)||(b<1||b>100)||(c<1||c>100))
{
if(a==0||b==0||c==0) printf("边长不能为0\n");
else if(a<0||b<0||c<0) printf("边长不能为负\n");
else printf("Please enter 1-100之间的整数\n");
scanf("%d,%d,%d",&a,&b,&c);
}
}
void panduan(int a1,int b1,int c1)
{
int m1=a1+b1;
int m2=a1+c1;
int m3=b1+c1;
if(a1>=m3||b1>=m2||c1>=m1) printf("非三角形\n");
else if(a1!=b1&&a1!=c1&&b1!=c1) printf("一般三角形\n");
else if((a1==b1&&b1!=c1)||(a1==c1&&a1!=b1)||(c1==b1&&a1!=c1)) printf("等腰三角形\n");
else if(a1==b1&&b1==c1) printf("等边三角形\n");
}
3.2测试用例和结果(反映在图中)
测试用例 输入a,b,c 输出
1 7,8,9 一般三角形
2 1,1,6 非三角形
3 5,5,9 等腰三角形
4 4,4,4 等边三角形
5 0,1,0 边长不能为0
6 4,-1,6 边长不能为负
7 101,101,101 请输入1-100之间的整数
测试图形结果:
3.3(NextDate())实验代码(c)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int year;
int month,day;
int leap;//标志是闰年还是平年,为1时是闰年,为2时是平年
time_t t;//本来以下是用来判断格式输入是否正确的,但是结果不理想
struct tm stm;//A
while(1){//循环测试
printf("请输入年(yyyy)/月(mm)/日(dd)\n");
scanf("%d/%d/%d",&stm.tm_year,&stm.tm_mon,&stm.tm_mday);//B
year=stm.tm_year;month=stm.tm_mon;day=stm.tm_mday;//C
t=mktime(&stm);//D
printf("*****输出结果*****\n");
if(t!=-1)//E有问题,不管输入格式是什么,t永远是-1
{
printf("输入的日期时间格式出错!\n");
continue;
}
if(year%4==0)//年份判断
{
if(year%100==0)
{
if(year%400==0)
{
leap=1;
printf("%ld年%d月%d日是闰年\n",year,month,day);
}
else
{
leap=2;
printf("%ld年%d月%d日是平年\n",year,month,day);
}
}
else
{
leap=1;
printf("%ld年%d月%d日是闰年\n",year,month,day);
}
}
else
{
leap=2;
printf("%ld年%d月%d日是平年\n",year,month,day);
}
if(month==2)
{
if(leap==1)
{
printf("该月有29天\n");
if(day>29)
{
printf("对不起!您输入的日期超出该月范围\n");
continue;
}
else if(day==29)
{
month=month+1;
day=1;
}
else day=day+1;
}
if(leap==2)
{
printf("该月有28天\n");
if(day>28)
{
printf("对不起!您输入的日期超出该月范围\n");
continue;
}
else if(day==28)
{
month=month+1;
day=1;
}
else day=day+1;
}
}
else if(month==4||month==6||month==9||month==11)
{
printf("该月有30天\n");
if(day>30)
{
printf("对不起!您输入的日期超出该月范围\n");
continue;
}
else if(day==30)
{
month=month+1;
day=1;
}
else day=day+1;
}
else
{
printf("该月有31天\n");
if(day>31)
{
printf("对不起!超出该月范围\n");
continue;
}
else if(day==31)
{
if(month==12&&day==31)
{
year=year+1;
month=1;
day=1;
}
else
{
month=month+1;
day=1;
}
}
else day=day+1;
}
printf("NEXT日期:%ld年%d月%d日\n",year,month,day);
}
return 0;
}
3.4测试用例和结果(反映在图中)
决策表测试用例 month day year 预期输出
Test1~3 8 20 2000 2001/8/21
Test4 8 31 2000 2001/9/1
Test5 8 32 2001 对不起!超出该月范围
Test6~9 1 16 2001 2001/1/17
Test10 1 31 2013 2013/2/1
Test 11~14 12 31 2010 2011/1/1
Test15 12 31 2002 2003/1/1
Test16 2 29 2004 2004/3/1
Test17 2 28 2001 2001/3/1
Test18 2 30 2002 对不起!超出该月范围
测试界面效果:
请输入年(yyyy)/月(mm)/日(dd)
2000/8/20
*****输出结果*****
2000年8月20日是闰年
该月有31天
NEXT日期:2000年8月21日
请输入年(yyyy)/月(mm)/日(dd)
2000/8/31
*****输出结果*****
2000年8月31日是闰年
该月有31天
NEXT日期:2000年9月1日
请输入年(yyyy)/月(mm)/日(dd)
2000/8/32
*****输出结果*****
2000年8月32日是闰年
该月有31天
对不起!超出该月范围
请输入年(yyyy)/月(mm)/日(dd)
2001/8/32
*****输出结果*****
2001年8月32日是平年
该月有31天
对不起!超出该月范围
请输入年(yyyy)/月(mm)/日(dd)
2001/1/16
*****输出结果*****
2001年1月16日是平年
该月有31天
NEXT日期:2001年1月17日
请输入年(yyyy)/月(mm)/日(dd)
2013/1/31
*****输出结果*****
2013年1月31日是平年
该月有31天
NEXT日期:2013年2月1日
请输入年(yyyy)/月(mm)/日(dd)
2012/12/31
*****输出结果*****
2012年12月31日是闰年
该月有31天
NEXT日期:2013年1月1日
请输入年(yyyy)/月(mm)/日(dd)
2010/12/31
*****输出结果*****
2010年12月31日是平年
该月有31天
NEXT日期:2011年1月1日
请输入年(yyyy)/月(mm)/日(dd)
2002/12/31
*****输出结果*****
2002年12月31日是平年
该月有31天
NEXT日期:2003年1月1日
请输入年(yyyy)/月(mm)/日(dd)
2004/2/29
*****输出结果*****
2004年2月29日是闰年
该月有29天
NEXT日期:2004年3月1日
请输入年(yyyy)/月(mm)/日(dd)
2001/2/28
*****输出结果*****
2001年2月28日是平年
该月有28天
NEXT日期:2001年3月1日
请输入年(yyyy)/月(mm)/日(dd)
2000/2/30
*****输出结果*****
2000年2月30日是闰年
该月有29天
对不起!您输入的日期超出该月范围
请输入年(yyyy)/月(mm)/日(dd)