C/Language Basics/Switch

Материал из C\C++ эксперт
Перейти к: навигация, поиск

a simple 4 function calculator

<source lang="cpp">

  1. include <stdio.h>

int main() {

   char  line[100];
   int   result =0;
   char  operator;
   int   value;
   while (1) {
       printf("Result: %d\n", result);
       printf("Enter operator and number: ");
       fgets(line, sizeof(line), stdin);
       sscanf(line, "%c %d", &operator, &value);
       if ((operator == "q") || (operator == "Q"))
           break;
       switch (operator) {
       case "+":
           result += value;
           break;
       case "-":
           result -= value;
           break;
       case "*":
           result *= value;
           break;
       case "/":
           if (value == 0) {
               printf("Error:Divide by zero\n");
               printf("   operation ignored\n");
           } else
               result /= value;
           break;
       default:
           printf("Unknown operator %c\n", operator);
           break;
       }
   }
   return (0);

}


      </source>


Console menu: switch with char case

<source lang="cpp">

  1. include <stdio.h>
  2. include <conio.h>

int main(void) {

 char ch;
 do {
   printf("\n Enter a character, q to quit: ");
   ch = getche();
   printf("\n");
   switch(ch) {
     case "a":
       printf("a ");
     case "b":
       printf("b ");
     case "c":
       printf("c");
       break;
     case "d":
       printf("d ");
     case "e":
       printf("e ");
  }
 } while(ch != "q");
 return 0;

}


      </source>


Get three input at the same time: scanf

<source lang="cpp">

  1. include <stdio.h>

int main(void) {

 int i, j;
 char op;
 printf("Enter operation(+ - * /): ");
 scanf("%d%c%d", &i, &op, &j);
 switch(op) {
   case "+": printf("%d", i + j);
     break;
   case "-": printf("%d", i - j);
     break;
   case "/": if(j) printf("%d", i / j);
     break;
   case "*": printf("%d", i * j);
 }
 return 0;

}


      </source>


How to use switch: char

<source lang="cpp">

  1. include <stdio.h>

void main() {

  char answer = 0;                    /* Stores an input character */
  printf("Enter Y or N: ");
  scanf(" %c", &answer);
  switch (answer)
  {
    case "y": case "Y":
      printf("\n affirmative.");
      break;
    case "n": case "N":
      printf("\n  negative.");
      break;
    default:
      printf("\n  not respond correctly...");
      break;
  }

}


      </source>


How to use switch: number

<source lang="cpp">

  1. include <stdio.h>

void main() {

  int choice = 0;                      /* The number chosen */
  /* Get the choice input */
  printf("\n Pick a number between 1 and 10: ");
  scanf("%d",&choice);
  /* Check for an invalid selection */
  if((choice>10) || (choice <1))
    choice = 11;                      /* Selects invalid choice message */
 
  switch(choice)
  {
    case 7:
      printf("\nCongratulations!");
      printf("\nYou win.");
      break;                                   /* Jumps to the end of the block */
    case 2:
      printf("\nYou win.");
      break;                                   /* Jumps to the end of the block */
    case 8:
      printf("\nYou win.");
      break;                                   /* Jumps to the end of the block */
     
    case 11:
      printf("\nTry between 1 and 10.");
                             /* No break ?so continue with the next statement */
    default:
      printf("\nSorry, you lose.\n");
      break;          /* Defensive break - in case of new cases */
  }

}


      </source>


Switch: char and nested if

<source lang="cpp"> /*Example 3.11 A calculator*/

  1. include <stdio.h>

void main() {

 double number1 = 0.0;                /* First operand: a decimal number  */
 double number2 = 0.0;                /* Second operand: a decimal number */
 char operation = 0;                  /* Operation - must be +, -, *, /, or %  */
  printf("\nEnter the calculation\n");
  scanf("%lf %c %lf", &number1, &operation, &number2);
 /* Code to check the input goes here */
 switch(operation)
 {
   case "+":                              /* No checks necessary for add       */
     printf("= %lf\n", number1 + number2);
     break;
   case "-":                               /* No checks necessary for subtract */
     printf("= %lf\n", number1 - number2);
     break;
   case "*":                               /* No checks necessary for multiply */
     printf("= %lf\n", number1 * number2);
     break;                              
   case "/":
     if(number2 == 0)                      /* second operand cannot be zero    */
       printf("\n\n\aDivision by zero error!\n");
     else
       printf("= %lf\n", number1 / number2);
     break;
   case "%":                               /* second operand cannot be zero    */
     if((long)number2 == 0) 
       printf("\n\n\aDivision by zero error!\n");
   else
     printf("= %ld\n", (long)number1 % (long)number2);
       break;
   default:                          /* Operation is invalid*/
     printf("\n\n\aIllegal operation!\n");
 }

}


      </source>


Switch demo

<source lang="cpp">

  1. include <stdio.h>
  2. include <stdlib.h>

int main() {

   char  line[10];
   while (1) {
       printf("Enter add(a), delete(d), quit(q): ");
       fgets(line, sizeof(line), stdin);
       switch (line[0]) {
           case "a":
               printf("Add\n");
               break;
           case "d":
               printf("Delete\n");
               break;
           case "q":
               printf("Quit\n");
               exit(0);
           defualt:
               printf("Error:Bad command %c\n", line[0]);
               break;
       }
   }

}


      </source>


Switch inside for loop

<source lang="cpp">

  1. include <stdio.h>

main() {

   int i,n;
   
   scanf("%d",&n); 
   
   for(i = 1; i<n; i= i+1) {
      switch(i%2) {
          case 0 : printf("the number %d is even \n",i);
             break;   
          case 1 : printf("the number %d is odd \n",i);
             break;
      }
   }

}

      </source>


Switch with char case

<source lang="cpp">

  1. include <stdio.h>

int main(void) {

 int a, b;
 char ch;
 printf("Do you want to (Enter first letter):\n");
 printf("(A)dd, (S)ubtract, (M)ultiply, or (D)ivide?\n");
 do {
   printf("Your choice: ");
   ch = getchar();
 } while(ch!="A" && ch!="S" && ch!="M" && ch!="D");
 
 printf("\n");
 printf("Enter first number: ");
 scanf("%d", &a);
 
 printf("Enter second number: ");
 scanf("%d", &b);
 switch(ch) {
   case "A": printf("%d", a + b);
     break;
   case "S": printf("%d", a - b);
     break;
   case "M": printf("%d", a * b);
     break;
   case "D": if(b!=0) printf("%d", a / b);
 }
 return 0;

}

      </source>


Switch with default

<source lang="cpp">

  1. include <stdio.h>
  2. include <conio.h>

int main(void) {

 char ch;
 printf("Enter the letter: ");
 ch = getche();
 switch(ch) {
   case "a":
   case "e":
   case "i":
   case "o":
   case "u":
   case "y":
     printf(" is a vowel\n");
     break;
   default:
     printf(" is a consonant");
 }
 return 0;

}

      </source>


Switch with int case

<source lang="cpp">

  1. include <stdio.h>

int main(void) {

 int i;
 printf("Enter a number between 1 and 4: ");
 scanf("%d", &i);
 switch(i) {
   case 1:
     printf("one");
     break;
   case 2:
     printf("two");
     break;
   case 3:
     printf("three");
     break;
   case 4:
     printf("four");
     break;
   default:
     printf("Unrecognized Number");
 }
 return 0;

}

      </source>