首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知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
103
问题
已知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://www.kaotiyun.com/show/EwNZ777K
本试题收录于:
四级软件测试工程师题库NCRE全国计算机四级分类
0
四级软件测试工程师
NCRE全国计算机四级
相关试题推荐
请将图6-13流程图中(1)~(5)空缺处的内容补充完整。其中,(1)空缺处按“循环变量名:循环初值,增量,循环终值”格式描述。待修改的【C程序】中存在3个错误,请指出各个错误所在的行号,并给出相应的修改意见。
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求13中的所有整数都是L1,并且不
请将以上【C++代码1】与【C++代码2】程序段中的(1)~(7)空缺处的语句填写完整。请用150字以内的文字简要说明【C++代码1】、【C++代码2】这两种对传输门进行状态模拟的设计思路的区别之处。
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明1]函数voidfun(char*w,charx,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。【说明】以下【C程序】能将自然数1,2,…,N2按蛇形方式逐个存入N阶矩阵。换言之,程序从anO开始到aOn。为止(n=N-1)顺序填入自然数,交替地对每一斜
阅读以下说明和C函数,填补代码中的空缺。【说明】函数Combine(LinkListLa,LinkListLb)的功能是:将元素呈递减排列的两个含头结点单链表合并为元素值呈递增(或非递减)方式排列的单链表,并返回合并所得单链表的头指针。例如
以下Java代码实现一个简单客户关系管理系统(CRM)中通过工厂(CustomerFactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(RealCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定
TCP/IP是一个协议族,它的体系结构分为4层:应用层、网际层、网络接口层和(1),其中ARP协议属于(2)。为了在源主机和目的主机之间传送数据,IP协议需要确定源主机和目的主机是否在同一个网络中。如果不在同一网络时,则必须通过(3)进行通信。
下列关于加密的叙述中,正确的是______。
ARP 为地址解析协议。关于ARP的下列说法中,正确的是(55)。
随机试题
被告人向某、张某,在一次公共汽车抢劫案中,打伤钟某,打死万某,人民法院在审理此案的过程中,钟某和万某的儿子提起了附带民事诉讼,共要求赔偿损失约20万元。人民法院为了保证民事判决能够顺利进行,依法查封和扣押了两被告人的部分财产。同时人民法院将万某、钟某和万某
生产经营单位的主要负责人未履行《安全生产法》规定的安全生产管理职责,并导致生产安全事故的发生受刑事处罚或者撤职处分的,自刑罚执行完毕或者受处分之日起()年内不得担任任何生产经营单位的主要负责人。
使用活页式账页,应当按账户顺序编号,并定期装订成册。装订后应当再按实际使用的账页顺序编写页码,另加目录,记明每个账户的名称和页次。
财务会计报告由()组成。
商业银行充当理财顾问,向客户提供咨询,属于()。
诏狱是指奉皇帝诏令而审理的案件。明朝专理诏狱的特别审判机构是()。
从本质上看,货币()。
去年某旅游胜地游客人数与前年游客人数相比,减少约一半。当地旅游管理部门调查发现.去年与前年的最大不同是入场门票从120元升到190元。以下哪项措施,最可能有效解决上述游客锐减问题?()
下面关于教育行动研究理解不正确的是()。
Malnutritionandtheresultingimpairedgrowthanddevelopmentinchildrenofweaningageindevelopingcountriesresultsnoton
最新回复
(
0
)