问题 问答题

已知C源程序如下:

#include #include void reverse(char s[]){ int c,i,j; for(i=0,j=strlen(s)-1;i0){ 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 number; 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,输出A。 ④输入27,输出B。 ⑤输入28,输出C。 ⑥输入29,输出D。 ⑦输入30,输出E。 ⑧输入31,输出F。 ⑨输入20P,输出错误。

语句覆盖率无法达到100%,因为main()函数中的return 0语句永远无法执行。

单项选择题
选择题