首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知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
36
问题
已知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全国计算机四级
相关试题推荐
阅读以下应用说明及VisualBasic部分程序代码,将应填入(n)处的字句写在对应栏内。【说明】单击窗体上的“测试”(cmdTest)按钮,出现一个输入框,要求输入一串字符,将该字符串中的非字母字符删除后,显示在窗体中的一个文本框(txtS
在图2-11所示的程序流程图中,若要某个房间I被选中,则需要满足什么条件?如果等级为r的房间每人每天的住宿费为RATE(r),其中RATE为数组,则为使该算法在输出每个候选的房间号RM(J)后,再输出这批散客每天所需的总住宿费DAYRENT(J),在程
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。假设以带头结点的单循环链表作非递减有序线性表的存储结构。函数deleteklist(LinkListhead)的功能是删除表中所有数值相同的多余元素,并释放结点空间。例如:链表初始
阅读以下应用说明、图和Java代码,根据要求回答问题1至问题5。【说明】Stack类是java.ntil包中专门用来实现栈的工具类。以下Java程序是一个不使用库函数而实现字符串反转的程序。例如,输入:123456,则输出:654321:
阅读以下说明和流程图,回答问题1~2,将解答填入答题纸对应的解答栏内。[说明]给定一个十进制整数A,将其转换为R进制数的方法是:将A的整数部分逐次除以R,直到商等于0为止,将所得的余数由低位到高位排列在一起,就得到了对应R的进制数。以A=11,R
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】本程序从若干个原始文件合并成的合并文件中恢复出其中一个或全部原始文件。所有文件均作为二进制文件进行处理。合并文件中先顺序存储各原始文件,然后顺序存储各原始文件的控制信息,即文件
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。[说明]某班级有N名学生,他们可根据自己的情况选修名称和数量不尽相同的课程。设N等于6,学生信息、所选课程及成绩用链表结构存储,如图5-1所示。程序中相应的类
办公自动化软件一般应用于______。
在面向对象程序设计语言中,(31)是利用可重用成分构造软件系统的最有效的特性,它不仅支持系统的可重用性,而且还有利于提高系统的可扩充性;(32)可以实现发送一个通用的消息而调用不同的方法;(33)是实现信息隐蔽的一种技术,其目的是使类的(34)相互分离。
有关内联网的错误叙述是(62),下列有关网络安全的叙述中,不正确的是(63),对于Intranet,可通过设置(64)来防止内部数据泄密、篡改和黑客入侵。
随机试题
Pickouttheappropriateexpressionsfromtheeightchoicesbelowandcompletethefollowingdialoguebyblackeningthecorrespo
对碘和碘化物不良反应的描述,哪项是不正确的
魏女士,58岁。因胰岛素依赖型糖尿病住院,经治疗后症状缓解,即将出院。病人来自农村,不识字,出院前护士需教会病人自行注射胰岛素的方法。该病人护理目标正确的陈述是
项目评估应解决的关键问题是()。
山区河流上的锁坝宜布置在汊道的()。
拟写单位总结需努力做到()
一个五位数,左边三位数是右边两位数的5倍,如果把右边两位数移到前面,所得到的新的五位数要比原来的五位数的2倍还多75,原来五位数的值是多少?
一、注意事项1.申论考试是对应考者阅读理解能力、综合分析能力、提出和解决问题能力、文字表达能力的测试。2.作答参考时限:阅读材料40分钟,作答110分钟。3.仔细阅读给定材料,按照后面提出的“申论要求”依次作答。二、给定资料
下列诗句中描写的内容与对应的植物不相符的是()。
Intheadvertisement,therewasa______anda______onthebicycle.Tomthoughtitwas______fortheshopownertosellthe
最新回复
(
0
)