问题 问答题

论述题3:已知C源程序如下:/*longIntAdd*/#include<stdio.h>#include<string.h>#define LENGTH 81void 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函数的语句覆盖率和分支覆盖率均能达到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%。

选择题
判断题