问答题
已知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语句永远无法执行。
【答案解析】