際際滷

際際滷Share a Scribd company logo
| Main |< C & C++ if and if-else 2 | C & C++ if and if-else 4 >| Site Index | Download |




                                                               C LAB WORKSHEET 8a
                                                      C & C++ Selection: C/C++ if and if-else Part 3
Items in this page:

    1.   The C & C++ conditional statement, a selection and flowcharts.
    2.   The if, if-else construct, variations and flowcharts.
    3.   Activities, questions and answers.
    4.   Tutorial reference that should be used together with this worksheet are: C & C++ program control 1 and C & C+
         + program control 2.


    9. The following experiment should give the same result as the previous                 if(k < 90)
         one. Only the logic has been rearranged. Complete the flowchart and the                  if(k < 80)
         program so that the output is same as before.                                                 lower = lower + 1;
                                                                                                 else
          #include <stdio.h>                                                                           b = b + 1;
                                                                                            else
          int main(void)                                                                        a = a + 1;
          {
              int i, k, a = 0, b = 0, lower = 0;
              printf("Enter the sample input line by line:n");
              for(i = 1; i <= 7; i = i + 1)
              {
                   scanf_s("%d", &k, 1);
                   if(k < 90)
                        if(k < 80)
                             ________________________________
                        else
                             ________________________________
                   else
                   ____________________________________
              }
              printf("A's = %dtB's = %dtLower = %dn", a, b, lower);
              return 0;
          }




   10. Next, let us test the conditions for all five grades, namely A, B, C, D and          if(k < 90)
         F. In the blank space, for each grade, place the appropriate statement                 if(k < 80)
         something like the following:                                                              if(k < 70)
                                                                                                        if(k < 60)
                 printf("A.n");                                                                            printf("Grade F.n");
                                                                                                        else
          Each else that is lined up under an if is that conditions false side.                            printf("Grade D.n");
          Complete the code and the flowchart.                                                      else
                                                                                                        printf("Grade C.n");
          #include <stdio.h>                                                                    else
                                                                                                    printf("Grade B.n");
          int main(void)                                                                    else
          {                                                                                     printf("Grade A.n");
              int i, k;
              printf("Enter the sample input line by line:n");
              for(i = 1; i <= 7; i = i + 1)
              {
                   scanf_s("%d", &k, 1);
                   if(k < 90)
if(k < 80)
                  if(k < 70)
                       if(k < 60)
                            ____________________________
                       else
                       _____________________________
                  else
                  _____________________________
             else
             ______________________________
         else
         ____________________________
     }
     return 0;
}




   The following is the completed flowchart.




    a. On the F (false) side of k < 90? Only A grades are selected. On the T (true) side of that condition, which grades
       are selected, A, B, C, D and/or F?
    b. On the T side of k < 80?, which grades are selected?
    c. On the T side of k < 70?, which grades are selected? What about on the F side?
    d. Grades that end up getting a B must go through how many decision diamonds?
e. Grades that end up getting a D must go through how many decision diamonds?

     Ans:

        a.   B, C, D and F.
        b.   C, D and F.
        c.   On the True side are D and F. On the False side, C was selected.
        d.   2 decision diamonds.
        e.   4 decision diamonds.



11. The following experiment performs the same steps as in the previous          if(k > 69)
     one. However, since the logic is rearranged, the printf() will need to be       if(k > 89)
     placed at different locations. Complete the code and the flowchart.                 printf("Grade A.n");
                                                                                     else if(k > 79)
     #include <stdio.h>                                                                  printf("Grade B.n");
                                                                                     else
     int main(void)                                                                      printf("Grade C.n");
     {                                                                               else if(k > 59)
         int i, k;                                                                       printf("Grade D.n");
         printf("Enter the sample input line by line:n");                           else
         for(i = 1; i <= 7; i = i + 1)                                                   printf("Grade F.n");
         {
              scanf_s("%d", &k, 1);
              if(k > 69)
                   if(k > 89)
                        ________________________
                   else if(k > 79)
                        ________________________
                   else
                   __________________________
              else if(k > 59)
                   __________________________
              else
                  ____________________________
         }
         return 0;
     }




    The following is a completed flowchart for the previous question.
a. F grades will go through two conditions: k > 69?, which would be false and k > 59?, which also would be false.
         How many conditions that D grades go through?
      b. How many conditions that C grades go through?
      c. How many conditions that A grades go through?
      d. If k > 79? were changed to k <= 80?, then what changes would be necessary in the flowchart?
      e. When a grade that is read into the variable k enters this set of nested ifs, it has a choice of going through
         how many different paths?
      f. The control of execution may take how many different paths at any one time?

   Ans:

      a.   Also 2 conditions same as F but both are True.
      b.   3 conditions.
      c.   2 conditions.
      d.   The True (T) and False (F) positions need to be exchanged for the k > 79 decision diamond.
      e.   5 different paths based on the path toward the Stop.
      f.   At any one time it will take 2 paths based on the True (T) and False (F) paths.




12. The following experiment performs the same steps as in the last two             if(k <= 59)
   previous experiments. However, it count the number of grades in each                 f = f + 1;
   category instead of printing them. Complete the code and the flowchart.          else if(k <= 89)
                                                                                        if(k <= 69)
    #include <stdio.h>                                                                      d = d + 1;
                                                                                        else if(k <= 79)
    int main(void)                                                                          c = c + 1;
    {                                                                                   else
        int i, k, a=0, b=0, c=0, d=0, f=0;                                                  b = b + 1;
        printf("Enter the sample input line by line:n");                               else
        for(i = 1; i <= 7; i = i + 1)                                                       a = a + 1;
        {
             // for older compiler you can try using scanf()
             scanf_s("%d", &k, 1);
             if(k <= 59)
                  ____________________________
             else if(k <= 89)
                  if(k <= 69)
                       _______________________________
                  else if(k <= 79)
                       _______________________________
              else
                  _______________________________
             else
                _____________________________
        }
        printf("A's = %dt", a);
        printf("B's = %dt", b);
        printf("C's = %dt", c);
        printf("D's = %dt", d);
        printf("F's = %dn", f);
        return 0;
    }
-------------------------------------------------------------------------------------------------


   The following is the answer for the flowchart diagram.




For each of these questions, choose from among the grades of A, B, C, D
and F.
                                                                                                a.   F.
                                                                                                b.   A, B, C and D.
           a.   Which grades(s) are selected on the true side of k <= 59?
                                                                                                c.   B, C and D.
           b.   Which grades(s) are selected on the false side of k <= 59?
                                                                                                d.   A.
           c.   Which grades(s) are selected on the true side of k <= 89?
                                                                                                e.   D.
           d.   Which grades(s) are selected on the false side of k <= 89?
                                                                                                f.   B and C.
           e.   Which grades(s) are selected on the true side of k <= 69?
                                                                                                g.   C.
           f.   Which grades(s) are selected on the false side of k <= 69?
                                                                                                h.   B.
           g.   Which grades(s) are selected on the true side of k <= 79?
           h.   Which grades(s) are selected on the false side of k <= 79?
13. Run the following program and key in the following sample input (without
   the commas): 16, 21, 17, 43, 7, 52, -1. The program will determine the
   smallest number entered.

    #include <stdio.h>

    int main(void)
    {
        int k, smallest;
        printf("Enter integers, when");
        printf(" done enter a ");
        printf("negative numbern");
        scanf_s("%d", &k, 1);
        // assign the first number to smallest variable
        smallest = k;
        // iterate while k >= 0
        for( ; k >= 0; )
        {
              // if the entered number is < smallest
              if(k < smallest)
                    // then assign the number to smallest variable...
                    smallest = k;
              // read the next input....repeat
              scanf_s("%d", &k, 1);
        }
        // print the smallest number...
        printf("The smallest number is %dn", smallest);
        return 0;
    }


      a. Draw a tracechart for this experiment (left to you!).
      b. What was the first value of the variable smallest?                    a. Left for your assignment.
      c. The first time that the condition in the if statement was             b. 16
          encountered, what were the values of k and smallest?                 c. k = 16, smallest =16.
      d. The second time that the if condition was tested, what were           d. k = 21, smallest = 16.
          the values of k and smallest?                                        e. k = 17, smallest = 16.
      e. The third time that the if condition was tested, what were the        f. 16 and 7.
          values of k and smallest?                                            g. Not really. It can be standalone in testing just a condition.
      f. During the loop, the value of smallest was changed. What              h. From the flowchart we can see that the scanf_s() executed inside the
          were the different values of smallest?                                  loop irrespective of k < smallest is True or False.
      g. Does an if statement require a corresponding else                     i. 0 time. It is already a smallest number entered as the first input.
          statement? Why?
      h. Is the scanf_s() executed inside the loop when the k <
          smallest is true or false, or irrespective of it?
       i. If the data entered were 11, 22, 13, 19, 16, -1, how many
          times would smallest be changed?

   To see the flow of this program clearer and used for
   troubleshooting you can add several line of codes as shown below.

   #include <stdio.h>

   int main(void)
   {
      int k, smallest;
      printf("Enter integers, when");
      printf(" done enter a ");
      printf("negative numbern");
      scanf_s("%d", &k, 1);
      // assign the first number to smallest variable
      smallest = k;
      printf("smallest = %d, k = %d at pos1.n", smallest, k);
      // iterate while k >= 0
      for( ; k >= 0; )
      {
          // if the entered number is < smallest
          printf("smallest = %d, k = %d at pos2.n", smallest, k);
          if(k < smallest)
            // then assign the number to smallest variable...
            smallest = k;
          printf("smallest = %d, k = %d at pos3.n", smallest, k);
          // read the next input....repeat
          scanf_s("%d", &k, 1);
          printf("smallest = %d, k = %d at pos4.n", smallest, k);
      }
      // print the smallest number...
      printf("The smallest number is %dn", smallest);
      return 0;
   }
   // Sample inputs: 16, 21, 17, 43, 7, 52, -1 and 11, 22, 13, 19, 16, -1
| Main |< C & C++ if and if-else 2 | C & C++ if and if-else 4 >| Site Index | Download |

                   The C Selection if, if-else, if-else-if, break, conditional/ternary operator and switch-case-break: Part 1 |
                                                        Part 2 | Part 3 | Part 4 | Part 5 | Part 6

tenouk.com, 2007

More Related Content

Cprogramcontrolifelseselection3

  • 1. | Main |< C & C++ if and if-else 2 | C & C++ if and if-else 4 >| Site Index | Download | C LAB WORKSHEET 8a C & C++ Selection: C/C++ if and if-else Part 3 Items in this page: 1. The C & C++ conditional statement, a selection and flowcharts. 2. The if, if-else construct, variations and flowcharts. 3. Activities, questions and answers. 4. Tutorial reference that should be used together with this worksheet are: C & C++ program control 1 and C & C+ + program control 2. 9. The following experiment should give the same result as the previous if(k < 90) one. Only the logic has been rearranged. Complete the flowchart and the if(k < 80) program so that the output is same as before. lower = lower + 1; else #include <stdio.h> b = b + 1; else int main(void) a = a + 1; { int i, k, a = 0, b = 0, lower = 0; printf("Enter the sample input line by line:n"); for(i = 1; i <= 7; i = i + 1) { scanf_s("%d", &k, 1); if(k < 90) if(k < 80) ________________________________ else ________________________________ else ____________________________________ } printf("A's = %dtB's = %dtLower = %dn", a, b, lower); return 0; } 10. Next, let us test the conditions for all five grades, namely A, B, C, D and if(k < 90) F. In the blank space, for each grade, place the appropriate statement if(k < 80) something like the following: if(k < 70) if(k < 60) printf("A.n"); printf("Grade F.n"); else Each else that is lined up under an if is that conditions false side. printf("Grade D.n"); Complete the code and the flowchart. else printf("Grade C.n"); #include <stdio.h> else printf("Grade B.n"); int main(void) else { printf("Grade A.n"); int i, k; printf("Enter the sample input line by line:n"); for(i = 1; i <= 7; i = i + 1) { scanf_s("%d", &k, 1); if(k < 90)
  • 2. if(k < 80) if(k < 70) if(k < 60) ____________________________ else _____________________________ else _____________________________ else ______________________________ else ____________________________ } return 0; } The following is the completed flowchart. a. On the F (false) side of k < 90? Only A grades are selected. On the T (true) side of that condition, which grades are selected, A, B, C, D and/or F? b. On the T side of k < 80?, which grades are selected? c. On the T side of k < 70?, which grades are selected? What about on the F side? d. Grades that end up getting a B must go through how many decision diamonds?
  • 3. e. Grades that end up getting a D must go through how many decision diamonds? Ans: a. B, C, D and F. b. C, D and F. c. On the True side are D and F. On the False side, C was selected. d. 2 decision diamonds. e. 4 decision diamonds. 11. The following experiment performs the same steps as in the previous if(k > 69) one. However, since the logic is rearranged, the printf() will need to be if(k > 89) placed at different locations. Complete the code and the flowchart. printf("Grade A.n"); else if(k > 79) #include <stdio.h> printf("Grade B.n"); else int main(void) printf("Grade C.n"); { else if(k > 59) int i, k; printf("Grade D.n"); printf("Enter the sample input line by line:n"); else for(i = 1; i <= 7; i = i + 1) printf("Grade F.n"); { scanf_s("%d", &k, 1); if(k > 69) if(k > 89) ________________________ else if(k > 79) ________________________ else __________________________ else if(k > 59) __________________________ else ____________________________ } return 0; } The following is a completed flowchart for the previous question.
  • 4. a. F grades will go through two conditions: k > 69?, which would be false and k > 59?, which also would be false. How many conditions that D grades go through? b. How many conditions that C grades go through? c. How many conditions that A grades go through? d. If k > 79? were changed to k <= 80?, then what changes would be necessary in the flowchart? e. When a grade that is read into the variable k enters this set of nested ifs, it has a choice of going through how many different paths? f. The control of execution may take how many different paths at any one time? Ans: a. Also 2 conditions same as F but both are True. b. 3 conditions. c. 2 conditions. d. The True (T) and False (F) positions need to be exchanged for the k > 79 decision diamond. e. 5 different paths based on the path toward the Stop. f. At any one time it will take 2 paths based on the True (T) and False (F) paths. 12. The following experiment performs the same steps as in the last two if(k <= 59) previous experiments. However, it count the number of grades in each f = f + 1; category instead of printing them. Complete the code and the flowchart. else if(k <= 89) if(k <= 69) #include <stdio.h> d = d + 1; else if(k <= 79) int main(void) c = c + 1; { else int i, k, a=0, b=0, c=0, d=0, f=0; b = b + 1; printf("Enter the sample input line by line:n"); else for(i = 1; i <= 7; i = i + 1) a = a + 1; { // for older compiler you can try using scanf() scanf_s("%d", &k, 1); if(k <= 59) ____________________________ else if(k <= 89) if(k <= 69) _______________________________ else if(k <= 79) _______________________________ else _______________________________ else _____________________________ } printf("A's = %dt", a); printf("B's = %dt", b); printf("C's = %dt", c); printf("D's = %dt", d); printf("F's = %dn", f); return 0; }
  • 5. ------------------------------------------------------------------------------------------------- The following is the answer for the flowchart diagram. For each of these questions, choose from among the grades of A, B, C, D and F. a. F. b. A, B, C and D. a. Which grades(s) are selected on the true side of k <= 59? c. B, C and D. b. Which grades(s) are selected on the false side of k <= 59? d. A. c. Which grades(s) are selected on the true side of k <= 89? e. D. d. Which grades(s) are selected on the false side of k <= 89? f. B and C. e. Which grades(s) are selected on the true side of k <= 69? g. C. f. Which grades(s) are selected on the false side of k <= 69? h. B. g. Which grades(s) are selected on the true side of k <= 79? h. Which grades(s) are selected on the false side of k <= 79?
  • 6. 13. Run the following program and key in the following sample input (without the commas): 16, 21, 17, 43, 7, 52, -1. The program will determine the smallest number entered. #include <stdio.h> int main(void) { int k, smallest; printf("Enter integers, when"); printf(" done enter a "); printf("negative numbern"); scanf_s("%d", &k, 1); // assign the first number to smallest variable smallest = k; // iterate while k >= 0 for( ; k >= 0; ) { // if the entered number is < smallest if(k < smallest) // then assign the number to smallest variable... smallest = k; // read the next input....repeat scanf_s("%d", &k, 1); } // print the smallest number... printf("The smallest number is %dn", smallest); return 0; } a. Draw a tracechart for this experiment (left to you!). b. What was the first value of the variable smallest? a. Left for your assignment. c. The first time that the condition in the if statement was b. 16 encountered, what were the values of k and smallest? c. k = 16, smallest =16. d. The second time that the if condition was tested, what were d. k = 21, smallest = 16. the values of k and smallest? e. k = 17, smallest = 16. e. The third time that the if condition was tested, what were the f. 16 and 7. values of k and smallest? g. Not really. It can be standalone in testing just a condition. f. During the loop, the value of smallest was changed. What h. From the flowchart we can see that the scanf_s() executed inside the were the different values of smallest? loop irrespective of k < smallest is True or False. g. Does an if statement require a corresponding else i. 0 time. It is already a smallest number entered as the first input. statement? Why? h. Is the scanf_s() executed inside the loop when the k < smallest is true or false, or irrespective of it? i. If the data entered were 11, 22, 13, 19, 16, -1, how many times would smallest be changed? To see the flow of this program clearer and used for troubleshooting you can add several line of codes as shown below. #include <stdio.h> int main(void) { int k, smallest; printf("Enter integers, when"); printf(" done enter a "); printf("negative numbern"); scanf_s("%d", &k, 1); // assign the first number to smallest variable smallest = k; printf("smallest = %d, k = %d at pos1.n", smallest, k); // iterate while k >= 0 for( ; k >= 0; ) { // if the entered number is < smallest printf("smallest = %d, k = %d at pos2.n", smallest, k); if(k < smallest) // then assign the number to smallest variable... smallest = k; printf("smallest = %d, k = %d at pos3.n", smallest, k); // read the next input....repeat scanf_s("%d", &k, 1); printf("smallest = %d, k = %d at pos4.n", smallest, k); } // print the smallest number... printf("The smallest number is %dn", smallest); return 0; } // Sample inputs: 16, 21, 17, 43, 7, 52, -1 and 11, 22, 13, 19, 16, -1
  • 7. | Main |< C & C++ if and if-else 2 | C & C++ if and if-else 4 >| Site Index | Download | The C Selection if, if-else, if-else-if, break, conditional/ternary operator and switch-case-break: Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 tenouk.com, 2007