题目:
已知C源程序如下:
#include<stdio.h>
#include<string.h>
void reverse(char s[]){
int C, i, J;
for(i=0, j=strlen(s)-1; i<j; i++, j++){
c=s[i];
s[i]=s[j];
s[j]=c;
}
}
void getHex(int number, char s[]){
int I;
i=0;
while(number>0){
if(number%16<10)
s[i++]=number%16+’0’;
else
switch(number%16){
case 10: s[i++]=’A’; break;
case 11: s[i++]=’B’; break;
case 12: s[i++]=’C’; break;
case 13: s[i++]=’D’; break;
case 14: s[i++]=’E’; break;
case 15: s[i++]=;F’; break;
default: printf("Error"); break;
}
number/=16;
}
s[i]=’\0’;
reverse(S);
}
int main(){
unsigned int nmnber;
int i=0;
char s[50];
printf("%s", "please input number: \n");
scanf("%d", &number);
getHex(number, s);
i=0;
while(s[i])
printf("%c", s[i++]);
return 0;
}
设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支率无法达到100%,需说明为什么。 |
答案:
参考答案:
解析:设计测试用例: ①输入0,输出0 ②输入2,输出2 ③输入26,输出1A ④输入27,输出1B ⑤输入28,输出1C ⑥输入29,输出1D ⑦输入30,输出1E ⑧输入31,输出1F ⑨输入20P,输出错误 语句覆盖率无法达到100%,因为main()函数中的return 0语句永远无法执行。