




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第
2
章C++語言基礎【學習目標】
要開發VisualC++應用程序,就必須熟練掌握C++語言,C++語言是程序員開發基于VisualC++應用程序的基礎。C++是一種混合型程序設計語言,既不像Basic那樣是面向過程的程序設計,也不像Java那樣是面向對象的程序設計,而是將兩者統一既面向對象又支持面向過程的程序設計語言。本章簡要地介紹C++語言基礎知識,對于C++的基本要素和編寫規范進行了簡單的介紹,并逐步地講解C++語言的數據類型、運算符、表達式等基礎,通過學習本章,讀者可以達到以下學習目的:l
了解控制臺開發環境l
掌握標識符、關鍵字等基本要素l
掌握C++語言的數據類型l
熟悉C++語言的運算符應用l
熟悉C++語言的表達式l
掌握條件判斷語句和循環語句l
編寫自定義函數
課件制作人:宋坤【學習導航】
本章主要為讀者介紹了C++語言的基礎知識,包括C++的基本要素、數據類型、運算符、表達式、語句和函數等。對于C++的初學者來說,這些內容均需要熟練掌握,它是初學者學習C++編程的第一個步驟,也是構建“高樓大廈”的“地基”部分,基礎的熟練程度將直接影響編程的質量和效率。希望大家能夠熟練掌握本章內容。本章在書中的學習位置如圖2-1所示。
課件制作人:宋坤【知識框架】
本章學習內容知識框架如圖2-2所示。課件制作人:宋坤√本章目錄2.1C++概述2.2程序設計基礎2.3課后習題√√課件制作人:宋坤2.1
C++概述C++語言誕生于20世紀80年代初,它是在C語言的基礎上提供了面向對象功能的語言,可以說C++語言是C語言的擴展。C++語言集面向對象和面向過程于一身,因此它即適合于傳統的面向過程程序開發,也適用于面向對象程序開發。由于本章中的程序代碼均在控制臺下編寫的,為了讓讀者能夠熟悉VisualC++下控制臺應用程序的開發過車工,下面本教材利用VisualC++編寫一個簡單的控制臺應用程序。
(1)啟動VisualC++,單擊“File/New”菜單項,打開新建窗口,如圖2-1所示。
課件制作人:宋坤2.1
C++概述
(2)在“Projects”選項卡中選擇“Win32ConsoleApplication”選項,在“Projectname”編輯框中輸入工程名稱,本例為“FirstProject”,單擊“OK”按鈕進入向導窗口,開始創建工程,如圖2-2所示。
(3)向向導窗口中選擇“AHello,WordApplication”選項,單擊“Finish”按鈕完成工程的創建。這樣就完成了一個控制臺工程的創建。在工具欄中單擊按鈕編譯并執行應用程序,效果如圖2-3所示。
課件制作人:宋坤2.1
C++概述課件制作人:宋坤2.2
程序設計基礎C++基本要素數據類型運算符表達式語句函數√√√√√√課件制作人:宋坤C++基本要素
程序設計語言的基本要素包括標識符、關鍵字、常量和變量等。本節本教材將介紹C++語言的基本要素。如果讀者熟悉C語言,可以掠過本節。
標識符
標識符是程序員或系統定義的符號,用來表示變量、類型或函數。在C++語言中,標識符可以由字母、數字和下劃線組成,并且標識符的第一個字符只能是英文字母或下劃線,標識符的命名必須遵循命名規范。下面來列舉一些合法的標識符和一些不合法的標識符。 合法的標識符:age,name,_ab,DAY_23,A123…
不合法的標識符:T-3,123d,#as…定義標識符時應注意字母的大小寫,例如,intnumber和intNumber在C++中就是兩個不同的標識符。定義標識符時還應該盡量選擇能夠反映其用途的單詞或縮寫,這樣可以提高程序的可讀性。例如,在為年齡的整型變量命名時,可以命名為age,要比命名為nl、a可讀性高。
關鍵字
關鍵字是C++編譯器內置的有特殊意義的標識符,用戶不能定義與關鍵字相同的標識符。C++語言關鍵字如表2-1所示。
課件制作人:宋坤C++基本要素__asmelsemainstruct__assumeenum__multiple_inheritanceswitchauto__except__single_inheritancetemplate__basedexplicit__virtual_inheritancethisboolexternmutablethreadbreakfalsenakedthrowcase__fastcallnamespacetruecatch__finallynewtry__cdeclfloatnoreturn__trycharforoperatortypedefclassfriendprivatetypeidconstgotoprotectedtypenameconst_castifpublicunioncontinueinlineregisterunsigned__declspec__inlinereinterpret_castusingdeclaration,usingdirectivedefaultintreturnuuiddelete__int8short__uuidofdllexport__int16signedvirtualdllimport__int32sizeofvoiddo__int64staticvolatiledouble__leavestatic_castwmaindynamic_castlong__stdcallwhile課件制作人:宋坤C++基本要素
常量
在程序運行過程中,值不能被改變的量稱為常量。常量定義形式如下:const類型常量=值表達式;此外,C++中可以使用C語言中的#define預處理命令來定義常量:#define常量名值例如:定義常量的表達式為“constintI=100;”,表示當程序運行時,編譯器會對I進行嚴格檢查,只有I為int時才被替換為100;如果定義常量的表達式為“#defineI100”,表示程序運行時,代碼中所有的常量I都會被100替換。l
整型常量整型常量可以用十進制、八進制和十六進制數來表示。十進制整型常量由0~9的數字組成。不能以0開始,沒有小數部分。例如,123、-321等。八進制整型常量以0開始,由0~7的數字組成。例如,0123、0765等。十六進制整型常量以0x開始,由0~9的數字和A~F(大小寫相同)的字母組成。例如,0x123、0xab、0x12ab等。l
實型(浮點)常量實型常量的整數部分和小數部分被小數點分開。當實型常量太大或太小時,可以使用科學記數法來表示。例如:fData=123.456;fData=1.23456e+2;課件制作人:宋坤C++基本要素整型常量和實型常量的后面可以指定后綴,后綴不區分大小寫。例如:lData=23L; //指定為長整型nData=426u; //指定為無符號型fData=1.23456f; //指定為單精度實型l
字符型常量在C++中,字符型常量是用單引號括起來的一個字符。這些字符通常是ASCII碼字符,它們的值即該字符的ASSCII碼值。例如:C='A';//C為字符A的ASCII碼值在C++語言中還提供了一種轉義序列,它可以表示ASCII碼表中的不可顯示字符。轉義序列如表2-2所示。轉義序列ASCII值說明\’39單引號\”34雙引號\?63問號\\92反斜線\a7響鈴\b8退格\f12走紙接頁\n10換行\h13回車\t9水平制表\v11垂直制表課件制作人:宋坤C++基本要素在許多程序中,有時會遇到某一個字符或字符串前有一個“L”前綴,例如:L’a’L”OneWorldOneDream”這里的L表示的是字符或字符串為寬字符或寬字符串。寬字符常量用于支持某些語言的字符集合,例如,漢語。漢語中的漢字不能通過一個字符來表示(通常,兩個字符表示一個漢字)。變量在程序運行過程中,其值可以發生變化的量稱為變量。變量有一個變量名,在內存中占據一定的內存空間,在該內存空間中存放變量的值。在C++中,使用變量之前必須先進行聲明。變量的聲明如下:<數據類型><變量名1>[=<初始值1>],<變量名2>[=<初始值2>],……;例如,聲明一個整型變量:intnum;凡是未事先聲明的變量不能使用,當變量被聲明為一個確定的類型時,在編譯時系統自動為其分配相應的內存空間。在給變量賦值時,可以先聲明后賦值,例如:intnNum;nNum=15;也可以在聲明的同時為變量賦值:intnNum=15;課件制作人:宋坤數據類型數據是程序加工的對象,C++中將數據分為不同的數據類型。數據類型規定了數據的存儲結構和可以進行的運算。C++簡單數據類型介紹在C++語言中,簡單數據類型包括整型、實型和字符型等,實型又分為單精度實型和雙精度實型。C++中所有的數據類型如表2-3所示。數據類型說明所占字節取值范圍char字符型1-128~127int整型4-2147483648~147483647float單精度實型41.2e-38~3.4e38double雙精度實型82.2e-308~1.8e308void無值型0無取值范圍signedchar有符號字符型1-128~127unsignedchar無符號字符型10~255short[int]短整型2-32768~32767signedshort[int]有符號短整型2-32768~32767unsignedshort[int]無符號短整型20~65535signed[int]有符號整型4-2147483648~2147483647unsigned[int]無符號整型40~4294967295long[int]長整型4-2147483648~2147483647signedlong[int]有符號長整型4-2147483648~2147483647unsignedlong[int]無符號長整型40~4294967295課件制作人:宋坤數據類型
布爾類型在邏輯判斷中,結果通常只有真和假兩個值。C++語言中提供了布爾類型bool來描述真和假。bool類型共有兩個取值,分別為true和false。顧名思義,true表示真,false表示假。在程序中,bool類型被作為整數類型對待,false表示0,true表示1。將bool類型賦值給整型是合法的,反之,將整數賦值給bool類型也是合法的。例如:boolret;intvar=3;ret=var; //ret=truevar=ret; //var=1字符串類型字符串類型的數據是由雙引號括起來的字符序列。不要把字符和字符串混淆,‘a’是字符,“a”是字符串,二者不同。字符串在存儲時會自動在字符串結尾加一個字符串結束標志“\0”,以便系統判斷字符串是否結束。字符串結束標志“\0”的ASCII碼為0,是一個不可顯示的字符。如有一個字符串“Hello”,它所占的字節就是6個,最后一個字節存放的是“\0”。當字符串輸出時,字符一個一個地輸出,直到“\0”結束。
l
字符串基本操作下面通過一個實例來介紹字符串類型。例如:字符串的輸入輸出,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序,如圖2-4所示。課件制作人:宋坤數據類型(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"iostream.h"intmain(){charstr[10]; //定義一個字符數組
cout<<"輸入少于9個字符"<<'\n'; //輸出文本
cout<<"str=";cin>>str; //記錄用于輸入的數據
cout<<"直接輸出字符串"<<'\n';cout<<str<<'\n';cout<<"通過數組元素輸出字符串"<<'\n';for(inti=0;i<10;i++) //遍歷字符數組{
cout<<str[i];}}課件制作人:宋坤數據類型運行結果如圖2-5所示。
l
字符串函數應用除了可以對字符串進行輸入和輸出以外,還可以對字符串進行復制、銜接、計算字符串長度和比較等處理。在C++語言中,可以使用C++編譯器附帶的字符串處理函數庫<cstring>來處理字符串。字符串處理函數如表2-4所示。課件制作人:宋坤數據類型下面通過一個實例使用字符串處理函數求字符串的長度,并對字符串進行銜接。例如:字符串的輸入輸出,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:函數名功能描述strlen(字符串)計算字符串長度strcpy(字符串1,字符串2)將字符串2復制到字符串1內strcat(字符串1,字符串2)將字符串2銜接到字符串1后strcmp(字符串1,字符串2)比較兩個字符串,當字符串1<字符串2時返回負整數,當字符串1==字符串2時返回0,當字符串1>字符串2時返回正整數strchr(字符串,字符)查找字符串中第一個與指定字符相同的字符的索引課件制作人:宋坤數據類型#include"iostream.h"#include"cstring"intmain(){charstr1[20],str2[10]; //定義字符數組
cout<<"輸入少于9個字符"<<'\n'; //輸出一行文本
cout<<"str1=";cin>>str1;cout<<"輸入少于9個字符"<<'\n';cout<<"str2=";cin>>str2;cout<<"輸出字符串"<<"\n";cout<<"str1="<<str1<<"\n";cout<<"str2="<<str2<<"\n";cout<<"計算str1的長度"<<"\n";cout<<"長度="<<strlen(str1)<<"\n"; //輸出字符串長度
cout<<"把字符串str2銜接到字符串str1后面"<<"\n";cout<<strcat(str1,str2)<<"\n"; //連接字符串}運行結果如圖2-6所示。課件制作人:宋坤數據類型數組類型數組是由一組具有相同類型數據所組成的有序集合。數組中每個數據都稱為數組元素。聲明數組可以通過數據類型、數組名和下標的方式進行。下標是用“[]”括起來的,表示數組中數組元素的數目。數組還根據下標分為一維數組、二維數組和多維數組。 l
一維數組只有一個下標的數組稱為一維數組。一維數組的聲明格式如下:數據類型數組名[常量表達式];例如,聲明一個一維數組,代碼如下:intarray[10];上行代碼聲明了一個數組,數組名是array,數組類型是int型,下標為10,說明該數組由10個int型的元素組成。當編譯器編譯到這個聲明時,會自動根據數組類型分配出相應的存儲空間來存放這些數組元素。課件制作人:宋坤數據類型也可以在數組聲明的同時給數組賦初值,代碼如下:intarray[10]={1,2,3,4};上行代碼在聲明一個數組的同時為數組中前4個元素賦初值,而數組后6個元素并沒有被賦值,系統會把它們的值默認為0。也就是說,如果輸出array[5]的值,結果是0。在使用一維數組時應注意:
數組命名時要遵循標識符命名規則。
數組名后是用方括號括起來的常量表達式。
常量表達式表示數組的長度,即數組元素的個數。
常量表達式中可以包括整型常量和整型表達式,但是不能是變量。C++不允許對數組的大小作動態定義。在為數組賦值時,也可以通過數組元素進行賦值。代碼如下:intarray[10];array[0]=1;array[1]=2;array[2]=3;array[3]=4;這段代碼和上段代碼作用相同,都是為數組中前4個元素賦值。 l
二維數組二維數組的聲明和一維數組相同,一般形式如下:數據類型數組名[常量表達式1][常量表達式2];例如,聲明一個二維數組,代碼如下:intarray[10][5];課件制作人:宋坤數據類型其中,“常量表達式1”被稱為行下標,“常量表達式2”被稱為列下標。如果有二維數組a[n][m],則二維數組的下標取值范圍如下: 行下標的取值范圍0~n-1。
列下標的取值范圍0~m-1。
二維數組的最大下標元素是a[n-1][m-1]。 l
多維數組多維數組的聲明和二維數組相同,只是下標更多,一般形式如下:數據類型數組名[常量表達式1][常量表達式2]…[常量表達式n];例如,多維數組的聲明如下:inta[3][4][5];intb[4][5][7][8];上述兩條代碼分別定義了一個三維數組和一個四維數組。由于數組元素的位置都可以通過偏移量計算,所以對于三維數組a[m][n][p]來說,元素a[i][j][k]所在的地址是從a[0][0][0]算起到(i*n*p+j*p+k)個單位的地方。 l
數組的基本操作數組是有序的數據集合,數組中的每一個元素都具有相同的數據類型。在程序中使用數組的最大好處是用一個數組名代表邏輯上相關的一批數據,用下標表示該數組中的各個元素,并且和循環語句結合使用,使得程序書寫簡潔,操作方便,編寫出來的程序出錯率低,可讀性強。下面通過一個實例來介紹數組的操作。例如:從鍵盤為二維數組元素賦值,顯示二維數組,求出二維數組中最大元素和最小元素的值及其下標,將二維數組轉制成為另一個二維數組,并顯示。具體操作步驟如下。課件制作人:宋坤數據類型(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"iostream.h"intmain(){inta[2][3],max,min,h,l,b[3][2],i,j;//從鍵盤為數組元素賦值
for(i=0;i<2;i++){for(j=0;j<3;j++){cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];}}cout<<"輸出二維數組a"<<"\n";for(i=0;i<2;i++){for(j=0;j<3;j++){cout<<a[i][j]<<"\t";}//使元素分行顯示
cout<<"\n";}//求數組中最大元素及其下標
max=a[0][0];h=0;l=0;課件制作人:宋坤數據類型
for(i=0;i<2;i++){for(j=0;j<3;j++){if(min>a[i][j]){min=a[i][j];h=i;l=j;}}}cout<<"數組中最小元素是:"<<"\n";cout<<"min:"<<"a["<<h<<"]["<<l<<"]="<<min<<"\n";
for(i=0;i<2;i++)//將數組a轉制后存入數組b中{for(j=0;j<3;j++){b[j][i]=a[i][j];}}cout<<"輸出二維數組b"<<"\n";for(i=0;i<3;i++){for(j=0;j<2;j++){cout<<b[i][j]<<"\t";}
cout<<"\n"; //使元素分行顯示}}課件制作人:宋坤數據類型
運行結果如圖2-7所示。
枚舉類型枚舉類型是構造類型,它由程序員定義,是一種允許用符號代表數據的數據類型。在定義枚舉類型的同時指定一組被命名的常量集合,該集合決定了該枚舉類型的變量可以具有的合法值。課件制作人:宋坤數據類型
枚舉的聲明如下:enum<枚舉類型名>{<常量1>,<常量2>,…,<常量n>};例如,聲明一個枚舉類型,代碼如下:enumweek{sun,mon,tue,wed,thu,fri,sat};聲明類型以后就可以聲明和使用變量了,如聲明一個week類型的變量為work,并為work賦值,代碼如下:enumweekwork;work=fri;在C++中,對枚舉常量按常量處理,作為常量本身是有值的,按照定義時的順序使值不斷遞增,即第一個常量的值是0,第二個常量的值是1,依此類推,第n個常量是n-1。當枚舉類型的某個常量被指定值以后,該常量后面的常量值則根據指定的值不斷遞增。下面通過一個實例來介紹枚舉類型。
課件制作人:宋坤數據類型
例如:聲明一個枚舉類型,設置枚舉常量的值并輸出枚舉常量,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"stdafx.h"#include"iostream.h"intmain(){enumweek{sunday,monday=3,tuesday,wednesday,thursday=9,friday,saturday};cout<<sunday<<'\n';cout<<monday<<'\n';cout<<tuesday<<'\n';cout<<wednesday<<'\n';cout<<thursday<<'\n';cout<<friday<<'\n';cout<<saturday<<'\n';}運行結果如圖2-8所示。課件制作人:宋坤數據類型結構體類型結構是一種復合的數據類型,它可以將不同類型的數據組成一個整體,以便于使用。使用struct關鍵字可以聲明自己需要的數據類型。其中成員可以擁有各種不同的數據類型。結構體的聲明如下:structemployees{charid[5];charname[20];charsex[2];};課件制作人:宋坤數據類型例如:聲明一個結構體類型,并對結構體變量進行賦值、輸入和輸出,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"iostream.h"structemployees{intid;charname[20];charsex[2];};intmain(){employeesemp1,emp2;cout<<"輸入emp1數據:"<<"\n";
cout<<"id:";cin>>emp1.id;cout<<"name:";cin>>;cout<<"sex:";cin>>emp1.sex;cout<<"輸入emp2數據:"<<"\n";cout<<"id:";cin>>emp2.id;cout<<"name:";cin>>;cout<<"sex:";cin>>emp2.sex;cout<<"輸出emp1:"<<"\n";cout<<"id="<<emp1.id<<"\n";cout<<"name="<<<<"\n";cout<<"sex="<<emp1.sex<<"\n";cout<<"輸出emp2:"<<"\n";cout<<"id="<<emp2.id<<"\n";cout<<"name="<<<<"\n";cout<<"sex="<<emp2.sex<<"\n";}課件制作人:宋坤數據類型運行結果如圖2-9所示。
指針類型指針是一種特別的數據類型,用來存儲數據在內存中的地址。計算機內存被劃分為按順序編號的內存單元,任何變量在內存中都有單獨的內存單元,即它在內存中的地址。例如,先聲明一個變量,然后用指針指向變量,代碼如下:課件制作人:宋坤數據類型intnum;int*pnum;pnum=#在程序運行中,“*”是取值運算符,聲明變量是一個指針變量,其運算結果是指針指向的變量;“&”是取址運算符,表示取出變量的地址。“*”和“&”互為逆運算。下面通過一個實例來介紹指針類型。例如:先聲明一個變量,然后用指針指向該變量,然后通過指針進行輸出,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:課件制作人:宋坤數據類型#include"iostream.h"intmain(){intnum;int*pnum;pnum=#cout<<"輸入一個數"<<"\n";cin>>num;cout<<"指針pnum的值:"<<"\n";cout<<pnum<<"\n";cout<<"地址"<<pnum<<"中的值是:"<<"\n";cout<<*pnum<<"\n";}運行結果如圖2-10所示。
課件制作人:宋坤數據類型引用類型引用是C++的一種新的變量類型,是對C語言的重要擴充。它的作用是為變量起一個別名。當聲明一個引用時,應該把它初始化為另一個對象名,即目標變量。從這時起,引用就成為目標的替代名,所有對引用的操作都相當于對目標變量的操作。下面通過一個實例來說明別名和變量的關系。例如:使用變量的別名對變量進行增減,具體操作如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:
課件制作人:宋坤數據類型#include"iostream.h"intmain(){intx=1;int&y=x;cout<<x<<"\n";cout<<y<<"\n";x++;cout<<x<<"\n";cout<<y<<"\n";y++;cout<<x<<"\n";cout<<y<<"\n";}運行結果如圖2-11所示。
課件制作人:宋坤數據類型通過實例可以看出,變量x的值改變后,別名y的值也相應的改變了;同樣,別名y的值改變后,變量x的值也改變了。C++語言中增加引用,主要是用它作為函數的參數,使無返回值的函數具有傳遞數據的功能。
課件制作人:宋坤運算符運算符是連接數據的紐帶,在程序設計語言中,運算符起著不可或缺的作用。C++語言中,基本的運算符可分為賦值運算符、算術運算符、邏輯運算符、關系運算符和位移運算符。如果運算符只需要一個變量就可以完成運算,稱為單目運算符;如果運算符需要兩個變量才能完成運算,稱為雙目運算符;如果運算符需要3個變量才能完成運算,則稱為三目運算符。賦值運算符賦值運算符“=”用來更新變量的值,賦值運算符和其他運算符組合起來可以簡化語句的書寫,被稱為復合賦值運算符。C++中賦值運算符如表2-5所示。
課件制作人:宋坤運算符
算術運算符C++中的算術運算符與平時使用的“加減乘除”四則運算基本相同,只在兩個整數相除時稍有不同,在C++中,兩個整數相除的結果仍然是整數,如5/2的結果是2。C++中的算術運算符如表2-6所示。
運算符名稱=賦值運算符-=減賦值運算符+=加賦值運算符*=乘賦值運算符/=除賦值運算符%=求余賦值運算符<<=左位移賦值運算符>>=右位移賦值運算符&=按位與賦值運算符|=按位或賦值運算符^=按位異或賦值運算符課件制作人:宋坤運算符
下面根據算數運算符設計一個簡單計算器,程序設計步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:
運算符優先級名稱++2自增運算符--2自減運算符-2負運算符*4乘運算符/4除運算符%4求模運算符+5加運算符-5減運算符課件制作人:宋坤運算符
#include"stdafx.h"#include"iostream.h"intmain(){doublenum1,num2,result;charop;intbo;cout<<"輸入一個數:"<<'\n';cin>>num1;cout<<"輸入一個+、-、*、/中的一個符號:"<<'\n';cin>>op;cout<<"輸入一個數:"<<'\n';cin>>num2;switch(op){case'+':result=num1+num2;break;case'-':result=num1-num2;break;case'*':result=num1*num2;break;case'/':if(num2==0)bo=1;elseresult=num1/num2;break;}if(1)cout<<"除數不能為0"<<'\n';elsecout<<num1<<op<<num2<<"的結果為:"<<result<<'\n';}課件制作人:宋坤運算符運行結果如圖2-12所示。
關系運算符用于進行兩個數的比較,和邏輯運算符一樣,常被作為條件表達式使用。當a=3,b=5時,關系運算符如表2-7所示。運算符名稱描述>大于a>b,值為FALSE,b>a,值為TRUE<小于a<b,值為TRUE,b<a,值為FALSE==等于a==b,值為FALSE>=大于等于a>=b,值為FALSE;b>=a,值為TRUE<=小于等于a<=b,值為TRUE;b<=a,值為FALSE!=不等于a!=b,值為TRUE課件制作人:宋坤運算符例如:下面根據關系運算符的“>”和“<”對學生成績進行條件判斷,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:
#include"stdafx.h"#include"iostream.h"intmain(){intgrade;cout<<"請輸入學生成績:"<<"\n";cin>>grade;if(grade<450)//判斷學生成績是否小于450{
cout<<"沒有進入大專分數線\n";}elseif(grade>550)//判斷學生成績是否大于550{
cout<<"進入本科分數線\n";}else{cout<<"進入大專分數線\n";}
}課件制作人:宋坤運算符運行結果如圖2-13所示。邏輯運算符邏輯運算符用于執行邏輯運算,常被作為條件表達式使用。邏輯運算符如表2-8所示。運算符名稱描述&&邏輯與運算符兩邊都為TRUE時,結果為TRUE,否則為FALSE||邏輯或運算符兩邊都為FALSE時,結果為FALSE,否則為TRUE!邏輯非運算數為TRUE時,結果為FALSE,反之為TRUE課件制作人:宋坤運算符例如:下面根據邏輯運算符判斷2008年是否為閏年,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"stdafx.h"#include"iostream.h"intmain(){intyear;cout<<"輸入一個年份:"<<"\n";cout<<"year=";cin>>year;
inta,b,c;a=((int)(year/4))*4==year;//判斷年份能否被4整除
b=((int)(year/100))*100==year;//判斷年份能否被100整除
c=((int)(year/400))*400==year;//判斷年份能否被400整除
if(a&&(!b)||b&&c)//判斷是否為閏年{
cout<<year<<"年是閏年\n";}else{cout<<year<<"年不是閏年\n";}
}運行結果如圖2-14所示。
課件制作人:宋坤運算符逗號運算符逗號運算符是一種特殊的運算符,可以將兩個表達式連接起來稱為逗號表達式。格式如下:表達式1,表達式2,…,表達式n逗號表達式的求值過程是先求表達式1的值,再求表達式2的值,依次向后求值,整個逗號表達式的值是最右邊的表達式的值。課件制作人:宋坤運算符例如:inta;a=(1+2,5*2,4+5,8+5);輸出結果a=13。條件運算符條件運算符是惟一的三目運算符,即它是惟一一個需要3個操作數的運算符。條件運算符對3個表達式進行計算并返回一個值,其條件表達式格式如下:表達式1?表達式2:表達式3;條件運算符執行順序是先求表達式1的值,值為TRUE時執行表達式2,表達式2的值就是條件表達式的值;若表達式1的值為FALSE,則執行表達式3,表達式3的值就是條件表達式的值。可以用條件表達式進行賦值,例如:inta=5,b=7,min;min=(a<b)?a:b;代碼中“min”的值為5。
課件制作人:宋坤表達式表達式是由常量、變量、運算符和數據組成的,是程序設計語言為了獲得值而產生的。表達式位于賦值語句的右邊,它的返回值可以被程序利用。x=y+zx=y+=(m+n)上面是兩個簡單的表達式,兩個表達式的含義如下。 第1行代碼是將y+z的值賦給x。
第2行代碼是先計算m+n的和,將取得的值和y相加后賦給y,再把y的值賦給x。表達式的返回值也有類型之分,其類型取決于表達式包含的變量和常量的類型。表達式可以根據其所包含的運算符分為以下8種類型。 算術表達式:根據類型可分為兩種。 整型表達式:表達式中的數據是整型,結果也是整型。 實型表達式:表達式中的數據是實型,運算過程中先轉換成double 型,結果也是double型。 邏輯表達式:用邏輯運算符連接整型數據,結果是0或1。 位表達式:用位運算符連接整型數據,結果是整型。 強制類型轉換表達式:用“(類型)”運算符使表達式的類型強制轉換。 逗號表達式:順序求出表達式的值,結果是最右邊的表達式的值。 賦值表達式:將“=”右邊表達式的值賦給左邊的變量,結果為賦值后的變量值。 條件表達式:根據前面表達式的值判斷執行后面兩個表達式中的哪一個。指針表達式:對指針類型的數據進行運算,結果是指針類型。課件制作人:宋坤語句程序都是由一條條的語句構成的,語句分為簡單語句和復合語句。簡單語句是由表達式和分號組成的。即使分號之前沒有任何其他的符號或數據,它也是簡單語句,這時該語句被稱為空語句。復合語句是以“{”開始,以“}”結束的語句,也稱為語句塊。在C++中,復合語句和單一語句在語法上占有同等的地位,即可以把復合語句看成一條語句。復合語句內的每條語句都必須以分號結尾,但復合語句本身不用。例如下段代碼就是復合語句,功能是交換x、y兩個變量的值,代碼如下:{
t=x;x=y;y=t;}在復合語句內,不但可以包含執行語句,還可以包含聲明語句,但是在復合語句內聲明的變量在復合語句外不能使用。當復合語句外的變量和內部的變量重名時,內部的變量在復合語句中有效。順序語句順序結構程序設計就是按自上而下的順序編寫程序,代碼中沒有結構控制語句,代碼自上而下一條一條的執行。執行流程如圖2-15所示。
課件制作人:宋坤語句下面通過一個例子對順序語句進行介紹。例如:使用順序結構交換變量的值,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"stdafx.h"#include"iostream.h"
intmain(){intx=1,y=2,t;cout<<"x="<<x<<"\n";cout<<"y="<<y<<"\n";t=x;x=y;y=t;cout<<"x="<<x<<"\n";cout<<"y="<<y<<"\n";}運行結果如圖2-16所示。
課件制作人:宋坤語句分支語句分支語句就是選擇結構程序設計語句,選擇結構程序設計是根據特定的條件判斷來執行特定的代碼。在C++語言中,選擇條件語句包括if語句和switch語句。l
if判斷語句if語句用來判斷條件語句是否成立,根據判斷的結果決定執行哪一條語句。if語句流程如圖2-17所示。課件制作人:宋坤語句if語句包括4種形式。第1種形式if(<表達式>){<語句塊>}當<表達式>的值為TRUE時,執行<語句塊>。第2種形式if(<表達式>){<語句塊1>}else{<語句塊2>}當<表達式>的值為TRUE時,執行<語句塊1>;當<表達式>的值為FALSE時,執行<語句塊2>。課件制作人:宋坤語句第3種形式if(<表達式1>){<語句塊1>}elseif(<表達式2>){<語句塊2>}elseif(<表達式3>){<語句塊3>}...elseif(<表達式n>){<語句塊n>}else{<語句塊n+1>}第3種形式是多分支if語句,如果<表達式>的值為TRUE,就執行if語句后的<語句塊>,否則執行else后的<語句塊>,兩個<語句塊>不會同時執行。多分支if語句的執行流程如圖2-18所示,多分支if語句的N-S流程圖如圖2-19所示。
課件制作人:宋坤語句課件制作人:宋坤語句下面通過一個例子對多分支if語句的使用進行介紹。例如:將學生分數的100制度改為A、B、C、D、E等級制度,輸入分數后使用多分支if語句判斷分數等級,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"stdafx.h"#include"iostream.h"
intmain(){intnum;cout<<"輸入學生分數:"<<"\n";cout<<"num=";cin>>num;if(num<0||num>100){cout<<"輸入的分數不正確"<<"\n";}elseif(num>=90){cout<<"該學生的分數等級為A"<<"\n";}elseif(num>=80){cout<<"該學生的分數等級為B"<<"\n";}elseif(num>=70){cout<<"該學生的分數等級為C"<<"\n";}elseif(num>=60){cout<<"該學生的分數等級為D"<<"\n";}else{cout<<"該學生的分數等級為E"<<"\n";}}
課件制作人:宋坤語句運行結果如圖2-20所示。
第4種形式if(<表達式1>){
if(<表達式2>){<語句塊1>}
else{<語句塊2>}}else{if(<表達式3>){<語句塊3>}
else{<語句塊4>}}課件制作人:宋坤語句第4種形式其實就是if語句的嵌套,用來進行多條件的判斷。下面通過一個例子對if語句的嵌套使用進行介紹。例如:使用if語句判斷是否為閏年,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"stdafx.h"#include"iostream.h"
intmain(){intyear;cout<<"輸入一個年份:"<<"\n";cout<<"year=";cin>>year;if(year%4==0){if(year%100!=0){cout<<year<<"年是閏年"<<"\n";}elseif(year%400==0){cout<<year<<"年是閏年"<<"\n";}else{cout<<year<<"年不是閏年"<<"\n";}}else{cout<<year<<"年不是閏年"<<"\n";}}課件制作人:宋坤語句運行結果如圖2-21所示。
l
switch語句雖然使用if語句可以處理多選擇問題,但是,如果嵌套過多,大量的if…else語句會令人頭暈目眩,此時可以使用switch語句。switch語句用于實現多分支結構,完整的switch語句包括switch、case、default、break4個關鍵字。switch語句流程如圖2-22所示。課件制作人:宋坤語句switch語句的一般形式如下:switch(<表達式>){
case<常量表達式1>:<語句塊1>
break;case<常量表達式2>:<語句塊2>
break;...case<常量表達式n>:<語句塊n>break;default:<語句塊n>}執行switch語句時,會將<表達式>的值和<常量表達式>的值進行比較,當某個case語句中<常量表達式>的值與<表達式>的值相等時,就執行該case語句后的<語句塊>。當遇到break語句時,退出switch語句。如果所有case語句中<常量表達式>的值都不等于<表達式>的值,則執行default語句后的<語句塊>。其中,default語句是一個可選項,可以選擇不使用。例如:下面使用switch語句來判斷某月份所在的季節,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:
課件制作人:宋坤語句#include"stdafx.h"#include"iostream.h"
intmain(){intmonth;cout<<"輸入一個月份:"<<"\n";cout<<"month=";cin>>month;switch(month){case1:cout<<month<<"月是冬季"<<"\n";break;case2:cout<<month<<"月是春季"<<"\n";break;case3:cout<<month<<"月是春季"<<"\n";break;case4:cout<<month<<"月是春季"<<"\n";break;case5:cout<<month<<"月是夏季"<<"\n";break;case6:cout<<month<<"月是夏季"<<"\n";break;case7:cout<<month<<"月是夏季"<<"\n";break;case8:cout<<month<<"月是秋季"<<"\n";break;課件制作人:宋坤語句case9:cout<<month<<"月是秋季"<<"\n";break;case10:cout<<month<<"月是秋季"<<"\n";break;case11:cout<<month<<"月是冬季"<<"\n";break;case12:cout<<month<<"月是冬季"<<"\n";break;default:cout<<month<<"月不存在"<<"\n";}}運行結果如圖2-23所示。
課件制作人:宋坤語句switch語句還有一個特殊的用法,就是不使用break語句的多路開關形式,一般形式如下。switch(<表達式>){
case<常量表達式1>:<語句塊1>
case<常量表達式2>:<語句塊2>...
case<常量表達式n>:<語句塊n>default:<語句塊n>}不使用break語句,程序在執行時從第一個與常量表達式相等的case語句開始,順序執行后面的每一條語句,直到switch語句結束。例如:下面使用switch語句來查詢某一分數段以及各分數段的人數,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"stdafx.h"#include"iostream.h"
intmain(){intf100=0,f90=0,f80=0,f70=0,f60=0;charnum;課件制作人:宋坤語句
intfen[40]={82,75,95,46,68,61,75,52,93,48,71,72,85,93,82,75,81,75,82,68,69,71};for(inti=0;i<20;i++){if(fen[i]>90)
f100++;elseif(fen[i]>80)
f90++;elseif(fen[i]>70)
f80++;elseif(fen[i]>60)
f70++;else
f60++;}cout<<"請輸入A、B、C、D、E,5種分數等級之一:";
cin>>num;switch(num){case'A':
cout<<"90~100分的有"<<f100<<"人"<<"\n";case'B':
cout<<"80~90分的有"<<f90<<"人"<<"\n";case'C':
cout<<"70~80分的有"<<f80<<"人"<<"\n";case'D':
cout<<"60~70分的有"<<f70<<"人"<<"\n";case'E':
cout<<"60分以下的有"<<f60<<"人"<<"\n";}}運行結果如圖2-24所示。課件制作人:宋坤語句循環語句循環結構程序設計在很大程度上簡化了順序結構程序設計,使程序看起來更加清晰易懂。在C++語言中有3種語句可以實現循環,分別是goto語句、while語句、for語句。下面分別對這3種語句進行介紹。goto循環語句goto語句可以跳離目前的語句,直接到達指定標志設定的語句處。在標志設定的語句后面必須有其他語句,否則是錯誤的。下面通過一個例子對goto語句進行介紹。例如:使用goto語句累加數字求和,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:
課件制作人:宋坤語句#include"stdafx.h"#include"iostream.h"
intmain(){intnum,i=1,sum=0;cout<<"輸入一個數:"<<"\n";cout<<"num=";cin>>num;XUNHUAN://當條件滿足時,執行goto語句直接跳轉到標志后的語句。
if(i<=num){sum+=i;i++;gotoXUNHUAN;}cout<<"從1加到"<<num<<"和是:"<<sum<<"\n";}運行結果如圖2-25所示。
課件制作人:宋坤語句while循環語句在使用while語句時,只要條件表達式為TRUE,while循環就會一直執行,直到條件表達式的值為FALSE時結束。while語句的流程如圖2-26所示。
while語句的一般形式如下:while(<條件表達式>){<循環體>}下面通過一個例子對while語句進行介紹。例如:使用switch語句求出100~200間的全部素數,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:
課件制作人:宋坤語句#include"stdafx.h"#include"iostream.h"#include"cmath"
intmain(){intnum=101,kf,i=2;cout<<"輸出100~200間的全部素數:"<<"\n";while(num<=200){kf=sqrt(num);while(i<=kf){if(num%i==0){break;}i++;}if(i>kf){cout<<num<<"\t";}i=2;num=num+2;}cout<<"\n";}運行結果如圖2-27所示。課件制作人:宋坤語句for循環語句for語句是最常用的循環語句,它是while語句的一種緊湊寫法。for語句流程如圖2-28所示。
課件制作人:宋坤語句for語句的一般形式如下:for(<表達式1>;<表達式2>;<表達式3>){<循環體>}其中3個表達式的內容分別如下。 <表達式1>:設定for語句內各變量在循環開始前的初始值。 <表達式2>:決定循環是否繼續執行的條件。如果<表達式2>的值為True,繼續循環,否則退出循環。 <表達式3>:每次循環結束前執行的語句,通常是使一個變量的值遞增或遞減,用來改變<表達式2>的值。下面通過一個例子對for語句進行介紹。例如:使用for語句的嵌套輸出九九乘法表,具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:課件制作人:宋坤語句#include"stdafx.h"#include"iostream.h"
intmain(){inti,j;cout<<"輸出乘法九九表:"<<"\n";for(i=1;i<10;i++){for(j=1;j<=i;j++){cout<<j<<"*"<<i<<"="<<i*j<<"\t";}cout<<"\n";}}運行結果如圖2-29所示。課件制作人:宋坤語句流程控制語句在程序中,還會遇到一些特殊的情況,例如,在程序運行中因某種原因需要強制結束或繼續執行相應的語句時,這就需利用break、continue、Exit語句。l
break語句若要在達到某種條件后就終止程序的執行,可以使用break語句,該語句的功能就是跳出結構控制語句。下面通過一個例子對break語句進行介紹。例如:在累加數字求和運算中,當輸入0時,則通過break語句跳出循環。具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代碼如下:#include"stdafx.h"#include"iostream.h"intmain(){intnum,sum=0;cout<<"輸入要累加的數:"<<"\n";while(1){
cin>>num;
sum+=num;
if(num==0)
{break;
}}cout<<"輸入數的和:sum="<<sum<<"\n";}課件制作人:宋坤語句運行結果如圖2-30所示。l
continue語句continue語句的功能是結束本次循環,返回條件判斷部分,重新開始循環,continue語句只能在循環結構中使用。下面通過一個例子對continue語句進行介紹。例如:求0~100間不能被3整除的數,如果該數能被3整除時,則通過continue語句返回條件判斷部分。具體操作步驟如下。(1)啟動VisualC++6.0集成開發環境,創建一個Win32平臺下的控制臺程序。(2)在編輯窗口中,對代碼進行編輯,程序代
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省宜昌市協作體2024-2025學年高一(下)期中考試物理試卷(含解析)
- 四川省樂山市馬邊彝族自治縣2023-2024學年五年級下學期語文期末學情監測試卷(含答案)
- 專業模具設計師的職業前景試題及答案
- 模具設計師資格考試內容重點試題及答案
- 2024年游泳救生員職業能力要求與試題及答案
- 游泳救生員考試中安全意識的重要性及試題及答案
- 有效應對2024年籃球裁判員考試試題及答案
- 深入理解體育經紀人試題及答案
- 農業植保員考試知識脈絡與重點試題及答案
- 2024年游泳救生員考題主題分析及答案
- 電信電源專業應急預案
- 人工智能在智能工廠中的應用
- 上市公司固定資產減值研究 -以美的集團股份有限公司為例
- DB14T+2779-2023營造林工程監理規范
- 運動會運營服務投標方案(技術標 )
- 雷達原理(第6版) 習題及答案匯總 丁鷺飛 ch01-ch09
- 完整版供應商質量審核檢查評分表(供應商審核表)
- 公司接待流程圖
- 常用急救技術-環甲膜穿刺、切開術(急救技術課件)
- 新團員入團儀式PPT模板
- 鐵粒幼細胞貧血教學課件
評論
0/150
提交評論