问答题 已知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 msin(){
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;
}
问答题 画出程序中所有函数的控制流程图。
【正确答案】
【答案解析】流程图
①void reverse(char s[])的流程图如下图所示。

@void getHex(int number, char s[])的流程图如下图所示。

③int main()的流程图如下图所示。
问答题 设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支率无法达到100%,则说明为什么。
【正确答案】
【答案解析】设计测试用例
①输入0,输出0。
②输入2,输出2。
③输入26,输出1A。
④输入27,输出1B。
⑤输入28,输出1C。
⑥输入29,输出1D。
⑦输入30,输出1E。
⑧输入31,输出1F。
⑨输入20P,输出错误。
语句覆盖率无法达到100%,因为main()函数中的return 0语句永远无法执行。