欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++程序的執(zhí)行順序結構以及關系和邏輯運算符講解

 更新時間:2015年09月07日 16:36:38   投稿:goldensun  
這篇文章主要介紹了C++程序的執(zhí)行順序結構以及關系和邏輯運算符講解,是C++入門學習中的基礎知識,需要的朋友可以參考下

C++順序結構程序
【例】求一元二次方程式ax2+bx+c=0的根。a,b,c的值在運行時由鍵盤輸入,它們的值滿足b2-4ac≥0。根據(jù)求x1,x2的算法。它可以編寫出以下C++程序:

#include <iostream>
#include <cmath> //由于程序要用到數(shù)學函數(shù)sqrt,故應包含頭文件cmath
using namespace std;
int main( )
{
 float a,b,c,x1,x2;
 cin>>a>>b>>c;
 x1=(-b+sqrt(b*b-4*a*c))/(2*a);
 x2=(-b-sqrt(b*b-4*a*c))/(2*a);
 cout<<"x1="<<x1<<endl;
 cout<<"x2="<<x2<<endl;
 return 0;
}

運行情況如下:

4.5 8.8 2.4 ↙
x1=-0.327612
x2=-1.17794

如果程序中要用到數(shù)學函數(shù),都要包含頭文件cmath(也可以用老形式的頭文件math.h,但提倡使用C++新形式的頭文件)。在寫程序時,一定要注意將數(shù)學表達式正確地轉換成合法的C++表達式。

可以看到:順序結構的程序中的各執(zhí)行語句是順序執(zhí)行的。這種程序最簡單,最容易理解。

C++關系運算和邏輯運算(關系運算符和邏輯運算符)
往往要求根據(jù)某個指定的條件是否滿足來決定執(zhí)行的內容。例如,購物在1000元以下的打九五折,1000元及以上的打九折。

C++提供if語句來實現(xiàn)這種條件選擇。如:

  if amount<1000 tax=0.95; //amount代表購物總額,tax代表折扣
  else tax=0.9; //若amount<1000,條件滿足,tax=0.95,否則tax=0.9
  pay=amount*tax; //pay為實付款

關系運算和關系表達式

上面if語句中的“amount<1000”實現(xiàn)的不是算術運算,而是關系運算。實際上是比較運算,將兩個數(shù)據(jù)進行比較,判斷比較的結果?!癮mount<1000”就是一個比較式,在高級語言中稱為關系表達式,其中“>”是一個比較符,稱為關系運算符。

C++的關系運算符有:

  •     <    (小于)
  •     <=        (小于或等于)           優(yōu)先級相同 (高)
  •     >    (大于)
  •     >=        (大于或等于) 
  •     ==        (等于)
  •     !=       (不等于)           優(yōu)先級相同 (低)

關于優(yōu)先次序:
前4種關系運算符(<,<=,>,>=)的優(yōu)先級別相同,后兩種也相同。前4種高于后兩種。例如,“>”優(yōu)先于“==”。而“>”與“<”優(yōu)先級相同。
關系運算符的優(yōu)先級低于算術運算符。
關系運算符的優(yōu)先級高于賦值運算符。

例如:

  • c>a+b 等效于 c>(a+b)
  • a>b==c等效于(a>b)==c
  • a==b<c等效于a==(b<c)
  • a=b>c 等效于a=(b>c)

用關系運算符將兩個表達式連接起來的式子,稱為關系表達式。關系表達式的一般形式可以表示為:

  表達式 關系運算符 表達式

其中的“表達式”可以是算術表達式或關系表達式?邏輯表達式?賦值表達式?字符表達式。例如,下面都是合法的關系表達式:

  a>b, a+b>b+c,(a==3)>(b==5), 'a'<'b', (a>b)>(b<c)

關系表達式的值是一個邏輯值,即“真”或“假”。例如,關系表達式“5==3”的值為“假”,“5>=0”的值為“真”。在C和C++中都用數(shù)值1代表“真”,用0代表“假”。如果有以下賦值表達式:

  •     d=a>b 則d得到的值為1
  •     f=a>b>c  f得到的值為0

邏輯常量和邏輯變量

C語言沒有提供邏輯型數(shù)據(jù),關系表達式的值(真或假)分別用數(shù)值1和0代表。C++增加了邏輯型數(shù)據(jù)。邏輯型常量只有兩個,即false(假)和true(真)。

邏輯型變量要用類型標識符bool來定義,它的值只能是true和false之一。如

  bool found, flag=false; //定義邏輯變量found和flag,并使flag的初值為false
  found=true; //將邏輯常量true賦給邏輯變量found

由于邏輯變量是用關鍵字bool來定義的,因此又稱為布爾變量。邏輯型常量又稱為布爾常量。所謂邏輯型,就是布爾型。

設立邏輯類型的目的是為了看程序時直觀易懂。

在編譯系統(tǒng)處理邏輯型數(shù)據(jù)時,將false處理為0,將true處理為1。因此,邏輯型數(shù)據(jù)可以與數(shù)值型數(shù)據(jù)進行算術運算。

如果將一個非零的整數(shù)賦給邏輯型變量,則按“真”處理,如

  flag=123; //賦值后flag的值為true
  cout<<flag;

輸出為數(shù)值1。
邏輯運算和邏輯表達式

有時只用一個關系表達式還不能正確表示所指定的條件。

C++提供3種邏輯運算符:
(1) &&  邏輯與(相當于其他語言中的AND)
(2) ||  邏輯或(相當于其他語言中的OR)
(3) !邏輯非(相當于其他語言中的NOT)

邏輯運算舉例如下:

  • a && b若a,b為真,則a && b為真。
  • a||b  若a,b之一為真,則a||b為真。
  • !a 若a為真,則!a為假。

在一個邏輯表達式中如果包含多個邏輯運算符,按以下的優(yōu)先次序:
(1) !(非)→ &&(與)→ ?(或),即“!”為三者中最高的。
(2) 邏輯運算符中的“&&”和“||”低于關系運算符,“!”高于算術運算符。

例如:

  • (a>b) && (x>y)  可寫成 a>b && x>y
  • (a==b) || (x==y)  可寫成 a==b || x==y
  • (!a) || (a>b)可寫成 !a || a>b

將兩個關系表達式用邏輯運算符連接起來就成為一個邏輯表達式,上面幾個式子就是邏輯表達式。邏輯表達式的一般形式可以表示為

  表達式 邏輯運算符 表達式

邏輯表達式的值是一個邏輯量“真”或“假”。前面已說明,在給出邏輯運算結果時,以數(shù)值1代表“真”,以0代表“假”,但在判斷一個邏輯量是否為“真”時,采取的標準是: 如果其值是0就認為是“假”,如果其值是非0就認為是“真”。例如:
(1) 若a=4,則!a的值為0。因為a的值為非0,被認作“真”,對它進行“非”運算,得“假”,“假”以0代表。
(2) 若a=4,b=5,則a && b的值為1。因為a和b均為非0,被認為是“真” 。
(3) a,b值同前,a-b||a+b的值為1。因為a-b和a+b的值都為非零值。
(4) a,b值同前,!a || b的值為1。
(5) 4 && 0 || 2 的值為1。

在C++中,整型數(shù)據(jù)可以出現(xiàn)在邏輯表達式中,在進行邏輯運算時,根據(jù)整型數(shù)據(jù)的值是0或非0,把它作為邏輯量假或真,然后參加邏輯運算。

通過這幾個例子可以看出: 邏輯運算結果不是0就是1,不可能是其他數(shù)值。而在邏輯表達式中作為參加邏輯運算的運算對象可以是0(“假”)或任何非0的數(shù)值(按“真”對待)。如果在一個表達式中的不同位置上出現(xiàn)數(shù)值,應區(qū)分哪些是作為數(shù)值運算或關系運算的對象,哪些作為邏輯運算的對象。

實際上,邏輯運算符兩側的表達式不但可以是關系表達式或整數(shù)(0和非0),也可以是任何類型的數(shù)據(jù),如字符型?浮點型或指針型等。系統(tǒng)最終以0和非0來判定它們屬于“真”或“假”。例如'c ' &&  'd'的值為1。

熟練掌握C++的關系運算符和邏輯運算符后,可以巧妙地用一個邏輯表達式來表示一個復雜的條件。例如,要判別某一年(year)是否為閏年。閏年的條件是符合下面兩者之一: ①能被4整除,但不能被100整除。②能被100整除,又能被400整除。例如2004? 2000年是閏年,2005? 2100年不是閏年。

可以用一個邏輯表達式來表示:

(year % 4 == 0 && year % 100 != 0) || year % 400 == 0

當給定year為某一整數(shù)值時,如果上述表達式值為真(1),則year為閏年;否則year為非閏年??梢约右粋€“!”用來判別非閏年:

!((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

若表達式值為真(1),year為非閏年。也可以用下面的邏輯表達式判別非閏年:

(year % 4 != 0) || (year % 100 == 0 && year % 400 !=0)

若表達式值為真,year為非閏年。請注意表達式中右面的括號內的不同運算符(%,!,&&,==)的運算優(yōu)先次序。

相關文章

最新評論