首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知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
64
问题
已知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全国计算机四级
相关试题推荐
阅读下列程序说明和C程序,将应填入(n)处的字句写在对应栏内。【说明】程序8用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额,职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的
阅读以下关于某绘图系统的技术说明、部分UML类图及VisualBasic程序,将VisualBasic程序中(1)~(6)空缺处的语句填写完整。【说明】某绘图系统定义了一个抽象类Ishape,现有3个类Cpoint,CLine和Ccir
阅读以下程序说明和Java代码,将应填(n)处的字句写对应栏内。[说明]本程序的功能是产生一个抽奖游戏中的随机数组合。抽奖的规则是从自然数1至50中无重复抽取6个数。为了保证抽取的无重复性,将50个自然数放在数组source中。每抽取了一个数,就
阅读以下说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】c++标准模板库中提供了map模板类,该模板类可以表示多个“键一值”对的集合,其中键的作用与普通数组中的索引相当,而值用作待存储和检索的数据。此外,c++模板库还提供
阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。【说明】下面程序完成从键盘读入一个字符串,然后采用parseInt方法将其转换为一个相应的整数。importjava.io.*;publicclasst
分析下面的C程序,指出错误代码(或运行异常代码)所在的行号。[C程序]
面向对象程序设计以(1)为基本的逻辑构件,用(2)来描述具有共同特征的一组对象,以(3)为共享机制,共享类中的方法和数据。
在面向对象程序设计语言中,(31)是利用可重用成分构造软件系统的最有效的特性,它不仅支持系统的可重用性,而且还有利于提高系统的可扩充性;(32)可以实现发送一个通用的消息而调用不同的方法;(33)是实现信息隐蔽的一种技术,其目的是使类的(34)相互分离。
软件测试中的。测试由用户在软件开发者指导下完成,这种测试属于(53)阶段的测试活动。
数组A[-5..5,0..8]按列存储。若第一个元素的首地址为100,且每个元素占用4个存储单元,则元素A[2,3]的存储地址为(43)。
随机试题
一电容元件C=100μF,外加于u=220(314t+30°)V的电源上,求电流i及消耗的无功功率,并画出电压、电流的相量图。
直接引起左心压力负荷过重的瓣膜病为
“医院三级管理”的药品是
血清淀粉酶尿淀粉酶
下列选项中属于行政指导的特征的有()。
一个横截面为长方形的受拉构件,构件长为200mm,截面长为20mm,截面宽为10mm,破坏时最大荷载为40kN,其抗拉强度为()。
下列变化一定属于化学变化的是()。①导电;②爆炸;③缓慢氧化;④SO2使品红溶液褪色;⑤无水硫酸铜由白变蓝;⑥工业制O2;⑦白磷转化为红磷;⑧久置浓硝酸变黄
社区内三楼的居民养狗,可狗总在一楼门口拉屎,故引起一楼不满,遂与三楼居民沟通,不想两方却因此事打了起来,你作为居委会人员,应如何调解?
Thetypistcheckedthespellingcarefullyinorderto______allthespellingmistakes.
Aboutthisnovel,whichofthefollowingstatementisNOTtrue?Bucklearnedtosurviveinthearcticby______.
最新回复
(
0
)