程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 解析C++編程中的選擇構造和switch語句的用法

解析C++編程中的選擇構造和switch語句的用法

編輯:關於C++

解析C++編程中的選擇構造和switch語句的用法。本站提示廣大學習愛好者:(解析C++編程中的選擇構造和switch語句的用法)文章只能為提供參考,不一定能成為您想要的結果。以下是解析C++編程中的選擇構造和switch語句的用法正文


C++編寫選擇構造的法式
上面,經由過程兩個實例來講明若何編寫較為龐雜的C++法式。

【例】編寫法式,斷定某一年能否為閏年。

#include <iostream>
using namespace std;
int main( )
{
  int year;
  bool leap;
  cout<<"please enter year:";//輸入提醒
  cin>>year; //輸出年份
  if (year%4==0) //年份能被4整除
  {
   if(year%100==0)//年份能被4整除又能被100整除
   {
     if (year%400==0)//年份能被4整除又能被400整除
      leap=true;//閏年,令leap=true(真)
     else
      leap=false;
   } //非閏年,令leap=false(假)
   else //年份能被4整除但不克不及被100整除確定是閏年
     leap=true;
  } //是閏年,令leap=true
  else //年份不克不及被4整除確定不是閏年
   leap=false; //若為非閏年,令leap=false
  if (leap)
   cout<<year<<" is "; //若leap為真,就輸入年份和“是”
  else
   cout<<year<<" is not ";//若leap為真,就輸入年份和“不是”
  cout<<" a leap year."<<endl; //輸入“閏年”
  return 0;
}

運轉情形以下:

① 2005↙
2005 is not a leap year.
② 1900↙
1900 is npt a leap year.

也能夠將法式中第8~16行改寫成以下的if語句:

if(year%4!=0)
  leap=false;
else if(year%100!=0)
  leap=true;
else if(year%400!=0)
  leap=false;
else
  leap=true;

也能夠用一個邏輯表達式包括一切的閏年前提,將上述if語句用上面的if語句取代:
if((year%4 == 0 && year%100 !=0) || (year%400 == 0)) leap=true;
else leap=false;

【例】運輸公司對用戶盤算運費。旅程(s)越遠,每千米運費越低。尺度以下:

  s<250km 沒有扣頭
  250≤s<500  2%扣頭
  500≤s<1000  5%扣頭
  1000≤s<2000  8%扣頭
  2000≤s<3000  10%扣頭
  3000≤s  15%扣頭

設每千米每噸貨色的根本運費為p(price的縮寫),貨色重為w(wright的縮寫),間隔為s,扣頭為d(discount的縮寫),則總運費f(freight的縮寫)的盤算公式為

  f = p * w * s * (1 - d)

據此寫出法式以下:

#include <iostream>
using namespace std;
int main( )
{
  int c,s;
  float p,w,d,f;
  cout<<"please enter p,w,s:";
  cin>>p>>w>>s;
  if(s>=3000)
   c=12;
  else
   c=s/250;
  switch (c)
  {
   case 0:d=0;break;
   case 1:d=2;break;
   case 2:
   case 3:d=5;break;
   case 4:
   case 5:
   case 6:
   case 7:d=8;break;
   case 8:
   case 9:
   case 10:
   case 11:d=10;break;
   case 12:d=15;break;
  }
  f=p*w*s*(1-d/100.0);
  cout<<"freight="<<f<<endl;
  return 0;
}

運轉情形以下:

please enter p,w,s:100 20 300↙
freight=588000

C++ switch語句(多選分支構造)
switch語句是多分支選擇語句,用來完成多分支選擇構造。它的普通情勢以下:

switch(表達式)
{
  case 常量表達式1:語句1
  case 常量表達式2:語句2
  ...
  case 常量表達式n:語句n
  default:語句n+1
 }

例如,請求依照測驗成就的品級打印出百分制分數段,可以用switch語句完成:

switch(grade)
{
  case 'A': cout<<"85~100\n";
  case 'B': cout<<"70~84\n";
  case 'C': cout<<"60~69\n";
  case 'D': cout<<"<60\n";
  default: cout<<"error\n";
}

解釋:
1) switch前面括號內的“表達式”,許可為任何類型。

2) 當switch表達式的值與某一個case子句中的常量表達式的值相婚配時,就履行此case子句中的內嵌語句,若一切的case子句中的常量表達式的值都不克不及與switch表達式的值婚配,就履行default子句的內嵌語句。

3) 每個case表達式的值必需互不雷同,不然就會湧現相互抵觸的景象(對表達式的統一個值,有兩種或多種履行計劃)。

4) 各個case和default的湧現順序不影響履行成果。例如,可以先湧現“default:…”,再湧現“case 'D':…”,然後是“case 'A':…”。

5) 履行完一個case子句後,流程掌握轉移到下一個case子句持續履行。“case常量表達式”只是起語句標號感化,其實不是在該處停止前提斷定。在履行switch語句時,依據switch表達式的值找到與之婚配的case子句,就從此case子句開端履行下去,不再停止斷定。例如,下面的例子中,若grade的值等於'A',則將持續輸入:

  85~100
  70~84
  60~69
  <60
  error

是以,應當在履行一個case子句後,使流程跳出switch構造,即終止switch語句的履行。可以用一個break語句來到達此目標。將下面的switch構造改寫以下:

switch(grade)

{
  case 'A': cout<<"85~100\n";break;
  case 'B': cout<<"70~84\n";break;
  case 'C': cout<<"60~69\n";break;
  case 'D': cout<<"<60\n";break;
  default: cout<<"error\n";break;
}


最初一個子句(default)可以不加break語句。假如grade的值為'B',則只輸入“70~84”。
 

在case子句中固然包括一個以上履行語句,但可以不用用花括號括起來,會主動次序履行本case子句中一切的履行語句。

6) 多個case可以共用一組履行語句,如

  case 'A':
  case 'B':
  case 'C': cout<<">60\n";break;
  ...

當grade的值為'A'?'B'或'C'時都履行統一組語句。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved