中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系規(guī)劃教材講授第3章_第1頁(yè)
中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系規(guī)劃教材講授第3章_第2頁(yè)
中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系規(guī)劃教材講授第3章_第3頁(yè)
中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系規(guī)劃教材講授第3章_第4頁(yè)
中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系規(guī)劃教材講授第3章_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第3章章 程序設(shè)計(jì)初步程序設(shè)計(jì)初步第第4章章 函數(shù)與預(yù)處理函數(shù)與預(yù)處理第第5章章 數(shù)組數(shù)組第第6章章 指針指針第第7章章 自定義數(shù)據(jù)類型自定義數(shù)據(jù)類型第第2 2篇篇面向過(guò)程的程序設(shè)計(jì)面向過(guò)程的程序設(shè)計(jì)第第3章章 程序設(shè)計(jì)初步程序設(shè)計(jì)初步3.1 面向過(guò)程的程序設(shè)計(jì)和算法面向過(guò)程的程序設(shè)計(jì)和算法3.2 +程序和語(yǔ)句程序和語(yǔ)句3.3 賦值語(yǔ)句賦值語(yǔ)句3.4 c+的輸入與輸出的輸入與輸出3.5 編寫(xiě)順序結(jié)構(gòu)的程序編寫(xiě)順序結(jié)構(gòu)的程序3.6 關(guān)系運(yùn)算和邏輯運(yùn)算關(guān)系運(yùn)算和邏輯運(yùn)算3.7 選擇結(jié)構(gòu)和語(yǔ)句選擇結(jié)構(gòu)和語(yǔ)句3.8 條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符和條件表達(dá)式3.9 多分支選擇結(jié)構(gòu)和多分支選擇結(jié)構(gòu)和

2、switch語(yǔ)句語(yǔ)句3.10 編寫(xiě)選擇結(jié)構(gòu)的程序編寫(xiě)選擇結(jié)構(gòu)的程序3.11 循環(huán)結(jié)構(gòu)和循環(huán)語(yǔ)句循環(huán)結(jié)構(gòu)和循環(huán)語(yǔ)句3.12 循環(huán)的嵌套循環(huán)的嵌套3.13 break語(yǔ)句和語(yǔ)句和continue語(yǔ)句語(yǔ)句3.14 編寫(xiě)循環(huán)結(jié)構(gòu)的程序編寫(xiě)循環(huán)結(jié)構(gòu)的程序在面向過(guò)程的程序設(shè)計(jì)中,程序設(shè)計(jì)者必須指定計(jì)在面向過(guò)程的程序設(shè)計(jì)中,程序設(shè)計(jì)者必須指定計(jì)算機(jī)執(zhí)行的具體步驟,程序設(shè)計(jì)者不僅要考慮程序算機(jī)執(zhí)行的具體步驟,程序設(shè)計(jì)者不僅要考慮程序要要“做什么做什么”,還要解決,還要解決“怎么做怎么做”的問(wèn)題,根據(jù)的問(wèn)題,根據(jù)程序要程序要“做什么做什么”的要求,寫(xiě)出一個(gè)個(gè)語(yǔ)句,安排的要求,寫(xiě)出一個(gè)個(gè)語(yǔ)句,安排好它們的執(zhí)行順序

3、。怎樣設(shè)計(jì)這些步驟,怎樣保證好它們的執(zhí)行順序。怎樣設(shè)計(jì)這些步驟,怎樣保證它的它的正確性正確性和具有和具有較高的效率較高的效率,這就是算法需要解,這就是算法需要解決的問(wèn)題。決的問(wèn)題。3.1 面向過(guò)程的程序設(shè)計(jì)和算法面向過(guò)程的程序設(shè)計(jì)和算法一個(gè)面向過(guò)程的程序應(yīng)包括以下兩方面內(nèi)容:一個(gè)面向過(guò)程的程序應(yīng)包括以下兩方面內(nèi)容:(1) 對(duì)數(shù)據(jù)的描述。對(duì)數(shù)據(jù)的描述。在程序中要指定在程序中要指定數(shù)據(jù)的類型數(shù)據(jù)的類型和和數(shù)據(jù)的組織形式數(shù)據(jù)的組織形式,即,即數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)(data structure)。(2) 對(duì)操作的描述。對(duì)操作的描述。即操作步驟,也就是即操作步驟,也就是算法算法(algorithm)。對(duì)于面

4、向過(guò)程的程序,可以用下面的公式表示:對(duì)于面向過(guò)程的程序,可以用下面的公式表示: 程序程序=算法算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 作為程序設(shè)計(jì)人員,必須認(rèn)真考慮和設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)作為程序設(shè)計(jì)人員,必須認(rèn)真考慮和設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和操作步驟和操作步驟(即算法即算法)。算法是處理問(wèn)題的一系列的步驟。算法是處理問(wèn)題的一系列的步驟。算法必須具體地算法必須具體地指出在執(zhí)行時(shí)每一步應(yīng)當(dāng)怎樣做。指出在執(zhí)行時(shí)每一步應(yīng)當(dāng)怎樣做。3.1.1 算法的概念算法的概念不要認(rèn)為只有不要認(rèn)為只有“計(jì)算計(jì)算”的問(wèn)題才有算法。的問(wèn)題才有算法。廣義地說(shuō),廣義地說(shuō),為解決一個(gè)問(wèn)題而采取的方法和步驟,就稱為為解決一個(gè)問(wèn)題而采取的方法和步驟,就稱為“算算法

5、法”。計(jì)算機(jī)算法可分為兩大類別:計(jì)算機(jī)算法可分為兩大類別:數(shù)值算法數(shù)值算法和和非數(shù)值算非數(shù)值算法法。數(shù)值算法的目的是求數(shù)值解數(shù)值算法的目的是求數(shù)值解。非數(shù)值算法包括非數(shù)值算法包括的面十分廣泛,最常見(jiàn)的是用于事務(wù)管理領(lǐng)域。的面十分廣泛,最常見(jiàn)的是用于事務(wù)管理領(lǐng)域。目目前,計(jì)算機(jī)在非數(shù)值方面的應(yīng)用遠(yuǎn)遠(yuǎn)超過(guò)了在數(shù)值前,計(jì)算機(jī)在非數(shù)值方面的應(yīng)用遠(yuǎn)遠(yuǎn)超過(guò)了在數(shù)值方面的應(yīng)用。方面的應(yīng)用。c+既支持面向過(guò)程的程序設(shè)計(jì),又支持面向?qū)ο蠹戎С置嫦蜻^(guò)程的程序設(shè)計(jì),又支持面向?qū)ο蟮某绦蛟O(shè)計(jì)。無(wú)論面向過(guò)程的程序設(shè)計(jì)還是面向?qū)Φ某绦蛟O(shè)計(jì)。無(wú)論面向過(guò)程的程序設(shè)計(jì)還是面向?qū)ο蟮某绦蛟O(shè)計(jì),都離不開(kāi)算法設(shè)計(jì)。象的程序設(shè)計(jì),都離

6、不開(kāi)算法設(shè)計(jì)。由第由第1章已知,一個(gè)程序包含一個(gè)或多個(gè)程序單位章已知,一個(gè)程序包含一個(gè)或多個(gè)程序單位(每個(gè)程序單位構(gòu)成一個(gè)程序文件每個(gè)程序單位構(gòu)成一個(gè)程序文件)。每一個(gè)程序單。每一個(gè)程序單位由以下幾個(gè)部分組成:位由以下幾個(gè)部分組成: (1) 預(yù)處理命令預(yù)處理命令。如。如#include命令和命令和#define命令。命令。(2) 聲明部分聲明部分。例如對(duì)數(shù)據(jù)類型和函數(shù)的聲明,以。例如對(duì)數(shù)據(jù)類型和函數(shù)的聲明,以及對(duì)變量的定義。及對(duì)變量的定義。(3) 函數(shù)函數(shù)。包括函數(shù)首部和函數(shù)體,在函數(shù)體中可包括函數(shù)首部和函數(shù)體,在函數(shù)體中可以包含若干聲明語(yǔ)句和執(zhí)行語(yǔ)句以包含若干聲明語(yǔ)句和執(zhí)行語(yǔ)句。如下面是一個(gè)

7、完整的如下面是一個(gè)完整的c+程序:程序:3.2 c+程序和語(yǔ)句程序和語(yǔ)句#include /預(yù)處理命令預(yù)處理命令using namespace std; /在函數(shù)之外的聲明部分在函數(shù)之外的聲明部分int a=3; /在函數(shù)之外的聲明部分在函數(shù)之外的聲明部分int main( ) /函數(shù)首部函數(shù)首部 float b; /函數(shù)內(nèi)的聲明部分函數(shù)內(nèi)的聲明部分 b=4.5; /執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句 coutab; /執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句 return 0; /執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句如果一個(gè)變量在函數(shù)之外進(jìn)行聲明,此變量是如果一個(gè)變量在函數(shù)之外進(jìn)行聲明,此變量是全局全局變量變量,它的,它的有效范圍是從該行開(kāi)始到本程序單

8、位結(jié)有效范圍是從該行開(kāi)始到本程序單位結(jié)束束。如果一個(gè)變量在函數(shù)內(nèi)聲明,此變量是。如果一個(gè)變量在函數(shù)內(nèi)聲明,此變量是局部變局部變量量,它的,它的有效范圍是從該行開(kāi)始到本函數(shù)結(jié)束有效范圍是從該行開(kāi)始到本函數(shù)結(jié)束。c+程序結(jié)構(gòu)可以用圖程序結(jié)構(gòu)可以用圖31表示。表示。圖圖3.1程序應(yīng)該包括程序應(yīng)該包括數(shù)據(jù)描述數(shù)據(jù)描述(由聲明語(yǔ)句來(lái)實(shí)現(xiàn))和(由聲明語(yǔ)句來(lái)實(shí)現(xiàn))和數(shù)數(shù)據(jù)操作據(jù)操作(由執(zhí)行語(yǔ)句來(lái)實(shí)現(xiàn))。(由執(zhí)行語(yǔ)句來(lái)實(shí)現(xiàn))。數(shù)據(jù)描述主要包括數(shù)據(jù)描述主要包括數(shù)據(jù)類型的聲明、函數(shù)和變量的定義、變量的初始數(shù)據(jù)類型的聲明、函數(shù)和變量的定義、變量的初始化等。數(shù)據(jù)操作的任務(wù)是對(duì)已提供的數(shù)據(jù)進(jìn)行加工?;?。數(shù)據(jù)操作的任務(wù)

9、是對(duì)已提供的數(shù)據(jù)進(jìn)行加工。c+程序中最小的獨(dú)立單位是程序中最小的獨(dú)立單位是語(yǔ)句語(yǔ)句(statement)。它。它相當(dāng)于一篇文章中的一個(gè)句子。句子是用句號(hào)結(jié)束相當(dāng)于一篇文章中的一個(gè)句子。句子是用句號(hào)結(jié)束的。語(yǔ)句一般是用分號(hào)結(jié)束的的。語(yǔ)句一般是用分號(hào)結(jié)束的(復(fù)合語(yǔ)句是以右花復(fù)合語(yǔ)句是以右花括號(hào)結(jié)束的括號(hào)結(jié)束的)。c+語(yǔ)句可以分為以下語(yǔ)句可以分為以下4種:種:1. 聲明語(yǔ)句聲明語(yǔ)句如如int a,b;在在c語(yǔ)言中,只有產(chǎn)生實(shí)際操作的才稱為語(yǔ)言中,只有產(chǎn)生實(shí)際操作的才稱為語(yǔ)句,對(duì)變量的定義不作為語(yǔ)句,而且語(yǔ)句,對(duì)變量的定義不作為語(yǔ)句,而且要求對(duì)變量要求對(duì)變量的定義必須出現(xiàn)在本塊中所有程序語(yǔ)句之前的定義

10、必須出現(xiàn)在本塊中所有程序語(yǔ)句之前。因此。因此c程序員已經(jīng)養(yǎng)成了一個(gè)習(xí)慣:程序員已經(jīng)養(yǎng)成了一個(gè)習(xí)慣: 在函數(shù)或塊的開(kāi)頭在函數(shù)或塊的開(kāi)頭位置定義全部變量。在位置定義全部變量。在c+中,對(duì)變量中,對(duì)變量(以及其他以及其他對(duì)象對(duì)象)的定義被認(rèn)為是一條語(yǔ)句,并且可以出現(xiàn)在的定義被認(rèn)為是一條語(yǔ)句,并且可以出現(xiàn)在函數(shù)中的任何行,即可以放在其他程序語(yǔ)句可以出函數(shù)中的任何行,即可以放在其他程序語(yǔ)句可以出現(xiàn)的地方,也可以放在函數(shù)之外。這樣更加靈活,現(xiàn)的地方,也可以放在函數(shù)之外。這樣更加靈活,可以很方便地實(shí)現(xiàn)變量的局部化可以很方便地實(shí)現(xiàn)變量的局部化(變量的作用范圍變量的作用范圍從聲明語(yǔ)句開(kāi)始到本函數(shù)或本塊結(jié)束從聲明

11、語(yǔ)句開(kāi)始到本函數(shù)或本塊結(jié)束)。2. 執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句通知計(jì)算機(jī)完成一定的操作。執(zhí)行語(yǔ)句包括:通知計(jì)算機(jī)完成一定的操作。執(zhí)行語(yǔ)句包括: (1) 控制語(yǔ)句控制語(yǔ)句,完成一定的控制功能。,完成一定的控制功能。c+有有9種種控制語(yǔ)句,控制語(yǔ)句,即即 if( )else (條件語(yǔ)句)(條件語(yǔ)句) for( ) (循環(huán)語(yǔ)句)(循環(huán)語(yǔ)句) while( ) (循環(huán)語(yǔ)句)(循環(huán)語(yǔ)句) dowhile( ) (循環(huán)語(yǔ)句)(循環(huán)語(yǔ)句) continue (結(jié)束本次循環(huán)語(yǔ)句)(結(jié)束本次循環(huán)語(yǔ)句) break (中止執(zhí)行或循環(huán)語(yǔ)句)(中止執(zhí)行或循環(huán)語(yǔ)句) switch (多分支選擇語(yǔ)句)(多分支選擇語(yǔ)句) goto

12、(轉(zhuǎn)向語(yǔ)句)(轉(zhuǎn)向語(yǔ)句) return (從函數(shù)返回語(yǔ)句)(從函數(shù)返回語(yǔ)句)(2) 函數(shù)和流對(duì)象調(diào)用語(yǔ)句函數(shù)和流對(duì)象調(diào)用語(yǔ)句。函數(shù)調(diào)用語(yǔ)句由一次函數(shù)調(diào)用函數(shù)調(diào)用語(yǔ)句由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成一個(gè)語(yǔ)句,加一個(gè)分號(hào)構(gòu)成一個(gè)語(yǔ)句,例如例如sort(x,y,z); /假設(shè)已定義了假設(shè)已定義了sort函數(shù),它有函數(shù),它有3個(gè)參數(shù)個(gè)參數(shù)coutx100) z=z-100;cout0) cout0endl;按語(yǔ)法規(guī)定按語(yǔ)法規(guī)定if后面的后面的( )內(nèi)是一個(gè)條件?,F(xiàn)在在內(nèi)是一個(gè)條件?,F(xiàn)在在x的位的位置上換上一個(gè)賦值表達(dá)式置上換上一個(gè)賦值表達(dá)式“a=b”,其作用是:先進(jìn),其作用是:先進(jìn)行賦值運(yùn)算(將行賦值運(yùn)算

13、(將b的值賦給的值賦給a),然后判斷),然后判斷a是否大是否大于于0,如大于,如大于0,執(zhí)行,執(zhí)行cout00) cout0endl;因?yàn)樵谝驗(yàn)樵趇f的條件中不能包含賦值語(yǔ)句。的條件中不能包含賦值語(yǔ)句。c+把賦值把賦值語(yǔ)句和賦值表達(dá)式區(qū)別開(kāi)來(lái),增加了表達(dá)式的種類,語(yǔ)句和賦值表達(dá)式區(qū)別開(kāi)來(lái),增加了表達(dá)式的種類,能實(shí)現(xiàn)其他語(yǔ)言中難以實(shí)現(xiàn)的功能。能實(shí)現(xiàn)其他語(yǔ)言中難以實(shí)現(xiàn)的功能。c和和c+本身都沒(méi)有為輸入和輸出提供專門(mén)的語(yǔ)句本身都沒(méi)有為輸入和輸出提供專門(mén)的語(yǔ)句結(jié)構(gòu)。輸入輸出不是由結(jié)構(gòu)。輸入輸出不是由c+本身定義的,而是在本身定義的,而是在編編譯系統(tǒng)提供的譯系統(tǒng)提供的i/o庫(kù)中定義庫(kù)中定義的。的。c+的

14、輸出和輸入是用的輸出和輸入是用“流流”(stream)的方式實(shí)現(xiàn)的方式實(shí)現(xiàn)的。的。有關(guān)流對(duì)象有關(guān)流對(duì)象cin、cout和流運(yùn)算符的定義等信息是存和流運(yùn)算符的定義等信息是存放在放在c+的的輸入輸出流庫(kù)輸入輸出流庫(kù)中的,因此如果在程序中中的,因此如果在程序中使用使用cin、cout和流運(yùn)算符,就和流運(yùn)算符,就必須使用預(yù)處理命令必須使用預(yù)處理命令把把頭文件頭文件stream包含到本文件中:包含到本文件中: #include 3.4 c+的輸入與輸出的輸入與輸出cout語(yǔ)句語(yǔ)句的一般格式為的一般格式為 cout表達(dá)式表達(dá)式1表達(dá)式表達(dá)式2變量變量1變量變量2變量變量n;在定義流對(duì)象時(shí),系統(tǒng)會(huì)在內(nèi)存中開(kāi)

15、辟一段緩沖區(qū),在定義流對(duì)象時(shí),系統(tǒng)會(huì)在內(nèi)存中開(kāi)辟一段緩沖區(qū),用來(lái)暫存輸入輸出流的數(shù)據(jù)。在執(zhí)行用來(lái)暫存輸入輸出流的數(shù)據(jù)。在執(zhí)行cout語(yǔ)句時(shí),語(yǔ)句時(shí),先把插入的數(shù)據(jù)順序存放在輸出緩沖區(qū)中,直到輸先把插入的數(shù)據(jù)順序存放在輸出緩沖區(qū)中,直到輸出緩沖區(qū)滿或遇到出緩沖區(qū)滿或遇到cout語(yǔ)句中的語(yǔ)句中的endl(或或n,ends,flush)為止,此時(shí)將緩沖區(qū)中已有的數(shù)據(jù)一起輸出,為止,此時(shí)將緩沖區(qū)中已有的數(shù)據(jù)一起輸出,并清空緩沖區(qū)。輸出流中的數(shù)據(jù)在系統(tǒng)默認(rèn)的設(shè)備并清空緩沖區(qū)。輸出流中的數(shù)據(jù)在系統(tǒng)默認(rèn)的設(shè)備(一般為顯示器一般為顯示器)輸出。輸出。*3.4.1 輸入流與輸出流的基本操作輸入流與輸出流的基本操

16、作一個(gè)一個(gè)cout語(yǔ)句可以分寫(xiě)成若干行。語(yǔ)句可以分寫(xiě)成若干行。如如coutthis is a simple c+ program.endl;可以寫(xiě)成可以寫(xiě)成 coutthis is /注意行末尾無(wú)分號(hào)注意行末尾無(wú)分號(hào)a c+ program.endl; /語(yǔ)句最后有分號(hào)語(yǔ)句最后有分號(hào)也可寫(xiě)成多個(gè)也可寫(xiě)成多個(gè)cout語(yǔ)句語(yǔ)句,即,即coutthis is ; /語(yǔ)句末尾有分號(hào)語(yǔ)句末尾有分號(hào)cout a c+ ;cout program.;coutendl;以上以上3種情況的輸出均為種情況的輸出均為this is a simple c+ program.注意注意 不能用一個(gè)插入運(yùn)算符不能用一個(gè)插入

17、運(yùn)算符“”插入多個(gè)輸出項(xiàng):插入多個(gè)輸出項(xiàng):couta,b,c; /錯(cuò)誤,不能一次插入多項(xiàng)錯(cuò)誤,不能一次插入多項(xiàng)couta+b+c; /正確,這是一個(gè)表達(dá)式,作為一項(xiàng)正確,這是一個(gè)表達(dá)式,作為一項(xiàng)在用在用cout輸出時(shí),用戶不必通知計(jì)算機(jī)按何種類型輸出時(shí),用戶不必通知計(jì)算機(jī)按何種類型輸出,系統(tǒng)會(huì)自動(dòng)判別輸出數(shù)據(jù)的類型,使輸出的輸出,系統(tǒng)會(huì)自動(dòng)判別輸出數(shù)據(jù)的類型,使輸出的數(shù)據(jù)按相應(yīng)的類型輸出。數(shù)據(jù)按相應(yīng)的類型輸出。如已定義如已定義a為為int型,型,b為為float型,型,c為為char型,則型,則couta b cabcd;可以寫(xiě)成可以寫(xiě)成 cina /注意行末尾無(wú)分號(hào)注意行末尾無(wú)分號(hào) b /這

18、樣寫(xiě)可能看起來(lái)清晰些這樣寫(xiě)可能看起來(lái)清晰些 c d; 也可以寫(xiě)成也可以寫(xiě)成cina;cinb;cinc;cind;以上以上3種情況均可以從鍵盤(pán)輸入:種情況均可以從鍵盤(pán)輸入: 1 2 3 4 也可以分多行輸入數(shù)據(jù):也可以分多行輸入數(shù)據(jù): 1 2 3 4 在用在用cin輸入時(shí),系統(tǒng)也會(huì)根據(jù)變量的類型從輸入輸入時(shí),系統(tǒng)也會(huì)根據(jù)變量的類型從輸入流中提取相應(yīng)長(zhǎng)度的字節(jié)。流中提取相應(yīng)長(zhǎng)度的字節(jié)。如有如有char c1,c2;int a;float b;cinc1c2ab;如果輸入如果輸入1234 56.78 注意:注意: 34后面應(yīng)該有空格以便和后面應(yīng)該有空格以便和56.78分隔開(kāi)。也分隔開(kāi)。也可以按下面

19、格式輸入:可以按下面格式輸入:1 2 34 56.78 (在在1和和2之間有空格之間有空格)不能用不能用cin語(yǔ)句把空格字符和回車換行符作為字符語(yǔ)句把空格字符和回車換行符作為字符輸入給字符變量,它們將被跳過(guò)。輸入給字符變量,它們將被跳過(guò)。如果想將空格字如果想將空格字符或回車換行符符或回車換行符(或任何其他鍵盤(pán)上的字符或任何其他鍵盤(pán)上的字符)輸入給輸入給字符變量,可以用字符變量,可以用3.4.3節(jié)介紹的節(jié)介紹的getchar函數(shù)。函數(shù)。在組織輸入流數(shù)據(jù)時(shí),要仔細(xì)分析在組織輸入流數(shù)據(jù)時(shí),要仔細(xì)分析cin語(yǔ)句中變量語(yǔ)句中變量的類型,按照相應(yīng)的格式輸入,否則容易出錯(cuò)。的類型,按照相應(yīng)的格式輸入,否則容

20、易出錯(cuò)。上面介紹的是使用上面介紹的是使用cout和和cin時(shí)的默認(rèn)格式。但有時(shí)時(shí)的默認(rèn)格式。但有時(shí)人們?cè)谳斎胼敵鰰r(shí)有一些特殊的要求,如在輸出實(shí)人們?cè)谳斎胼敵鰰r(shí)有一些特殊的要求,如在輸出實(shí)數(shù)時(shí)數(shù)時(shí)規(guī)定字段寬度規(guī)定字段寬度,只,只保留兩位小數(shù)保留兩位小數(shù),數(shù)據(jù)向左或數(shù)據(jù)向左或向右對(duì)齊向右對(duì)齊等。等。c+提供了在輸入輸出流中使用的控提供了在輸入輸出流中使用的控制符制符(有的書(shū)中稱為操縱符有的書(shū)中稱為操縱符),見(jiàn)書(shū)中表,見(jiàn)書(shū)中表3.1。需要注意的是:需要注意的是: 如果使用了控制符,在程序單位如果使用了控制符,在程序單位的開(kāi)頭除了要加的開(kāi)頭除了要加iostream頭文件外,還要加頭文件外,還要加iom

21、anip頭文件。頭文件。*3.4.2 在輸入流與輸出流中使用控制符在輸入流與輸出流中使用控制符c+還保留了還保留了c語(yǔ)言中用于輸入和輸出單個(gè)字符的語(yǔ)言中用于輸入和輸出單個(gè)字符的函數(shù),使用很方便。其中最常用的有函數(shù),使用很方便。其中最常用的有g(shù)etchar函數(shù)函數(shù)和和putchar函數(shù)函數(shù)。1. putchar函數(shù)函數(shù)(字符輸出函數(shù))(字符輸出函數(shù))putchar函數(shù)的作用是向終端輸出一個(gè)字符。例如函數(shù)的作用是向終端輸出一個(gè)字符。例如putchar(c);它輸出字符變量的值。它輸出字符變量的值。3.4.3 用用getchar和和putchar 函數(shù)進(jìn)行字符的輸入和輸出函數(shù)進(jìn)行字符的輸入和輸出例例

22、3.2 輸出單個(gè)字符。輸出單個(gè)字符。#include /或者包含頭文件或者包含頭文件stdio.h: #include using namespace std;int main( )char a,b,c; a=b;b=o;c=y; putchar(a);putchar(b);putchar(c);putchar(n); putchar(66);putchar(79);putchar(89);putchar(10); return 0;運(yùn)行結(jié)果為運(yùn)行結(jié)果為boyboy可以看到:可以看到: 用用putchar可以輸出轉(zhuǎn)義字符,可以輸出轉(zhuǎn)義字符,putchar(n)的作用是輸出一個(gè)換行符,使輸出的作

23、用是輸出一個(gè)換行符,使輸出的當(dāng)前位置移到下一行的開(kāi)頭。的當(dāng)前位置移到下一行的開(kāi)頭。putchar(66)的作用的作用是將是將66作為作為ascii碼轉(zhuǎn)換為字符輸出,碼轉(zhuǎn)換為字符輸出,66是字母是字母b的的ascii碼,因此碼,因此putchar(66)輸出字母輸出字母b。其余類。其余類似。似。putchar(10)中的中的10是換行符的是換行符的ascii碼,碼,putchar(10)輸出一個(gè)換行符,作用與輸出一個(gè)換行符,作用與putchar(n) 相同。相同。也可以輸出其他轉(zhuǎn)義字符也可以輸出其他轉(zhuǎn)義字符,如,如 putchar(101) (輸出字符(輸出字符a,八進(jìn)制的,八進(jìn)制的101是是a

24、的的ascii碼)碼) putchar() (輸出單引號(hào)字符(輸出單引號(hào)字符) putchar(015) (輸出回車,不換行,使輸出的當(dāng)前位置(輸出回車,不換行,使輸出的當(dāng)前位置移到本行開(kāi)頭)移到本行開(kāi)頭)2. getchar函數(shù)函數(shù)(字符輸入函數(shù))(字符輸入函數(shù))此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符。備)輸入一個(gè)字符。getchar函數(shù)沒(méi)有參數(shù),其一函數(shù)沒(méi)有參數(shù),其一般形式為般形式為getchar( )函數(shù)的值就是從輸入設(shè)備得)函數(shù)的值就是從輸入設(shè)備得到的字符。到的字符。例例3.3 輸入單個(gè)字符。輸入單個(gè)字符。#includ

25、e using namespace std;int main( )char c; c=getchar( ); putchar(c+32); putchar(n); return 0; 在運(yùn)行時(shí),如果從鍵盤(pán)輸入大寫(xiě)字母在運(yùn)行時(shí),如果從鍵盤(pán)輸入大寫(xiě)字母a并按回車并按回車鍵,就會(huì)在屏幕上輸出小寫(xiě)字母鍵,就會(huì)在屏幕上輸出小寫(xiě)字母a。請(qǐng)注意,請(qǐng)注意,getchar( )只能接收一個(gè)字符只能接收一個(gè)字符。getchar函函數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,也可以不賦給任何變量,作為表達(dá)式的一部分。也可以不賦給任何變量,作為表達(dá)式的一部分。在在c語(yǔ)言中是

26、用語(yǔ)言中是用printf函數(shù)進(jìn)行輸出,用函數(shù)進(jìn)行輸出,用scanf函數(shù)函數(shù)進(jìn)行輸入的。進(jìn)行輸入的。c+保留了保留了c語(yǔ)言的這一用法。在此語(yǔ)言的這一用法。在此只作很簡(jiǎn)單的介紹。只作很簡(jiǎn)單的介紹。scanf函數(shù)一般格式是函數(shù)一般格式是 scanf(格式控制,輸出表列格式控制,輸出表列)printf函數(shù)的一般格式是函數(shù)的一般格式是printf(格式控制,輸出表列格式控制,輸出表列)3.4.4 用用scanf和和printf函數(shù)進(jìn)行輸入和輸出函數(shù)進(jìn)行輸入和輸出例例3.4 用用scanf和和printf函數(shù)進(jìn)行輸入和輸出。函數(shù)進(jìn)行輸入和輸出。#include using namespace std;in

27、t main( )int a; float b; char c; scanf(%d %c %f,&a,&c,&b); /注意在變量名前要加地址運(yùn)算注意在變量名前要加地址運(yùn)算符符& printf(a=%d,b=%f,c=%cn,a,b,c); return 0;運(yùn)行情況如下:運(yùn)行情況如下:12 a 67.98 (本行為輸入,輸入的本行為輸入,輸入的3個(gè)數(shù)據(jù)間以空格相間個(gè)數(shù)據(jù)間以空格相間)a=12,b=67.980003,c=a(本行為輸出本行為輸出) 輸入的整數(shù)輸入的整數(shù)12送給整型變量送給整型變量a,字符,字符a送給字符變送給字符變量量c,67.98送給單精度變

28、量送給單精度變量b。例例3.5 求一元二次方程式求一元二次方程式ax2+bx+c=0的根。的根。a,b,c的的值在運(yùn)行時(shí)由鍵盤(pán)輸入,它們的值滿足值在運(yùn)行時(shí)由鍵盤(pán)輸入,它們的值滿足b2-4ac0。根據(jù)求根據(jù)求x1,x2的算法。它可以編寫(xiě)出以下的算法。它可以編寫(xiě)出以下c+程序:程序: #include #include /程序要用到數(shù)學(xué)程序要用到數(shù)學(xué)函數(shù)函數(shù)sqrt,應(yīng)包含頭文件,應(yīng)包含頭文件cmathusing namespace std;int main( )float a,b,c,x1,x2; cinabc; x1=(-b+sqrt(b*b-4*a*c)/(2*a); x2=(-b-sqrt

29、(b*b-4*a*c)/(2*a); coutx1=x1endl; coutx2=x2endl; return 0;3.5 編寫(xiě)順序結(jié)構(gòu)的程序編寫(xiě)順序結(jié)構(gòu)的程序運(yùn)行情況如下:運(yùn)行情況如下: 4.5 8.8 2.4 x1=-0.327612x2=-1.17794如果程序中要用到數(shù)學(xué)函數(shù),都要包含頭文件如果程序中要用到數(shù)學(xué)函數(shù),都要包含頭文件cmath(也可以用老形式的頭文件也可以用老形式的頭文件math.h,但提倡使,但提倡使用用c+新形式的頭文件,新形式的頭文件,請(qǐng)參閱第請(qǐng)參閱第14章章14.3節(jié)節(jié))。在在寫(xiě)程序時(shí),一定要注意將數(shù)學(xué)表達(dá)式正確地轉(zhuǎn)換成寫(xiě)程序時(shí),一定要注意將數(shù)學(xué)表達(dá)式正確地轉(zhuǎn)換成

30、合法的合法的c+表達(dá)式。表達(dá)式??梢钥吹剑嚎梢钥吹剑?順序結(jié)構(gòu)的程序中的各執(zhí)行語(yǔ)句是順順序結(jié)構(gòu)的程序中的各執(zhí)行語(yǔ)句是順序執(zhí)行的。這種程序最簡(jiǎn)單,最容易理解。序執(zhí)行的。這種程序最簡(jiǎn)單,最容易理解。例如,購(gòu)物在例如,購(gòu)物在1000元以下的打九五折,元以下的打九五折,1000元及以元及以上的打九折。上的打九折。c+提供提供if語(yǔ)句來(lái)實(shí)現(xiàn)這種語(yǔ)句來(lái)實(shí)現(xiàn)這種條件選擇條件選擇。如。如if amount1000 tax=0.95; /amount代表購(gòu)物總額,代表購(gòu)物總額,tax代表折扣代表折扣else tax=0.9; /若若amount1000,條件滿足,條件滿足,tax=0.95,否則,否則tax=0

31、.9pay=amount*tax; /pay為實(shí)付款為實(shí)付款流程可以用圖流程可以用圖3.4表示。表示。圖圖3.43.6 關(guān)系運(yùn)算和邏輯運(yùn)算關(guān)系運(yùn)算和邏輯運(yùn)算上面上面if語(yǔ)句中的語(yǔ)句中的“amount1000”實(shí)現(xiàn)的不是算術(shù)運(yùn)實(shí)現(xiàn)的不是算術(shù)運(yùn)算,而是關(guān)系運(yùn)算。算,而是關(guān)系運(yùn)算。amount”是一是一個(gè)比較符,稱為關(guān)系運(yùn)算符。個(gè)比較符,稱為關(guān)系運(yùn)算符。c+的關(guān)系運(yùn)算符有:的關(guān)系運(yùn)算符有: (小于小于) (大于大于) = (大于或等于大于或等于) = (等于等于) != (不等于不等于) 優(yōu)先級(jí)相同優(yōu)先級(jí)相同 (低低)3.6.1 關(guān)系運(yùn)算和關(guān)系表達(dá)式關(guān)系運(yùn)算和關(guān)系表達(dá)式關(guān)于優(yōu)先次序:關(guān)于優(yōu)先次序:

32、前前4種關(guān)系運(yùn)算符(種關(guān)系運(yùn)算符(,)的優(yōu)先級(jí))的優(yōu)先級(jí)別相同,后兩種也相同。前別相同,后兩種也相同。前4種高于后兩種。種高于后兩種。例如,例如,“”優(yōu)先于優(yōu)先于“”。而。而“”與與“a+b 等效于等效于 c(a+b) ab=c 等效于等效于(ab)=c a=bc 等效于等效于a=(bc 等效于等效于a=(bc)用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子,稱為用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子,稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的一般形式可以表示為關(guān)系表達(dá)式。關(guān)系表達(dá)式的一般形式可以表示為表達(dá)式表達(dá)式 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 表達(dá)式表達(dá)式其中的其中的“表達(dá)式表達(dá)式”可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式、可以是算

33、術(shù)表達(dá)式或關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式。例如,下邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式。例如,下面都是合法的關(guān)系表達(dá)式:面都是合法的關(guān)系表達(dá)式:ab, a+bb+c,(a=3)(b=5), ab)(b=0”的值為的值為“真真”。在在c和和c+中都用數(shù)值中都用數(shù)值1代表代表“真真”,用用0代表代表“假假”。如果有以下賦值表達(dá)式:如果有以下賦值表達(dá)式:d=ab 則則d得到的值為得到的值為1f=abc f得到的值為得到的值為0c語(yǔ)言沒(méi)有提供邏輯型數(shù)據(jù),關(guān)系表達(dá)式的值語(yǔ)言沒(méi)有提供邏輯型數(shù)據(jù),關(guān)系表達(dá)式的值(真或真或假假)分別用數(shù)值分別用數(shù)值1和和0代表。代表。c+增加了邏輯型數(shù)據(jù)增加了邏

34、輯型數(shù)據(jù)。邏輯型常量只有兩個(gè),邏輯型常量只有兩個(gè),即即false(假假)和和true(真真)。邏輯型變量要用類型標(biāo)識(shí)符邏輯型變量要用類型標(biāo)識(shí)符bool來(lái)定義,它的值只來(lái)定義,它的值只能是能是true和和false之一。之一。如如bool found,flag=false; /定義邏輯變量定義邏輯變量found和和flag,并使,并使flag的初值的初值為為falsefound=true; /將邏輯常量將邏輯常量true賦給邏輯變量賦給邏輯變量found由于邏輯變量是用關(guān)鍵字由于邏輯變量是用關(guān)鍵字bool來(lái)定義的,因此又稱來(lái)定義的,因此又稱為布爾變量。邏輯型常量又稱為布爾常量。所謂邏為布爾變量。

35、邏輯型常量又稱為布爾常量。所謂邏輯型,就是布爾型。輯型,就是布爾型。3.6.2 邏輯常量和邏輯變量邏輯常量和邏輯變量在編譯系統(tǒng)處理邏輯型數(shù)據(jù)時(shí),將在編譯系統(tǒng)處理邏輯型數(shù)據(jù)時(shí),將false處理為處理為0,將將true處理為處理為1。因此,邏輯型數(shù)據(jù)可以與數(shù)值型。因此,邏輯型數(shù)據(jù)可以與數(shù)值型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算。數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算。如果將一個(gè)非零的整數(shù)賦給邏輯型變量,則按如果將一個(gè)非零的整數(shù)賦給邏輯型變量,則按“真真”處理,如處理,如flag=123; /賦值后賦值后flag的值為的值為truecoutb) & (xy) 可寫(xiě)成可寫(xiě)成 ab & xy (a=b) | (x=y) 可寫(xiě)成可

36、寫(xiě)成 a=b | x=y (!a) | (ab) 可寫(xiě)成可寫(xiě)成 !a | ab將兩個(gè)關(guān)系表達(dá)式用邏輯運(yùn)算符連接起來(lái)就成為一將兩個(gè)關(guān)系表達(dá)式用邏輯運(yùn)算符連接起來(lái)就成為一個(gè)邏輯表達(dá)式,上面幾個(gè)式子就是邏輯表達(dá)式。個(gè)邏輯表達(dá)式,上面幾個(gè)式子就是邏輯表達(dá)式。邏邏輯表達(dá)式的一般形式可以表示為輯表達(dá)式的一般形式可以表示為表達(dá)式表達(dá)式 邏輯運(yùn)算符邏輯運(yùn)算符 表達(dá)式表達(dá)式邏輯表達(dá)式的值是一個(gè)邏輯量邏輯表達(dá)式的值是一個(gè)邏輯量“真真”或或“假假”。前。前面已說(shuō)明,在給出邏輯運(yùn)算結(jié)果時(shí),以數(shù)值面已說(shuō)明,在給出邏輯運(yùn)算結(jié)果時(shí),以數(shù)值1代表代表“真真”,以,以0代表代表“假假”,但在判斷一個(gè)邏輯量是,但在判斷一個(gè)邏輯量

37、是否為否為“真真”時(shí),采取的標(biāo)準(zhǔn)是:時(shí),采取的標(biāo)準(zhǔn)是: 如果其值是如果其值是0就認(rèn)就認(rèn)為是為是“假假”,如果其值是非,如果其值是非0就認(rèn)為是就認(rèn)為是“真真”。例。例如:如:(1) 若若a=4,則,則!a的值為的值為0。因?yàn)?。因?yàn)閍的值為非的值為非0,被認(rèn)作,被認(rèn)作“真真”,對(duì)它進(jìn)行對(duì)它進(jìn)行“非非”運(yùn)算,得運(yùn)算,得“假假”,“假假”以以0代表。代表。(2) 若若a=4,b=5,則,則a & b的值為的值為1。因?yàn)?。因?yàn)閍和和b均為非均為非0,被,被認(rèn)為是認(rèn)為是“真真” 。(3) a,b值同前,值同前,a-b|a+b的值為的值為1。因?yàn)?。因?yàn)閍-b和和a+b的值都為非的值都為非零值。零值。

38、(4) a,b值同前,值同前,!a | b的值為的值為1。(5) 4 & 0 | 2 的值為的值為1。if語(yǔ)句是用來(lái)判定所給定的條件是否滿足,根據(jù)判語(yǔ)句是用來(lái)判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。3.7 選擇結(jié)構(gòu)和語(yǔ)句選擇結(jié)構(gòu)和語(yǔ)句1. (表達(dá)式)語(yǔ)句(表達(dá)式)語(yǔ)句例如:例如:if(xy) coutxy) coutx;else cout500) cost=0.15;else if(number300) cost=0.10;else if(number100) cost=0.075;else if(nu

39、mber50) cost=0.05;else cost=0;圖圖3.說(shuō)明:說(shuō)明:(1) 從圖從圖3.5和圖和圖3.6可以看到:可以看到: 3種形式的種形式的if語(yǔ)句都語(yǔ)句都是由一個(gè)入口進(jìn)來(lái),經(jīng)過(guò)對(duì)是由一個(gè)入口進(jìn)來(lái),經(jīng)過(guò)對(duì)“表達(dá)式表達(dá)式”的判斷,分的判斷,分別執(zhí)行相應(yīng)的語(yǔ)句,最后歸到一個(gè)共同的出口。這別執(zhí)行相應(yīng)的語(yǔ)句,最后歸到一個(gè)共同的出口。這種形式的程序結(jié)構(gòu)稱為選擇結(jié)構(gòu)。種形式的程序結(jié)構(gòu)稱為選擇結(jié)構(gòu)。在在c+中中if語(yǔ)句語(yǔ)句是實(shí)現(xiàn)選擇結(jié)構(gòu)主要的語(yǔ)句。是實(shí)現(xiàn)選擇結(jié)構(gòu)主要的語(yǔ)句。(2) 3種形式的種形式的if語(yǔ)句中在語(yǔ)句中在if后面都有一個(gè)用括號(hào)括起后面都有一個(gè)用括號(hào)括起來(lái)的表達(dá)式,它是程序編寫(xiě)者

40、要求程序判斷的來(lái)的表達(dá)式,它是程序編寫(xiě)者要求程序判斷的“條條件件”,一般是,一般是邏輯表達(dá)式邏輯表達(dá)式或或關(guān)系表達(dá)式關(guān)系表達(dá)式。(3) 第第2、第、第3種形式的種形式的if語(yǔ)句中,在每個(gè)語(yǔ)句中,在每個(gè)else前面有前面有一分號(hào),整個(gè)語(yǔ)句結(jié)束處有一分號(hào)。一分號(hào),整個(gè)語(yǔ)句結(jié)束處有一分號(hào)。(4) 在在if和和else后面可以只含一個(gè)內(nèi)嵌的操作語(yǔ)句后面可以只含一個(gè)內(nèi)嵌的操作語(yǔ)句(如上例),也可以有多個(gè)操作語(yǔ)句,此時(shí)用花括(如上例),也可以有多個(gè)操作語(yǔ)句,此時(shí)用花括號(hào)號(hào)“”將幾個(gè)語(yǔ)句括起來(lái)成為一個(gè)復(fù)合語(yǔ)句。將幾個(gè)語(yǔ)句括起來(lái)成為一個(gè)復(fù)合語(yǔ)句。例例3.6 求三角形的面積。求三角形的面積。#include #

41、include /使用數(shù)學(xué)函數(shù)時(shí)要包含頭文件使用數(shù)學(xué)函數(shù)時(shí)要包含頭文件cmath#include /使用使用i/o流控制符要包含頭文件流控制符要包含頭文件iomanipusing namespace std;int main( ) double a,b,c; coutabc; if (a+bc & b+ca & c+ab) /復(fù)合語(yǔ)句開(kāi)始復(fù)合語(yǔ)句開(kāi)始 double s,area; /在復(fù)合語(yǔ)句內(nèi)定義變量在復(fù)合語(yǔ)句內(nèi)定義變量 s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); coutsetiosflags(ios fixed)setpreci

42、sion(4); /指定輸出的數(shù)包含指定輸出的數(shù)包含4位小數(shù)位小數(shù) coutarea=areaendl; /在復(fù)合語(yǔ)句內(nèi)輸出局部變量的值在復(fù)合語(yǔ)句內(nèi)輸出局部變量的值 /復(fù)合語(yǔ)句結(jié)束復(fù)合語(yǔ)句結(jié)束else coutit is not a trilateral!b) max=a;else max=b;可以用條件運(yùn)算符可以用條件運(yùn)算符(? :)來(lái)處理:來(lái)處理:max=(ab)?a:b; 其中其中“(ab)?a:b”是一個(gè)是一個(gè)“條件表達(dá)式條件表達(dá)式”。它是。它是這樣執(zhí)行的:如果這樣執(zhí)行的:如果(ab)條件為真,則條件表達(dá)式條件為真,則條件表達(dá)式的值就取的值就取“?”后面的值,即條件表達(dá)式的值為,后面的

43、值,即條件表達(dá)式的值為,否則條件表達(dá)式的值為否則條件表達(dá)式的值為“:”后面的值,即后面的值,即b。3.8 條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符要求有條件運(yùn)算符要求有3個(gè)操作對(duì)象,個(gè)操作對(duì)象,稱三目(元)運(yùn)稱三目(元)運(yùn)算符,它是算符,它是c+中惟一的一個(gè)三目運(yùn)算符中惟一的一個(gè)三目運(yùn)算符。條件表。條件表達(dá)式的一般形式為達(dá)式的一般形式為表達(dá)式表達(dá)式1 ? 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式3條件運(yùn)算符的執(zhí)行順序是:先求解表達(dá)式條件運(yùn)算符的執(zhí)行順序是:先求解表達(dá)式1,若為,若為非非0(真)則求解表達(dá)式(真)則求解表達(dá)式2,此時(shí)表達(dá)式的值就作,此時(shí)表達(dá)式的值就作為整個(gè)條件表達(dá)式的值。若表達(dá)

44、式為整個(gè)條件表達(dá)式的值。若表達(dá)式1的值為的值為0(假),(假),則求解表達(dá)式則求解表達(dá)式3,表達(dá)式,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值就是整個(gè)條件表達(dá)式的值。的值?!癿ax=(ab)?a:b” 的執(zhí)行結(jié)果是將條件表的執(zhí)行結(jié)果是將條件表達(dá)式的值賦給達(dá)式的值賦給max。也就是將。也就是將a和和b二者中的大者賦二者中的大者賦給給max。條件運(yùn)算符優(yōu)先于賦值運(yùn)算符,因此上面。條件運(yùn)算符優(yōu)先于賦值運(yùn)算符,因此上面賦值表達(dá)式的求解過(guò)程是先求解條件表達(dá)式,再將賦值表達(dá)式的求解過(guò)程是先求解條件表達(dá)式,再將它的值賦給它的值賦給max。條件表達(dá)式中,表達(dá)式條件表達(dá)式中,表達(dá)式1的類型可以與表達(dá)式的類型可以與表達(dá)式

45、2和表和表達(dá)式達(dá)式3的類型不同。如的類型不同。如x? a b如果已定義如果已定義x為整型變量,若為整型變量,若x=0,則條件表達(dá)式的,則條件表達(dá)式的值為字符值為字符b的的ascii碼。表達(dá)式碼。表達(dá)式2和表達(dá)式和表達(dá)式3的類型的類型也可以不同,此時(shí)條件表達(dá)式的值的類型為二者中也可以不同,此時(shí)條件表達(dá)式的值的類型為二者中較高的類型。如有條件表達(dá)式較高的類型。如有條件表達(dá)式xy?1:1.5,如果,如果xy,則條件表達(dá)式的值為,則條件表達(dá)式的值為1.5,若,若xy,值應(yīng)為,值應(yīng)為1,由于由于c+把把1.5按雙精度數(shù)處理,雙精度的類型比整按雙精度數(shù)處理,雙精度的類型比整型高,因此,型高,因此,將將1轉(zhuǎn)

46、換成雙精度數(shù),以此作為表達(dá)轉(zhuǎn)換成雙精度數(shù),以此作為表達(dá)式的值。式的值。例例3.7 輸入一個(gè)字符,判別它是否為大寫(xiě)字母,如輸入一個(gè)字符,判別它是否為大寫(xiě)字母,如果是,將它轉(zhuǎn)換成小寫(xiě)字母;如果不是,不轉(zhuǎn)換。果是,將它轉(zhuǎn)換成小寫(xiě)字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。然后輸出最后得到的字符。#include using namespace std;int main( ) char ch; cinch; ch=(ch=a & ch=z)?(ch+32):ch; /判別判別ch是否大寫(xiě)字母,是否大寫(xiě)字母,是則轉(zhuǎn)換是則轉(zhuǎn)換 coutchendl; return 0;switch語(yǔ)句是多分支

47、選擇語(yǔ)句,用來(lái)實(shí)現(xiàn)多分支選語(yǔ)句是多分支選擇語(yǔ)句,用來(lái)實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。擇結(jié)構(gòu)。它的一般形式如下:它的一般形式如下:switch(表達(dá)式)(表達(dá)式) case 常量表達(dá)式常量表達(dá)式1:語(yǔ)句:語(yǔ)句1 case 常量表達(dá)式常量表達(dá)式2:語(yǔ)句:語(yǔ)句2 . case 常量表達(dá)式常量表達(dá)式n:語(yǔ)句:語(yǔ)句n default:語(yǔ)句:語(yǔ)句n+1 3.9 多分支選擇結(jié)構(gòu)和多分支選擇結(jié)構(gòu)和switch 語(yǔ)句語(yǔ)句例如,要求按照考試成績(jī)的等級(jí)打印出百分制分?jǐn)?shù)例如,要求按照考試成績(jī)的等級(jí)打印出百分制分?jǐn)?shù)段,可以用段,可以用switch語(yǔ)句實(shí)現(xiàn):語(yǔ)句實(shí)現(xiàn):switch(grade) case a: cout85100n;

48、 case b: cout7084n; case c: cout6069n; case d: cout60n; default : couterrorn; 說(shuō)明:說(shuō)明:(1) switch后面括號(hào)內(nèi)的后面括號(hào)內(nèi)的“表達(dá)式表達(dá)式”,允許為任何類型。,允許為任何類型。(2) 當(dāng)當(dāng)switch表達(dá)式值與某一個(gè)表達(dá)式值與某一個(gè)case子句中的常量表達(dá)式的子句中的常量表達(dá)式的值相匹配時(shí),執(zhí)行此值相匹配時(shí),執(zhí)行此case子句中的語(yǔ)句,若所有的子句中的語(yǔ)句,若所有的case子句子句中的值都不能與中的值都不能與switch表達(dá)式的值匹配,就執(zhí)行表達(dá)式的值匹配,就執(zhí)行default子句子句的內(nèi)嵌語(yǔ)句。的內(nèi)嵌語(yǔ)句

49、。(3) 每一個(gè)每一個(gè)case表達(dá)式的值必須互不相同,否則就表達(dá)式的值必須互不相同,否則就會(huì)出現(xiàn)互相矛盾的現(xiàn)象(對(duì)表達(dá)式的同一個(gè)值,有會(huì)出現(xiàn)互相矛盾的現(xiàn)象(對(duì)表達(dá)式的同一個(gè)值,有兩種或多種執(zhí)行方案)。兩種或多種執(zhí)行方案)。(4) 各個(gè)各個(gè)case和和default的出現(xiàn)次序不影響執(zhí)行結(jié)果的出現(xiàn)次序不影響執(zhí)行結(jié)果。例如,可以先出現(xiàn)例如,可以先出現(xiàn)“default:”,再出現(xiàn),再出現(xiàn)“case d:”,然后是,然后是“case a:”。(5) 執(zhí)行完一個(gè)執(zhí)行完一個(gè)case子句后,流程控制轉(zhuǎn)移到下一子句后,流程控制轉(zhuǎn)移到下一個(gè)個(gè)case子句繼續(xù)執(zhí)行子句繼續(xù)執(zhí)行?!癱ase常量表達(dá)式常量表達(dá)式”只是起

50、只是起語(yǔ)句標(biāo)號(hào)作用語(yǔ)句標(biāo)號(hào)作用,并不是在該處進(jìn)行條件判斷并不是在該處進(jìn)行條件判斷。在執(zhí)。在執(zhí)行行switch語(yǔ)句時(shí),根據(jù)語(yǔ)句時(shí),根據(jù)switch表達(dá)式的值找到與之表達(dá)式的值找到與之匹配的匹配的case子句,就從此子句,就從此case子句開(kāi)始執(zhí)行下去,子句開(kāi)始執(zhí)行下去,不再進(jìn)行判斷。例如,上面的例子中,若不再進(jìn)行判斷。例如,上面的例子中,若grade的的值等于值等于a,則將連續(xù)輸出:,則將連續(xù)輸出: 85100 7084 6069 60 error因此,應(yīng)該在執(zhí)行一個(gè)因此,應(yīng)該在執(zhí)行一個(gè)case子句后,使流程跳出子句后,使流程跳出switch結(jié)構(gòu),即終止結(jié)構(gòu),即終止switch語(yǔ)句的執(zhí)行語(yǔ)句的執(zhí)

51、行??梢杂靡?。可以用一個(gè)個(gè)break語(yǔ)句語(yǔ)句來(lái)達(dá)到此目的。將上面的來(lái)達(dá)到此目的。將上面的switch結(jié)構(gòu)結(jié)構(gòu)改寫(xiě)如下:改寫(xiě)如下:switch(grade) case a: cout85100n;break; case b: cout7084n;break; case c: cout6069n;break; case d: cout60n;break; default : couterrorn;break; 最后一個(gè)子句(最后一個(gè)子句(default)可以不加)可以不加break語(yǔ)句語(yǔ)句。如。如果果grade的值為的值為b,則只輸出,則只輸出“7084”。流程圖見(jiàn)。流程圖見(jiàn)圖圖3.7。圖圖3.7

52、在在case子句中雖然包含一個(gè)以上執(zhí)行語(yǔ)句,但可以子句中雖然包含一個(gè)以上執(zhí)行語(yǔ)句,但可以不必用花括號(hào)括起來(lái),會(huì)自動(dòng)順序執(zhí)行本不必用花括號(hào)括起來(lái),會(huì)自動(dòng)順序執(zhí)行本case子句子句中所有的執(zhí)行語(yǔ)句。中所有的執(zhí)行語(yǔ)句。(6) 多個(gè)多個(gè)case可以共用一組執(zhí)行語(yǔ)句,可以共用一組執(zhí)行語(yǔ)句,如如 . case a: case b: case c: cout60n; .當(dāng)當(dāng)grade的值為的值為a、b或或c時(shí)都執(zhí)行同一組語(yǔ)句。時(shí)都執(zhí)行同一組語(yǔ)句。例例3.8 編寫(xiě)程序,判斷某一年是否為閏年。編寫(xiě)程序,判斷某一年是否為閏年。#include using namespace std;int main( ) int

53、 year; bool leap; coutyear; /輸入年份輸入年份 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; /是閏年,令是閏年,令le

54、ap=true3.10 編寫(xiě)選擇結(jié)構(gòu)的程序編寫(xiě)選擇結(jié)構(gòu)的程序 else /年份不能被年份不能被4整除肯定不是閏年整除肯定不是閏年 leap=false; /若為非閏年,令若為非閏年,令leap=false if (leap) coutyear is ; /若若leap為真,就輸出年份和為真,就輸出年份和“是是” else coutyear is not ; /若若leap為真,就輸出年份和為真,就輸出年份和“不是不是” cout a leap year.endl; /輸出輸出“閏年閏年” return 0;運(yùn)行情況如下:運(yùn)行情況如下: 2005 2005 is not a leap year.

55、 1900 1900 is npt a leap year. 例例3.9 運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)。路程運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)。路程(s)越遠(yuǎn),每越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下: s250km 沒(méi)有折扣沒(méi)有折扣 250s500 2折扣折扣 500s1000 5折扣折扣 1000s2000 8折扣折扣 2000s3000 10折扣折扣 3000s 15折扣折扣設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為p(price的縮寫(xiě)的縮寫(xiě)),貨物重為貨物重為w(wright的縮寫(xiě)的縮寫(xiě)),距離為,折扣為,距離為,折扣為d(discount的縮寫(xiě)的縮寫(xiě)),則總運(yùn)費(fèi),則總運(yùn)費(fèi)

56、f(freight的縮寫(xiě)的縮寫(xiě))的計(jì)的計(jì)算公式為算公式為 f = p * w * s * (1 - d)圖圖3.8據(jù)此寫(xiě)出程序如下:據(jù)此寫(xiě)出程序如下: #include using namespace std;int main( )int c,s; float p,w,d,f; coutpws; 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

57、8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; f=p*w*s*(1-d/100.0); coutfreight=fendl; return 0;運(yùn)行情況如下:運(yùn)行情況如下:please enter p,w,s:100 20 300 freight=588000在人們所要處理的問(wèn)題中常常遇到需要反復(fù)執(zhí)行某在人們所要處理的問(wèn)題中常常遇到需要反復(fù)執(zhí)行某一操作的情況。這就需要用到循環(huán)控制。許多應(yīng)用一操作的情況。這就需要用到循環(huán)控制。許多應(yīng)用程序都包含循環(huán)。程序都包含循環(huán)。順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)是

58、結(jié)構(gòu)化程序設(shè)計(jì)的是結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu),是各種復(fù)雜程種基本結(jié)構(gòu),是各種復(fù)雜程序的基本構(gòu)造單元。序的基本構(gòu)造單元。因此程序設(shè)計(jì)者必須熟練掌握因此程序設(shè)計(jì)者必須熟練掌握選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的概念及使用方法。選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的概念及使用方法。3.11 循環(huán)結(jié)構(gòu)和循環(huán)語(yǔ)句循環(huán)結(jié)構(gòu)和循環(huán)語(yǔ)句while語(yǔ)句的一般形式如下:語(yǔ)句的一般形式如下:while (表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句其作用是:其作用是: 當(dāng)指定的條件為真當(dāng)指定的條件為真(表達(dá)式為非表達(dá)式為非0)時(shí),時(shí),執(zhí)行執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。其流程圖見(jiàn)圖語(yǔ)句中的內(nèi)嵌語(yǔ)句。其流程圖見(jiàn)圖3.9。其特點(diǎn)是:其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句先判

59、斷表達(dá)式,后執(zhí)行語(yǔ)句。while循循環(huán)稱為環(huán)稱為當(dāng)型循環(huán)當(dāng)型循環(huán)。圖圖3.93.11.1 用用while語(yǔ)句構(gòu)成循環(huán)語(yǔ)句構(gòu)成循環(huán)例例3.10 求求1+2+3+100。用流程圖表示算法,見(jiàn)圖用流程圖表示算法,見(jiàn)圖3.10。根據(jù)流程圖寫(xiě)出程序:根據(jù)流程圖寫(xiě)出程序:#include using namespace std;int main( )int i=1,sum=0; while (i=100) sum=sum+i; i+; coutsum=sumendl;運(yùn)行結(jié)果為運(yùn)行結(jié)果為sum=5050 圖圖3.10需要注意:需要注意:(1) 循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括循環(huán)體如果包含一個(gè)以上

60、的語(yǔ)句,應(yīng)該用花括號(hào)括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)。號(hào)括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)。如果不加花括號(hào),如果不加花括號(hào),則則while語(yǔ)句的范圍只到語(yǔ)句的范圍只到while后面第一個(gè)分號(hào)處。后面第一個(gè)分號(hào)處。(2) 在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。do-while語(yǔ)句的特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷循語(yǔ)句的特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。其一般形式為環(huán)條件是否成立。其一般形式為do 語(yǔ)句語(yǔ)句 while (表達(dá)式表達(dá)式);它是這樣執(zhí)行的:它是這樣執(zhí)行的:先執(zhí)行一次指定的語(yǔ)句先執(zhí)行一次指定的語(yǔ)句(即循環(huán)即循環(huán)體體),然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真真”) 時(shí),返回重新執(zhí)行循環(huán)體語(yǔ)句,如此反復(fù),時(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論