首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知C源程序如下: /*Input today’s date,output tomorrow’s date * / /* version 2 * / #include<stdio. h> struct ydate { int
已知C源程序如下: /*Input today’s date,output tomorrow’s date * / /* version 2 * / #include<stdio. h> struct ydate { int
admin
2010-06-15
32
问题
已知C源程序如下:
/*Input today’s date,output tomorrow’s date * /
/* version 2 * /
#include<stdio. h>
struct ydate
{ int day; int month; int year;};
int leap(struct ydate d)
{ if((d. year%4==0&&d. year%100 ! =0)||(d. year%400==0))
return 1;
else
return 0;
}
int numdays(struct ydate d)
{ int day;
static int daytab[]=
{31,28,31,30,31,30,3l,31,30,31,30,31};
if(1eap(d)&&d. month==2)
day=29;
else
day=daytabEd. month-1];
return day;
}
int main(void)
{ struct ydate today,tomorrow;printf("format of date is:year,month,day输入的年、月、日之间应用逗号隔开\n);
printf(" today is:");
scanf(“%d,%d.%",&today.year,&today.month,&today.day);
while(0>=today. year
|| today. year>65535||0>=today. month||today. month>12)||
0>=today. day||today. day>numdays(today))
{ printf("input date error!reenter the day!\n");
printf(" today is:");
scanf("%d,%d,%d",&today. year,&today.month,&today. day);
}
if(today. day!=numdays(today))
{tomorrow. year=today. year;
tomorrow. month=today. month;
tomorrow. day=today. day+1;
}
else if(today.month==12)
{tomorrow. year=today. year+1;
tomorrow. month=1;
tomorrow. day=1;
}
else
{tomorrow. year=today. year;
tomorrow. month=today. month+1:
tomorrow.day=1;
}
printf("tomorrow is:%d,%d,%d\n\n",
tomorrow. year,tomorrow. month,tomorrow. day);
}
(1) 画出程序中所有函数的控制流程图;
(2) 设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句或分支覆盖率无法达到100%,需说明为什么。
选项
答案
函数leap的流程图如下: [*] [*] 本题的程序用来打印输入日期的第二天日期,只要根据程序中的判断语句设计出相关的测试用例,就能使得所有函数的语句覆盖率和分支覆盖率均能达到100%。 为了满足leap函数的语句覆盖率和分支覆盖率均能达到100%,应当设置两个测试用例,使得一个是闰年,一个不是,在这里可以取2008年和2007年。 由于numdays函数的判定语句是对leap的函数值进行判定,满足了leap的覆盖率要求,就能够满足numdays的覆盖率要求。 对于main函数中的while语句,根据流程图,先使判断部分为1,然后为0,这样就可以达到覆盖要求。对于while语句之后的if…else if…else语句,只要能够使每个分支都执行一遍,就能达到覆盖要求。 根据以上分析,设计测试用例如下: [*] 注意,这里的第1、2个用例使得leap函数中的retlarn 1和return 0都能执行一遍,同时nutndays函数中的if…else结构两个分支也都能得到执行;第1个用例也能够使while循环体能够得到执行;第2、3、4用例三个测试用例刚好使main中的if…else if…else-三个分支都执行一遍。
解析
转载请注明原文地址:https://kaotiyun.com/show/EwNZ777K
本试题收录于:
四级软件测试工程师题库NCRE全国计算机四级分类
0
四级软件测试工程师
NCRE全国计算机四级
相关试题推荐
阅读以下技术说明和Java代码,将Java程序中(1)~(5)空缺处的语句填写完整。[说明]类Queue表示队列,类中的方法如表4-12所示。类Node表示队列中的元素;类EmptyQueueException给出了队列中的异常处理
阅读以下说明和Java代码,将解答写入对应栏内。【说明】下面的程序的功能是利用实现Runnable接口的方法来创建线程,并利用它来执行响应的一些操作。最后使得m的执行结果:100,如图3。注意:请勿改动main()主方法和其他已有的
阅读以下应用说明及VisualBasic程序代码,将应填入(n)处的字句写在对应栏内。【说明】本应用程序的运行窗口如图2所示。窗口中的3个文本框和两个按钮名称分别为Txt_salary、Txt_base、Txt_tax、Cmd_compu
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。【说明2.1】以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。【函数2.1】voidfun1(inta[]){inti,j,
什么是临界资源(criticalresource)?请用100字以内的文字简要说明。【问题5】【C代码3】中x,y是两个已定义的整型变量。对该程序段进行覆盖测试时,必须适当地选取测试用例。如表5-10所示给出了可供选择的4组测试用例。若要实现
阅读以下说明和c函数,将应填入(n)处的字句写在答题纸的对应栏内。【说明】c语言常用整型(int)或长整型(1ong)来说明需要处理的整数,在一般情况下可以满足表示及运算要求,而在某些情况下,需要表示及运算的整数比较大,即使采用更长的整型(例如
阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。【说明】下面程序完成从键盘读入一个字符串,然后采用parseInt方法将其转换为一个相应的整数。importjava.io.*;publicclasst
阅读下列说明,根据网页显示的效果图,回答问题1至问题3。[说明]某咨询公司对外提供行业研究报告,其客户分为银卡、金卡及VIP客户,行业研究报告级别分为A、B和C三类,分别对应VIP、金卡及银卡权限。行业研究报告访问权限定义如下:不同级别用户
软件维护可分为改正性维护、适应性维护、完善性维护和预防性维护。在软件的整个维护活动中,(54)维护所占比重最大。
随机试题
Mostdoctorsrecognizethatmedicineis______.
射血分数是指
羊的妊娠期平均为
以下情形中,需要及时修订应急预案的包括()。
5月25日,沪深300股指期货收盘价4556.2,结算价4549.8;则下一个交易日的涨停板价格为()。
心理测验技能包括()。
特殊教育学校(班)学生人均公用经费标准应当()普通学校学生人均公用经费标准。
39-1.38+2,37-3,36+1,35-2,34+3,…,()
在Access中需要发布数据库中的数据的时候,可以采用的对象是______。
Itmaybenecessary,inorderthatfuture【C1】______canenjoycleanair,thatmoreofthe【C2】______isbornebylong-termcentral
最新回复
(
0
)