上一講雞啄米為大家講了運算符和表達式的知識,這一講雞啄米主要講算法基本控制結構中的選擇結構,同時教大家寫比較簡單的程序。

       為了能寫出簡單的程序并看見它們的輸出效果,雞啄米先講下數據的輸入和輸出。數據從一個對象到另一個對象的流動我們一般稱之為“流”,比如程序中的數據在屏幕上顯示出來,我們可以想成數據從程序流向屏幕,就是輸出流。從鍵盤輸入數據就是輸入流了。從流中獲取數據叫做提取操作,向流中添加數據叫做插入操作。cin是系統預定義的輸入流,用來處理標準輸入即鍵盤輸入。cout是預定義的輸出流,用來處理標準輸出,即屏幕輸出。

      “<<”是預定義的插入符,它用在cout上可以實現屏幕輸出。使用形式如下:cout<<表達式<<表達式...。這里可以連著多個表達式,輸出多個數據到屏幕。這里的表達式可以是很復雜的表達式,系統會計算出這些表達式的值只把結果傳給插入符<<,然后顯示到屏幕上。例如,cout<<"a+b="<<a+b;會把"a+b="這個字符串和a+b的計算結果輸出到屏幕。如果a=1,b=2;則屏幕上顯示a+b=3。

      “>>”是提取符,用到cin上用來把鍵盤上輸入的數賦值給變量。使用形式為:cin>>表達式>>表達式...。這里的提取符也可以有多個,每個后邊跟一個表達式,這里的表達式一般是用來存放輸入值的變量。比如,int a,b; cin>>a>>b;后面這個語句要求從鍵盤上輸入兩個整型數,兩個數之間用空格分隔,如果輸入 3 4,則變量a的值為3,b的值為4。

       再介紹幾個操縱符,操縱符用來把輸出值以特殊的格式顯示出來。比如setw(int)用來設置域寬,就是設置數值的顯示位數,setprecision(int)用來設置浮點數的小數位數(包括小數點),endl插入換行符,并刷新流。還有Dec,Hex,Oct是要求以幾進制顯示。

       下面雞啄米開始講算法的基本控制結構。算法的基本控制結構包括順序結構、選擇結構和循環結構。順序結構就是按照事物的邏輯一條語句一條語句的寫下來,順序執行,就像流水賬,這種結構最常見,也最簡單,這里就不講了。這一講雞啄米主要講選擇結構,循環結構下一講會講到。

       大家想想,如果有這樣一個問題,若x<0,則y=-1,若x=0,則y=0,若x>0,則y=1。這里涉及到好幾種選擇,順序結構肯定不行了,就要用到選擇結構。

雞啄米:C++編程入門系列之六(算法的基本控制結構之選擇結構)

      一.用if語句實現選擇結構

      if語句專門用來實現選擇結構,使用形式為:

      if (表達式)
              語句1
      else
              語句2

      這個結構的執行順序是,先計算表達式的值,如果為true,則執行語句1,否則就執行語句2。比如,

      if (x>y)
               cout<<x;
      else
               cout<<y;

      這段程序可以用來輸出x和y中比較大的那個數。if語句中的else和語句2可以沒有,變成:if (表達式) 語句。比如,if (x>y) cout<<x。

      這里雞啄米給大家一個程序例子,大家可以在vs2010中點File->New->Project創建一個Win32 Console Application。比如創建的新工程名叫Test,然后找到Test.cpp,里面有_tmain函數,實際上就是雞啄米前面說的main函數,是程序的入口函數。我們就在這個main函數里寫一段代碼,用來判斷輸入一個年份時這個年份是不是閏年。大家知道,可以被4整除不能被100整除,或者能被400整除的年份都是閏年。下面是程序:

      #include "stdafx.h"
      #include <iostream>
      using namespace std;
      int _tmain(int argc, _TCHAR* argv[])
      {
            int nYear;
            bool bIsLeapYear;
            cout<<"Enter the year:";
            cin>>nYear;
            bIsLeapYear = ((nYear%4==0 && nYear%100!=0) || (nYear%400==0));
            if (bIsLeapYear)
                 cout<<nYear<<"is a leap year."<<endl;
            else
                 cout<<nYear<<"is not a leap year."<<endl;
            return 0;
      }

      因為vs2010里已經沒有以前iostream.h文件,所以這里包含了iostream文件,這是最新的C++標準,里面同樣包含了輸入輸出函數,using namespace std是說要用到std名字空間,名字空間雞啄米以后會講。開始debug運行,屏幕上會顯示:Enter the year:,然后我們輸入2000,點回車屏幕上接著顯示:2000 is a leap year.可能你看不到這一句窗口就消失了,沒關系,可以點debug->start without debugging,這樣窗口就不會消失了。

      二.多重選擇結構

      有些問題可能需要我們進行多次判斷,這樣就可以有幾種方法:

      1.嵌套的if語句

      使用的語法形式:

      if(表達式1)
          if(表達式2)  語句1
          else             語句2
      else
          if(表達式3)  語句3
          else             語句4

      語句1、2、3、4可以是復合語句。每一層的if都要與else配對,如果省略掉一個else則要使用{}把這一層的if語句括起來。雞啄米建議大家寫程序的時候最好每層都用大括號括起來這樣會大大減少出錯的概率,也比較整齊,即使是熟手也一樣。雞啄米再給大家舉個例子:

      #include "stdafx.h"
      #include <iostream>
      using namespace std;
      int _tmain(int argc, _TCHAR* argv[])
      {
             int x,y;
             cout<<"Enter x and y:";
             cin>>x>>y;
             if (x!=y)
             {
                    if (x>y)
                         cout<<"x>y"<<endl;
                    else
                         cout<<"x<y"<<endl;
             }
             else
             {
                    cout<<"x=y"<<endl;
             }
             return 0;
      }

      運行這個程序,屏幕上會顯示,Enter x and y:,然后輸入3 5,按回車接著會顯示x<y。

      2.if...else if語句

      若if語句的嵌套都在else分支下,就可以使用if...else if語句。使用的語法形式為:

      if (表達式1)            語句1
      else if (表達式2)   語句2
      else if (表達式3)   語句3
      ...
      else                        語句n

      這里的執行邏輯就是,如果表達式1為true,則執行語句1,如果表達式1為false,且表達式2為true則執行語句2,如果表達式1、表達式2為false,且表達式3為true則執行語句3...就這樣一層一層判斷著執行下去。

      3.switch語句

      我們進行判斷選擇的時候,有可能每次都是對同一個表達式的值進行判斷,那么就沒有必要在每一個嵌套的if語句里都計算一下它的值,而是使用switch來解決這個問題。語法形式為:

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

      此類語句的執行順序是,先計算表達式的值,然后在case語句中尋找與之相等的常量表達式,跳到此處開始執行,若沒有與之相等的則跳到default開始執行。使用switch語句時要注意以下幾點:這些常量表達式的值不能相同,順序可以隨便;每個case語句的最后都要加break語句,不然會一直把下面所有的語句執行完;switch括號里的表達式必須是整型、字符型和枚舉型的一種;每個case下的語句不需要加{};如果多個case下執行一樣的操作,則多個case可以共用一組語句,比如
      case 1:
      case 2:
      case 3:   a++;
                    break;
      雞啄米再給大家舉個switch的例子。如果整型變量a為0則輸出“小雞”,如果為1則輸出“小啄”,如果為2則輸出“小米”,其他情況下輸出“雞啄米”。程序如下:

      #include "stdafx.h"
      #include <iostream>
      using namespace std;
      int _tmain(int argc, _TCHAR* argv[])
      {
              int a;
              cout<<"Enter a:";
              cin>>a;
              switch (a)
              {
              case 0:
                       cout<<"小雞"<<endl;
                       break;
              case 1:
                       cout<<"小啄"<<endl;
                       break;
              case 2:
                       cout<<"小米"<<endl;
                       break;
              default:
                       cout<<"雞啄米"<<endl;
                       break;
              }
              return 0;
      }

      運行時屏幕顯示Enter a:,我們輸入2,則會接著顯示“小米”。

      這一講雞啄米首先講了輸入輸出流對象,然后講了選擇控制結構,舉了幾個程序例子,大家可以按照雞啄米的程序上機調試運行下,也可以自己在此基礎上改改程序然后看看結果是否如你所想,大家先找找編程的感覺,在編程入門的時候不要著急。

 

除非特別注明,雞啄米文章均為原創
轉載請標明本文地址:http://www.9385095.live/software/34.html
2011年9月6日
作者:雞啄米 分類:軟件開發 瀏覽: 評論:3