首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知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
35
问题
已知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全国计算机四级
相关试题推荐
在图2-11所示的程序流程图中,若要某个房间I被选中,则需要满足什么条件?如果限制该算法最多输出K个可供选择的房间号,则在程序流程图(见图2-11)中“>N”(a所指向的判断框中)应修改为(4)。
阅读以下某客房管理系统的算法说明和程序流程图,根据要求回答问题1至问题4。【算法说明】某商务交流中心共有N间客房。每间客房的房间号、房间等级、床位数及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中。房间等级值为1、2或3。
阅读以下说明和Java代码,将解答写入对应栏内。【说明】下面程序的功能是显示已定义的一个3行3列的二维数组每行的元素,并求所有元素的和并输出。请在程序的每条横线处填写一个适当的语句,使程序的功能完整。publicclassArr
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】编写程序,生成一个新文本文件,它由一个已知文本文件的所有偶数行组成。要求已知文本文件名和新文本文件名均从键盘输入。请填空完善程序。【C语言程序】#i
阅读以下说明和流程图,填补流程图中的空缺(1)一(5),将解答填入答题纸的对应栏内。【说明】 求连续函数f(x)的根(方程f(x)=0的解)的最简单方法是二分法。为此,首先需要在若干点上检查函数值的符号,如果发现f(a)与f(b)符号相反(a
阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。[说明]某公司网络的Internet接入方式如图3-1所示。查看路由器R1的状态信息如图3-2所示,则可以确定R1的E0端口IP地址是(1),E1端口的IP
关系数据库是(20)的集合,它由一个或多个关系模式定义。SQL语言中的数据定义功能包括对数据库、基本表、(21)和(22)的定义。设有关系Students(学号,姓名,年龄,性别,系名),如果要查询姓名至少包含5个字母,且倒数第二个字母为“G”的学生的学
(41)程序可以找出C语言源程序中的语法错误。为某个应用而用不同高级语言编写的程序模块经分别编译产生(42),再经过(43)处理后形成可执行程序。
下列叙述中,正确的是(41)。
有关内联网的错误叙述是(62),下列有关网络安全的叙述中,不正确的是(63),对于Intranet,可通过设置(64)来防止内部数据泄密、篡改和黑客入侵。
随机试题
Onemorning,Iwaswaitingatthebusstop,worriedabout【K1】________(be)lateforschool.Thereweremanypeoplewaitinga
肺炎患儿如果并发严重腹胀及肠鸣音消失,最可能的原因是
5月10日,甲以自有房屋1套为债权人乙设定抵押并办理抵押登记。6月10日,甲又以该房屋为债权人丙设定抵押,但一直拒绝办理抵押登记。9月10日,甲擅自将该房屋转让给丁并办理了过户登记。下列说法错误的是()。
债的发生必须以一定的法律事实为依据。引起债发生的主要根据有()。
决定必须由()。
在一切监督力量中,党委和政府对公安工作的监督具有第一位的意义。党委和政府对公安工作的体验最直接,党委和政府的监督具有广泛性、普遍性。()
根据下表,回答96-100题。下列说法与资料相符的是:
撰写公文的基本步骤之一是()。
A、Tellhisprofessorabouttheconditionofthelecturehall.B、Organizeateamofstudentstocleanthelecturehall.C、Findou
SleepandDreamsA)"Ohsleep!Itisagentlething,belovedfrompoletopole."SamuelTaylorColeridge,thefamousBritishpoet
最新回复
(
0
)