1.关于printPrime()函数的控制流图和路径覆盖
代码为:
/*******************************************************
* Finds and prints n prime integers
* Jeff Offutt, Spring 2003
******************************************************/
public static void printPrimes (int n)
{
int curPrime; // Value currently considered for primeness
int numPrimes; // Number of primes found so far.
boolean isPrime; // Is curPrime prime?
int [] primes = new int [MAXPRIMES]; // The list of prime numbers.
// Initialize 2 into the list of primes.
primes [0] = 2;
numPrimes = 1;
curPrime = 2;
while (numPrimes < n)
{
curPrime++; // next number to consider ...
isPrime = true;
for (int i = 0; i <= numPrimes-1; i++)
{ // for each previous prime.
if (curPrime%primes[i]==0)
{ // Found a divisor, curPrime is not prime.
isPrime = false;
break; // out of loop through primes.
}
}
if (isPrime)
{ // save it!
primes[numPrimes] = curPrime;
numPrimes++;
}
} // End while
// Print all the primes out.
for (int i = 0; i <= numPrimes-1; i++)
{
System.out.println ("Prime: " + primes[i]);
}
} // end printPrimes
a.控制流图:
b. MAXPRIMES=4
c.n=1
d.点覆盖:
TR = {1,2,3,4,5,6,7,8,9,10,11,12,13}
边覆盖:
TR={(1,2),(2,3),(3,4),(4,5),(5,6),(6,4),(5,7),(7,8),(4,8),(8,2),(8,9),(9,2),(2,10),(10,11),(11,12),(12,11),(11,13)}
主路径覆盖:
长度0:
[1], [2], 3], 4],[5],[6],[7],[8],[9],[10],[11],[12],[13]
长度1:
[1,2],[2,3],[2,10],[3,4],[4,5],[4,8],[5,6],[5,7],[6,4],[7,8],[8,2],[8,9],[9,2],[10,11],[11,12],[11,13],[12,11]
长度2:
[1,2,3],[1,2,10],[2,3,4],[2,10,11],[3,4,5],[3,4,8],[4,5,6],[4,5,7],[4,8,2],[4,8,9],[5,6,4],[5,7,8],[6,4,5],[6,4,8],[7,8,2],[7,8,9],[8,2,3],[8,2,10],[8,9,2],[9,2,3],[9,2,10],[10,11,12],[10,11,13],[11,12,11],[12,11,12]
长度3:
[1,2,3,4],[1,2,10,11],[2,3,4,8],[2,3,4,5],[2,10,11,12],[2,10,11,13]!,[3,4,5,6],[3,4,5,7],[3,4,8,2],[3,4,8,9],[4,5,6,4]*,[4,5,7,8],[4,8,9,2],[4,8,2,3],[4,8,2,10],[5,6,4,5]*,[5,6,4,8],[5,7,8,9],[5,7,8,2],[6,4,5,6]*,[6,4,5,7],[6,4,8,2],[6,4,8,9],[7,8,2,3],[7,8,2,10],[7,8,9,2],[8,2,3,4],[8,2,10,11],[8,9,2,3],[8,9,2,10],[9,2,3,4],[9,2,10,11]
长度5 [1,2,3,4,5],[1,2,3,4,8],[1,2,10,11,12],[1,2,10,11,13]!,[2,3,4,5,6],[2,3,4,5,7],[2,3,4,8,2]*,[2,3,4,8,9],[3,4,5,7,8],[3,4,8,2,3]*,[3,4,8,2,10],[3,4,8,9,2],[4,5,7,8,2],[4,5,7,8,9],[4,8,2,3,4]*,[4,8,2,10,11],[4,8,9,2,3],[4,8,9,2,10],[5,6,4,8,2],[5,6,4,8,9],[5,7,8,2,3],[5,7,8,2,10],[5,7,8,9,2],[6,4,5,7,8],[6,4,8,9,2],[6,4,8,2,3],[6,4,8,2,10],[7,8,2,3,4],[7,8,2,10,11],[7,8,9,2,3],[7,8,9,2,10],[8,2,3,4,5],[8,2,3,4,8]*,[8,2,10,11,12],[8,2,10,11,13]!,[8,9,2,3,4],[8,9,2,10,11],[9,2,3,4,5],[9,2,3,4,8],[9,2,10,11,12],[9,2,10,11,13]!
长度6
[1,2,3,4,5,6],[1,2,3,4,5,7],[1,2,3,4,8,9],[2,3,4,5,7,8],[2,3,4,8,9,2],[3,4,5,7,8,9],[3,4,5,7,8,2],[3,4,8,9,2,3]*,[3,4,8,9,2,10],[3,4,8,2,10,11],[4,5,7,8,2,3],[4,5,7,8,2,10],[4,5,7,8,9,2],[4,8,9,2,3,4],[4,8,9,2,10,11],[4,8,2,10,11,12],[4,8,2,10,11,13]!,[5,6,4,8,9,2],[5,6,4,8,2,3],[5,6,4,8,2,10],[5,7,8,2,3,4],[5,7,8,2,10,11],[5,7,8,9,2,3],[5,7,8,9,2,10],[6,4,5,7,8,2],[6,4,5,7,8,9],[6,4,8,2,10,11],[6,4,8,9,2,3],[6,4,8,9,2,10],[7,8,9,2,3,4],[7,8,9,2,10,11],[7,8,2,3,4,5],[7,8,2,10,11,12],[7,8,2,10,11,13]!,[7,8,9,2,3,4],[7,8,9,2,10,11],[8,2,3,4,5,6],[8,2,3,4,5,7],[8,9,2,3,4,5],[8,9,2,3,4,8],[8,9,2,10,11,12],[8,9,2,10,11,13]!,[9,2,3,4,5,6],[9,2,3,4,5,7],[9,2,3,4,8,9]
长度6
[1,2,3,4,5,7,8],[2,3,4,5,7,8,2],[2,3,4,5,7,8,9],[3,4,5,7,8,2,3],[3,4,5,7,8,2,10],[3,4,5,7,8,9,2],[4,5,7,8,9,2,3],[4,5,7,8,9,2,10],[4,5,7,8,2,3,4]*,[4,5,7,8,2,10,11],[5,6,4,8,2,10,11],[5,6,4,8,9,2,3],[5,7,8,9,2,3,4],[5,7,8,9,2,10,11],[5,7,8,2,3,4,5],[5,7,8,2,10,11,12],[5,7,8,2,10,11,13]!,[6,4,5,7,8,2,3],[6,4,5,7,8,2,10],[6,4,5,7,8,9,2],[6,4,8,9,2,10,11],[6,4,8,2,10,11,12],[6,4,8,2,10,11,13]!,[7,8,2,3,4,5,6],[7,8,2,3,4,5,7],[7,8,9,2,3,4,5][7,8,9,2,10,11,12],[7,8,9,2,10,11,13],[7,8,9,2,3,4,5],[8,2,3,4,5,7,8]*,[8,9,2,3,4,5,6],[8,9,2,3,4,5,7],[9,2,3,4,5,7,8]
长度7
[1,2,3,4,5,7,8,9],[2,3,4,5,7,8,9,2]*,[3,4,5,7,8,9,2,10],[3,4,5,7,8,2,10,11],[4,5,7,8,2,10,11,12],[4,5,7,8,2,10,11,13]!,[4,5,7,8,9,2,3,4]*,[4,5,7,8,9,2,10,11],[5,6,4,8,2,10,11,12],[5,6,4,8,2,10,11,13]!,[5,6,4,8,9,2,10,11],[5,7,8,9,2,3,4,5]*,[5,7,8,9,2,10,11,12],[5,7,8,9,2,10,11,13]!,[6,4,5,7,8,2,10,11],[6,4,5,7,8,9,2,3],[6,4,5,7,8,9,2,10],[6,4,8,9,2,10,11,12],[6,4,8,9,2,10,11,13]!,[7,8,9,2,3,4,5,6],[7,8,9,2,3,4,5,7]*,[8,9,2,3,4,5,7,8]*.[9,2,3,4,5,7,8,9]*
长度8
[3,4,5,7,8,2,10,11,12],[3,4,5,7,8,2,10,11,13]!,[3,4,5,7,8,9,2,10,11],[4,5,7,8,9,2,10,11,12],[4,5,7,8,9,2,10,11,13]!,[5,6,4,8,9,2,10,11,12],[5,6,4,8,9,2,10,11,13]!,[6,4,5,7,8,2,10,11,12],[6,4,5,7,8,2,10,11,13]!,[6,4,5,7,8,9,2,10,11]
长度9
[3,4,5,7,8,9,2,10,11,12],[3,4,5,7,8,9,2,10,11,13]!,[6,4,5,7,8,9,2,10,11,12],[6,4,5,7,8,9,2,10,11,13]
所以
TR = {[11,12,11],[12,11,12],[4,5,6,4],[5,6,4,5],[6,4,5,6],[1,2,10,11,12],[1,2,10,11,13],[2,3,4,8,2],[3,4,8,2,3],[4,8,2,3,4] ,[8,2,3,4,8],[1,2,3,4,5,6],[1,2,3,4,8,9],[2,3,4,8,9,2],[3,4,8,9,2,3], [4,8,9,2,3,4], [5,6,4,8,2,3],[8,9,2,3,4,8],[9,2,3,4,8,9],[2,3,4,5,7,8,2],[3,4,5,7,8,2,3],[4,5,7,8,2,3,4],[5,6,4,8,9,2,3],[5,7,8,2,3,4,5],[6,4,5,7,8,2,3],[7,8,2,3,4,5,6],[7,8,2,3,4,5,7],[8,2,3,4,5,7,8],[1,2,3,4,5,7,8,9],[2,3,4,5,7,8,9,2],[4,5,7,8,9,2,3,4],[5,6,4,8,2,10,11,12],[5,6,4,8,2,10,11,13],[5,7,8,9,2,3,4,5],[6,4,5,7,8,9,2,3],[7,8,9,2,3,4,5,6],[7,8,9,2,3,4,5,7],[8,9,2,3,4,5,7,8].[9,2,3,4,5,7,8,9],[3,4,5,7,8,2,10,11,12],[3,4,5,7,8,2,10,11,13],[5,6,4,8,9,2,10,11,12],[5,6,4,8,9,2,10,11,13],[6,4,5,7,8,2,10,11,12],[6,4,5,7,8,2,10,11,13],[3,4,5,7,8,9,2,10,11,12],[3,4,5,7,8,9,2,10,11,13],[6,4,5,7,8,9,2,10,11,12],[6,4,5,7,8,9,2,10,11,13]}
2.基于JUINT实现主路径覆盖
代码为:
package mytest;
public class one {
public static String triangles (int a, int b, int c){
if(a+b > c && a+c > b && b+c > a){
if (a == b && b == c)
return "this is a equilateral triangle!";
else if (a == b || b == c || c == a)
return "this is a isosceles triangle!";
else
return "this is a scalene triangle!";
}
else
return "this is not triangle!";
}
}
测试代码:
package mytest;
import static org.junit.Assert.*;
import org.junit.Test;
public class testone {
@Test
public void testTriangle() {
assertEquals("this is not triangle!",new one().triangles(1,1,3));
assertEquals("this is a equilateral triangle!",new one().triangles(6,6,6));
assertEquals("this is a isosceles triangle!",new one().triangles(2,2,3));
assertEquals("this is a scalene triangle!",new one().triangles(3,4,5));
}
}
结果为:
说明实现了所有路径覆盖。