Introduction to C programming/Quizes/BooleanLogic/Answers

Question 1
Assume that w=6, x=10, y=6 and z=3. What are the truth values of the following statements?


 * w<9
 * True. 6<9
 * w!=y
 * False. 6 is equal to 6
 * z>x
 * False. 3 is less than 10
 * z<=y
 * True. 3 is less than 6
 * x-6>y*2
 * False. x-6 is 4.  y*2 is 12.  4 is less than 12, not greater.

Question 2
With the same values of w,x,y and z, what are the values of the following combinations?


 * w<9 && w!=y
 * False. w<9 is true, but w!=y is false.  If either term of an AND is false, the total is false.
 * x+7>2 || x==6
 * True. x+7>2 is true.  x==6 is false.  If either part of an OR is true, the total is true.  In fact, the compiler won't even check the second term, it already knows the total is true.
 * !(x-9>1)
 * True. x-9>1 is false (its equal).  The NOT of a false statement is true.
 * !((x>y) && (xy is true.  x7) && !(x>7)
 * False. x>7 is true.  !(x>7) is false.  If either part of an AND is false, the total is false.  This is actually a trick question-  x && !x is always false.
 * (x>7) || !(x>7)
 * True. x>7 is true.  !(x>7) is false.  If either part of an OR is true, the total is true.  This is another trick question-  x || !x is always true.

Question 3
Under what values of x, y, and z do the following numbered statements get executed? Give the answers in forms like x>y>z.

if(x==y){ statement 1; statement 2; } else if(y>z){ statement 3; if(x==z){ statement 4; if(yz.  We get the first term due to it being in an else branch for if 1, and the second from the second if
 * statement 4: this occurs only if x!=y, y>z and z==x.  We get this from the 3 ifs/elses it's in.
 * statement 5: never.  This statement would require y>z and y<z.  This cannot be true, so the line never executes.  A compiler may warn you of this.
 * statement 6: this occurs only if x!=y and y<=z.  We get this as the else from the 2 above ifs.

Question 4
Under what values of x do the following numbered statements get executed?

switch (x){ case 0: statement 1; break; case 1: statement 2; case 2: statement 3; case 4: statement 4; break; case 5: case 6: statement 5; default: statement 6; break; }


 * statement 1: only if x=0
 * statement 2: only if x=1
 * statement 3: only if x=1 or x=2 (no break after statement 2, so a 1 would fall through)
 * statement 4: only if x=1, x=2, or x=4.  No breaks for either case 1 or 2.
 * statement 5: only if x=5 or x=6.
 * statement 6: any value of x except 0,1,2, and 4.  Notice that it does happen for 5 and 6 due to not having a break.