问题 问答题

已知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%1 6+’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,输出1A。
④输入27,输出1B。
⑤输入28,输出1C。
⑥输入29,输出1D。
⑦输入30,输出1E。
⑧输入31,输出1F。
⑨输入20P,输出错误。
语句覆盖率无法达到100%,因为main()函数中的return 0语句永远无法执行。

选择题
单项选择题 A1型题