第五章,選擇結構程序設計總結


if語句
switch語句
選擇結構程序設計舉例

 

if語句[三種形式]
1、單分支選擇if語句
語句形式:
if(表達式) 語句;
語句執行流程:如果語句返回值為真,就執行語句,否則路過語句;
example:
從鍵盤輸入兩個整數a和b,如果a大於b則交換兩個數,最后輸出兩個數。
#include <stdio.h>
void main()
{
int a,b,t;
scanf("%d,%d",&a,&b);
if(a>b)
 {t=a;a=b;b=t;}
printf("a=%d,b=%d\n",a,b):
}
注意:
<1>if語句自動結合一個語句,當滿足條件需要執行多個語句時,應用一對大括號{}將需要執行的多個語句括起,形成一個復合語句。
<2>if語句中表達式形式很靈活,可以是常量、變量、任何類型表達式、函數、指針等。只要表達式的值為非零值,條件就為真,反之條件為假。

2、雙分支選擇if語句
語句形式:
if(表達式) 語句1;
else 語句2;
語句執行流程:
判斷表達式返回值,若為真,則執行語句1,若為假,則執行語句2;
example:
輸入兩個整數,輸出其中大的數。
#include <stdio.h>
#include <math.h>
void main()
{
int x,y,max;
scanf("%d,%d",&x,&y);
if(x>y)max=x;
else max=y;
printf("max=%d\n",max);
}
注意:if和else語句之間只能一個語句,當if~else之間的語句不只一句時,應用一對{}將語句括起。
if(a>b){a++;b++;}
else{a=0;b=10}

3、多分支選擇if語句
語句形式:
if(表達式1) 語句1;
 else if(表達式2) 語句2;
  .....
   else if(表達N) 語句N;
    else 語句 N+1;
提示:
<1>當if語句中出現多個if與else的時候,要特別注意它們之間的匹配關系,否則就可能導致程序邏輯錯誤。else與if的匹配原則:就近一致原則;即else總是與前面的最近的if相匹配。
<2>if語句中條件的寫法應盡量簡單。

4、if語句的嵌套
語句含義:當if語句中又包含若干個if語句時,則構成了if語句嵌套的情況。
語句形式:
A、if(表達式1)
 if(表達式2)
  語句1;

B、if(表達式1)
 if(表達式2)
  語句1;
 clse
  語句2;
語句執行流程:else與if配對原則:就近一致原則;else與同一層最接近它,而又沒有其它else語句與之相匹配的if語句配對。

switch語句
1、語句形式:
switch (表達式) //不能接分號,根據表達式的不同值,選擇不同程序分支,又稱開關語句;數量型或字符型;
 {
  case 常量1:語句1;
  case 常量2:語句2;
  case 常量3:語句3;
   ....
  case 常量n:語句n;
  default:語句n+1; 
 }
2、執行流程:
example:
假設用0、1、2.....6分別表示星期日、星期一、..星期六,現在輸入一個數字,輸出對應的星期幾的英文單詞。如果輸入3,輸出"Wednesday"。
#include "stdio.h"
void main()
{
 int n;
 scanf("%d",&n);
 switch(n)
 {
  case 0:printf("Sunday\n");
  case 1:printf("Monday\n");
  case 2:printf("Tuesday\n");
  case 3:printf("Wednesay\n");
  case 4:printf("Thursday\n");
  case 5:printf("Friday\n");
  case 6:printf("Saturday\n");
  default:printf("ERROR");
 }
}
在switch語句中,case常量表達式只相當於一個語句標號,表達式的值和某標號相等則轉向該標號執行,但不能在執行完后自動跳出整個switch語句,因此會繼續執行所有后面語句的情況。為此,C語言提供了一種break語句,其功能可以幫助跳出它據的switch語句。
void main()
{
 int n;
 scanf("%d",&n);
 switch(n)
 {
  case 0:printf("Sunday\n");break;
  case 1:printf("Monday\n");break;
  case 2:printf("Tuesday\n");break;
  case 3:printf("Wednesay\n");break;
  case 4:printf("Thursday\n");break;
  case 5:printf("Friday\n");break;
  case 6:printf("Saturday\n");break;
  default :printf("ERROR");
 }
}
3、說明
多個case語句可以共用一組執行語句。
switch(grade)
{
case 'A':
case 'B':
case 'c':printf("grade>=60\n");break;
default :printf("grade<60");
}
各case和default子句的先后順序可以變動,不影響運行結果。
default語句可以省略不用。
case和default與其后面的常量表達式間至少有一個空格。
switch語句可以嵌套,break語句只跳出安所在的switch語句。
example:
企業發放的資金根據利潤來提成,從鍵盤輸入當月利潤,求尖發放的資金總數?
#include <stdio.h>
void main()
{
float x,y;
int n;
scanf("%f",&x);
n=(int)x/10;
if((int)x==0)n--;
switch(n)
 {
 case 0:y=x*0.1;break;
 case 1:y=x*0.12;break;
 case 2:case 3:y=x*0.14;break;
 case 4:case 5:y=x*0.16;break:
 case 7:case 7:y=x*0.18;break;
 default :y=x*0.2;
 }
printf("y=%.2f\n",y);
}
example:
將任意三個數按從大到小的順序輸出。
#include "stdio.h"
void main()
{
int x,y,z,t;
scanf("%d,%d,%d",&x,&y,&z);
if(x<y){t=x;x=y;y=t;}
if(y<z){t=y;y=z;z=t;}
if(x<z){t=x;x=z;z=t;}
printf("%d,%d,%d\n",x,y,z);
}
example:
從鍵盤輸入一個年份,判斷是否是閏年。
#include <stdio.h>
void main()
{
 int year;
scanf("%d",&year);
if(year@0==0||(year%4==0&&yera0!=0))
printf("%d is a leap year\n",year);
else
printf("%d is not a leap year\n",year);
}

logo
 


免責聲明!

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



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