问答题 以下是某C程序段,其功能是计算出某一天是一年中的第几天,请仔细阅读程序并完成要求。
# include<stdio.h>
struct days
{
int year;
int month;
int date;
}day;
void main()
{
struct days *P;
int nun=0,i;
int met3]={0,31,28,31,30,31,30,31,31,30,31,30,31};
P=&day;
printf("please input the day:/n");
scanf("%d%d%d",&(P->year),&(P->month),&(P->date));
for(i=0;i<(p->month);i++)
num+=m[i];
hum+=(p->date);
if((p->year)%4==0&&(P->year)%i00 1=0||(p->year)%400==0)
if((p->month)>2)
num++:
printf("This day is%d day in the year./n",hum);
}
问答题 画出此程序主函数的控制流程图。
【正确答案】
【答案解析】主函数的控制流程图如下:
问答题 设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句或分支覆盖率无法达到100%,需说明为什么。
【正确答案】
【答案解析】为了达到100%的语句覆盖率,要设计测试用例,使其为闰年且月份大于2,另外不满足此条件。由于此程序不包含输入出错处理,所以我们特意定义一个month小于0的情况。
用例编号 year month date num
1 2000 3 1 5 75
2 2003 -5 36 36