switch語句的用法實例


一個 switch 語句允許測試一個變量等於多個值時的情況。每個值稱為一個 case,且被測試的變量會對每個 switch case 進行檢查。

switch 語句必須遵循下面的規則:

1.在一個 switch 中可以有任意數量的 case 語句。每個 case 后跟一個要比較的值和一個冒號。

2.case 后的 類型 必須與 switch 中的變量具有相同的數據類型,且必須是一個常量或字面量。

3.當被測試的變量等於 case 中的常量時,case 后跟的語句將被執行,直到遇到 break 語句為止。

4.當遇到 break 語句時,switch 終止,控制流將跳轉到 switch 語句后的下一行。

5.不是每一個 case 都需要包含 break。如果 case 語句不包含 break,控制流將會 繼續 后續的 case,直到遇到 break 為止。

6.一個 switch 語句可以有一個可選的 default case,出現在 switch 的結尾。default case 可用於在上面所有 case 都不為真時執行一個任務。default case 中的 break 語句不是必需的。

 

1.題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。

程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。

int main(){
    char i,j;        //i為輸入的第一個字母,j為第二個
    printf("請輸入第一個字母:");
    scanf("%c",&i);    //注意輸入的類型為字符型,開始自己慣例寫成整型
    getchar();         //第二次是讀入的一個換行符,而不是輸入的字符,因此需要加一個getchar() 吃掉換行符
    switch(i){
        case'm':
            printf("monday\n");
            break;
        case'w':
            printf("wendesday\n");
            break; 
            
        case'f':
            printf("friday\n");
            break;
        case't':
            printf("請輸入下一個字母:");
            scanf("%c",&j); //這時需要加入輸入j的語句if(j=='u')  
{printf("tuesday\n");break;} if(j=='h')
{printf("thursday\n");break;} case's': printf("請輸入下一個字母:"); scanf("%c",&j); if(j=='a')
{ printf("satursday\n");break;} if(j=='u')
{ printf("sunday\n");break; } default : printf("error\n"); break; } }

 

2.第二個小用例

使用 switch 語句編程,根據輸入的年份判斷是否為閏年,根據輸入的月份判斷這月有多少天。
閏年的定義:
 普通年(不能被100整除的年份)能被4整除的為閏年。(如2004年就是閏年,1999年不是閏年);
 世紀年(能被100整除的年份)能被400整除的是閏年。(如2000年是閏年,1900年不是閏年);

 

#include<stdio.h>
 int main()
 {
     int year,month,leap;    //leap判斷閏年的標志

     printf("請輸入年份和月份:");
     scanf("%d%d",&year,&month);
     if((month<1)||(month>12)){
         printf("data error");
     }
     else            //在月份輸入正確的情況下判斷閏年並計算天數
     {
     
         if(((year%4==0)&&(year%100 !=0))||(year%400==0))
      {
        leap=1;
        printf("該年為閏年\n"); 
       }
       else 
      {
       leap=0;
        printf("該年不是閏年\n");
      }
     switch(month){
        case 4: case 6: case 9:  case 11:         //case語句的連讀使用,在4,6,9,11月有30天
        printf("%d月有%d天",month,30);break;
       case 2:
        printf("%d月有%d天",month,28+leap);break;
       default: printf("%d月有%d天",month,31);break;
       }
    }
}

 

 2019-07-31    17:13:28

剛好正在學習java,所以特地寫了java版本對比學習一下,

import java.util.Scanner;

public class TestScanner2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
           int leap;    //leap判斷閏年的標志
           Scanner scanner=new Scanner(System.in);
           System.out.println("請輸入年份:");
           int year=scanner.nextInt();
           System.out.println("請輸入月份:");
           int month=scanner.nextInt();
            if(month<1||month>12){
               System.out.println("data error");
             }
             else            //在月份輸入正確的情況下判斷閏年並計算天數
             {
             
                 if(((year%4==0)&&(year%100 !=0))||(year%400==0))
                {
                leap=1;
                System.out.println("該年為閏年\n"); 
                }
               else 
               {
               leap=0;
               System.out.println("該年不是閏年\n");
               }
             switch(month){
                case 4: case 6: case 9:  case 11:         //case語句的連讀使用,在4,6,9,11月有30天
                    System.out.println("第"+month+"有30天");break;
               case 2:
                   System.out.println("第"+month+"有28+leap天");break;
               default: System.out.println("第"+month+"有31天");break;
               }
            }
        }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM