问答题
论述题3:
已知C源程序如下:
/*longIntAdd*/
#include<stdio.h>
#include<string.h>
#define LENGTH 81
void addLInt(char s1[],char s2[]);
void reverse(char s[]);
int main()
{
char intstr1[LENGTH],intstr2[LENGTH];
printf("请输入超长整数的被加数和加数:/n");
scanf("%s%s",intstr1,intstr2);
addLInt(intstr1,intstr2);
printf("超长整数和为:%s",intstr1);
return 0;
}
void addLInt(char s1[],char s2[])
{
int i=0,tmp,c=0;
char s[LENGTH];
if(strlen(s1)<strlen(s2)){
strcpy(s,s1);
strcpy(s1,s2);
strcpy(s2,s);
}
reverse(s1);reverse(s2);
while(s2[i]!=;/0'){
tmp=s1[i]-'0'+s2[i]-'0'+c;
81[i]=tmp%10+'0';
c=tmp/10;
i++;
}
while(si[1]!='/0'&&c){
tmp=s1[i]-'0'+c;
s1[i]=tmp%10+'0';
c=tmp/10;
i++;
}
If(c){
s1[i++]=c+'0';
s1[i]='/0';
}
reverse(s1);
}
void reverse(char s[])
{
int i,j,c;
for(i=0,j=strlen(s)-1;i<j;i++,j--){
c=s[i];
s[i]=s[j];
s[j]=c;
}
}
问答题
画出程序中函数addLInt的控制流程图;
【正确答案】函数addLInt的控制流程图。

【答案解析】
问答题
设计一组测试用例,使该程序addLInt函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该函数的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
【正确答案】测试用例
a.s1:“1111111111111111” s2:“2222222222222222"
b.s1:“123456789” s2:“989”
c.s1:“989” s2:“123456789”
d.s1:“999999999999” s2:“111111”
[解析] 语句覆盖是指设计若干测试用例,运行被测程序,使得每个可执行语句至少执行一次。
语句覆盖率=被评价到的语句数量/可执行的语句数量×100%。
设计若干测试用例,运行被测程序使得每个判定的取真分支和取假分支至少评价一次。
判定覆盖率=被评价到的判定分支个数/判定分支的总数×100%。
当输入a、b、c、d中的测试用例后,语句覆盖率和分支覆盖率均为100%。
【答案解析】