2048課件-第一講語言基礎(chǔ)_第1頁
2048課件-第一講語言基礎(chǔ)_第2頁
2048課件-第一講語言基礎(chǔ)_第3頁
2048課件-第一講語言基礎(chǔ)_第4頁
2048課件-第一講語言基礎(chǔ)_第5頁
已閱讀5頁,還剩123頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一講C++語言基礎(chǔ)中國地質(zhì)大學(xué)(

)計算機學(xué)院面

象程序設(shè)計(A)聯(lián)系郵箱:

作業(yè)郵箱:2課程主要內(nèi)容第一部分:面

象程序設(shè)計與C++語言程序設(shè)計與C++語言基礎(chǔ)數(shù)組、指針與字符串函數(shù)類與對象繼承與多態(tài)流與異常處理標(biāo)準(zhǔn)模板庫3課程主要內(nèi)容第二部分:基于MFC的面象程序設(shè)計等Windows程序設(shè)計基礎(chǔ)MFC程序設(shè)計基礎(chǔ)基于文檔/視圖結(jié)構(gòu)的程序利用CDC實現(xiàn)繪圖程序用戶交互對象—菜單、框和常用控件動態(tài)

庫與靜態(tài)

庫COM組件與ActiveX控件4課程主要內(nèi)容第三部分:跨平臺UI的面象程序設(shè)計基于wxWidget的程序設(shè)計基于Qt的程序設(shè)計選學(xué)內(nèi)容,不在考試范圍之內(nèi)?。。?課程安排授課:11-18,每周2次:–周三,5,6節(jié)課,綜合樓111–周五,3,4節(jié)課,綜合樓111實

共5次:14-18周綜合樓315作業(yè):5次,學(xué)委郵件提交答疑:平時通過郵件;北區(qū)計算機學(xué)院1136考核方式閉卷

考試平時成績10%作業(yè)成績30%考試成績60%7本章主要內(nèi)容1.程序設(shè)計與C++語言簡介2.基本數(shù)據(jù)類型和表達(dá)式3.數(shù)據(jù)的輸入與輸出4.算法的基本控制結(jié)構(gòu)5.自定義數(shù)據(jù)類型1.程序設(shè)計與C++語言9程序設(shè)計及其語言程序設(shè)計方法演變C++語言簡介C++語言的產(chǎn)生C++語言的特點C++語言字符集C++的詞法記號1.1

程序設(shè)計及其語言1936年圖靈(Turing)

重要

《論可計算數(shù)及其在判定問題上的應(yīng)用》1939年阿塔納索夫(Atanasoff)和(

Berry)在愛荷華州立大學(xué)制造了ABC計算機(Atanasoff-Berry

Computer),世界上第一臺電腦埃尼(ENIAC)在

賓夕法尼亞大學(xué)誕生。由莫齊來(Mauchly)和愛克特(Eckert)發(fā)明10程序設(shè)計是采用某種編程語言,為了解決某個特定領(lǐng)域的問題,而使用某種設(shè)計方法編寫計算機程序的活動。包括4個層次:算法的設(shè)計與分析程序設(shè)計語言程序設(shè)計方法學(xué)程序設(shè)計環(huán)境與工具111.2

程序設(shè)計方法的演變結(jié)構(gòu)化程序設(shè)計面

象程序設(shè)計基于組件的程序設(shè)計面向Agent的程序設(shè)計12結(jié)構(gòu)化程序設(shè)計誕生于20世紀(jì)60年代,到了20世紀(jì)80年代已經(jīng)成為程序設(shè)計的主流。思想是:①程序?qū)嶓w主要由算法和數(shù)據(jù)結(jié)構(gòu)組成;②其分析與設(shè)計方法采用的是“自頂向下,逐步求精”的程序設(shè)計方法;③在程序的流程控制結(jié)構(gòu)上遵循“單 /單出口”的理念;④任何程序的結(jié)構(gòu)都是由順序、選擇與循環(huán)來完成的,取消了goto語句。結(jié)構(gòu)化程序設(shè)計面

象程序設(shè)計是對結(jié)構(gòu)化程序設(shè)計的繼承和發(fā)展,其主要的改變是把反映事物的屬性與

該屬性的方法組裝成一體,形成一個實體對象。屬性是指某對象的屬性,方法是指某對象的行為或動作。相同類型的對象構(gòu)成一個類,對象是類的一個實例。類是構(gòu)成面

象程序設(shè)計的基石。面象程序設(shè)計Used

for

simulating

system

behavior

in

the

late

1960s,

SIMULA

was

theobject-oriented

language.

In

the

1970s,

Xerox's

Smalltalk

was

theobject-oriented

programmingObject-oriented

programming

(OOP)

:is

a

programming

paradigm

that

represents

concepts

as

"objects"

that

have

data

fields(attributes

that

describe

the

object)

and

associatedprocedures

known

as

methods.

Objects,

which

areusually

instances

of

classes,

are

used

to

interact

with

oneanother

to

design

applications

and

computer

programs.OOP

Languages:Used

for

simulating

system

behavior

inthe

late

1960s,

SIMULA

was

the

object-oriented

language.Today,

C++

and

Java

are

the

major

OOP

languages,

while

C#,Visual

Basic.NET,

Python

and

JavaScript

are

also

popular.ACTOR

and

Eiffel

were

earlier

OOP

languages基于組件的程序設(shè)計是面

象程序設(shè)計的延伸,強調(diào)在不同平臺、不同程序設(shè)計語言的開發(fā)環(huán)境下進(jìn)行開發(fā)和重用。如COM組件、.Net組件、Java

Bean等。組件是指系統(tǒng)中明確辨識的構(gòu)成部分,是可以被復(fù)用的

實體。它由組件規(guī)約和組件實現(xiàn)兩部分組成,其中組件規(guī)約主要由組件模型來進(jìn)行描述。當(dāng)前組件的設(shè)計采用的模型主要有和?;诮M件的程序設(shè)計Agent( )是一種比圖靈機理論更接近現(xiàn)實的計算模型,它將具有智能化的各

系統(tǒng)部件系統(tǒng)地組合起來,建立起高度智能的實體。在面向

程序設(shè)計中,程序是由多個具有獨立功能的Agent組成的,其關(guān)鍵是設(shè)計每一個具有智能行為的Agent實體。Agent是一個被密封的計算機系統(tǒng),它能被放置在某個環(huán)境中,并在那個環(huán)境中變化和自治行動,以達(dá)到它的設(shè)計目標(biāo)。面向AGENT的程序設(shè)計181.3 C++語言簡介C++語言的產(chǎn)生C++語言的特點C++語言的字符集C++語言的詞法記號TIOBE

programming

community

index1.3.1

C++語言的產(chǎn)生C++是從C語言發(fā)展演變而來的,首先是一個更好的C。引入了類的機制,最初的C++被稱為"帶類的C"。1983年正式取名為C++。C++語言的標(biāo)準(zhǔn)化工作從

開始,于1994年制定了ANSIC++標(biāo)準(zhǔn)草案。以后又經(jīng)過不斷完善,成為C++

03。C++11

was

published

as

ISO/IEC14882:2011

in

September

2011C++語言概述202(百科C++/C%2B%2B)1Visual

C++Visual

Studio中的Visual

C++不僅是一個C++編譯器,而且是一個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(Integrated

DevelopmentEnvironment,

IDE)。Visual

C++由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類向?qū)lassWizard等開發(fā)工具。這些組件通過一個名為

Developer

Studio的組件集成為和諧的開發(fā)環(huán)境。22建立Win32控制臺程序(打印

o)建立Win32

Application

(打印

o)建立MFC應(yīng)用程序(打印

o)用Visual

C++建立工程本課程涉及的三種主要工程類型關(guān)于講義配套例子程序的說明每個例子的 為:章節(jié)號+例子序號,如第3章第5個例子記為3_5.對于不涉及MFC的所有的例子放在一個工程運行方式:輸入 直接運行1.3.2

C++的特點全面兼容C它保持了C的簡潔、高效和接近匯編語言等特點對C的類型系統(tǒng)進(jìn)行了 和擴充–C++也支持面向過程的程序設(shè)計,不是一個純正的面 象的語言支持面

象的方法C++語言概述26C++程序?qū)嵗?-1C++版

oWorld#include

<iostream>cout<<"cout<<"o!\n";e

\to

c++!\n";}C++語void

main(void)o

{概述C版

o

World#include

<stdio.h>void

main(void){printf("printf(“o!\n");e

\to

c++!\n");}27C++程序?qū)嵗\行結(jié)果:o!e

to

c++!C++語言概述281.3.3

C++字符集29大小寫的英文字母:A~Z,a~z數(shù)字字符:0~9特殊字符:空格

!

#

%

^

&

*_(下劃線)+

=

-

~<

>

/\'";.

,

()[]{}C++語言概述1.3.4

詞法記號關(guān)鍵字C++預(yù)定義的單詞(見下頁)。標(biāo)識符程序員 的單詞,它命名程序正文中的一些實體。文字

在程序中直接使用符號表示的數(shù)據(jù)操作符

用于實現(xiàn)各種運算的符號。分隔符

用于分隔各個詞法記號或程序正文:(

{}

,

:

;空白:空格、制表符(TAB鍵產(chǎn)生的字

符)、換行符(Enter鍵所產(chǎn)生的字符)和注釋的總稱。C++語言概述30C+

關(guān)鍵字共 個,新增關(guān)鍵字:alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert、thread_local;32標(biāo)識符的構(gòu)成規(guī)則以大寫字母、小寫字母或下劃線(_)開始??梢杂梢源髮懽帜?、小寫字母、下劃線(_)或數(shù)字0~9組成。大寫字母和小寫字母代表不同的標(biāo)識符。C++語言概述332.基本數(shù)據(jù)類型和表達(dá)式2.1數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實型數(shù)據(jù)字符型數(shù)據(jù)布爾型數(shù)據(jù)*類型轉(zhuǎn)換2.2運算符與表達(dá)式算術(shù)運算符與算術(shù)表達(dá)式賦值運算符與賦值表達(dá)式逗號運算與逗號表達(dá)關(guān)系運算與關(guān)系表達(dá)式邏輯運算與邏輯表達(dá)式條件運算與條件表達(dá)式sizeof運算位運算–運算優(yōu)先級別與隱含轉(zhuǎn)換2.1.1數(shù)據(jù)類型——常量與變量#include<iostream.h>void

main(void){const

int

PRICE=30;int

num,total;float

v

,r,h;num=10;total=num*PRICE;cout<<total

<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v

<<endl;}常量變量變量先定義后使用符號常量34基本數(shù)據(jù)類型和表達(dá)式變量的

類型<auto類型>

<變量類型>

<變量列表>類–屬于一時性,其 空間可以被若干變量多次覆蓋使用。register

類–存放在通用寄存器中。extern

類–

在所有函數(shù)和程序段中都可

。static

類–在內(nèi)存中是以固定地址存放的,在整個程序運行期間都有效?;緮?shù)據(jù)類型和表達(dá)式35數(shù)據(jù)類型——變量賦初值36例:int

a=3;double

f=3.56;char

c='a';intc=5;基本數(shù)據(jù)類型和表達(dá)式37voidmain(void){const

int

PRICE=30;int

num,total;float

v

,r,h;num=10;total=num*PRICE;cout<<total

<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v

<<endl;}2.1.2數(shù)據(jù)類型——整型數(shù)據(jù)#include<iostream.h>整型常量shortunsigned

short2字節(jié)int、unsigned

int4字節(jié)longunsigned

long4字節(jié)整型變量整型變量基本數(shù)據(jù)類型和表達(dá)式38數(shù)據(jù)類型—整型數(shù)據(jù)及取值范圍類型

說明符

位數(shù)

數(shù)值范圍shortintlong163232-32768~32767-231~(231-1)-231~(231-1)短整

基本

長整

無符號unsigned

shortunsigned

[int]unsigned

longunsigned

long

long16

0~6553532 0~(232-1)32 0~(232-1)64 0~(264-1)基本數(shù)據(jù)類型和表達(dá)式39{const

float

PI=3.14f;int

num,total;float

v

,r,h;num=10;total=num*PI;cout<<total<<endl;r=2.5;h=3.2;v=PI*r*r*h;cout<<v<<endl;}2.1.3

數(shù)據(jù)類型——實型數(shù)據(jù)#include<iostream.h>void

main(void)實型常量缺省為double型后綴

F(或

f)為float型后綴

L(或

l)為long

double型基本數(shù)據(jù)類實型變量float 4字節(jié)型

3.4×10±38和

7位有效數(shù)字double

8字節(jié)表

1.7×10±308達(dá)

15位有效數(shù)字式long

double8字節(jié)1.7×10±30815位有效數(shù)字2.1.4

數(shù)據(jù)類型–單引號括起來的一個字符,如:'a','D','?','$'–用來存放字符常量例:char

c1,c2;c1='a';c2='A';–

以ASCII碼 ,占1字節(jié),用7個二進(jìn)制位基——字符型數(shù)據(jù)(一)*數(shù)

字符常量據(jù)類

字符變量型和表達(dá)式

字符數(shù)據(jù)在內(nèi)存中的

形式40例:"CHINA""a"'a'所以:char

c;c="a";CHINA\0a\0a數(shù)據(jù)類型——字符型數(shù)據(jù)(二)字符數(shù)據(jù)的使用方法字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運算。字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。字符串常量41基本數(shù)據(jù)類型和表達(dá)式2.1.5數(shù)據(jù)類型——布爾型數(shù)據(jù)*42布爾型變量的說明:例:bool

flag;布爾型數(shù)據(jù)的取值:只有false

和true

兩個值基本數(shù)據(jù)類型和表達(dá)式2.1.6數(shù)據(jù)類型—不同類型數(shù)據(jù)混合運算時的類型轉(zhuǎn)換43器會自動進(jìn)行類型轉(zhuǎn)換。淆,應(yīng)盡量使用同種類型數(shù)據(jù)。例如:float

c;int

a,b;c=float(a)/float(b);或c=(float)a/(float)b;基*數(shù)

不同類型數(shù)據(jù)進(jìn)行混合運算時,C++編譯據(jù)類

為了避免不同的數(shù)據(jù)類型在運算中出現(xiàn)混型和

可以采用強制類型轉(zhuǎn)換:表達(dá)式2.2.1算術(shù)運算符與算術(shù)表達(dá)式基本算術(shù)運算符+

-

*

/%(取余)(若整數(shù)相除,結(jié)果取整)優(yōu)先級與結(jié)合性先乘除,后加減,同級自左至右

++,--(自增、自減)例:i++;

j--;基本數(shù)據(jù)類型和表達(dá)式442.2.2賦值運算符和賦值表達(dá)式簡單的賦值運算符"="45舉例:n=n+5類型:等號左邊對象的類型值:等號左邊對象被賦值后的值基本數(shù)據(jù)類型和表達(dá)式2.2.2賦值運算符和賦值表達(dá)式復(fù)合的賦值運算符46有10種復(fù)合運算符:+=,

-=,

*=,

/=,

%=,<<=,>>=,&=,^=,|=例:a+=3

等價于

a=a+3x*=y+8

等價于

x=x*(y+8)基本數(shù)據(jù)類型和表達(dá)式賦值運算符和賦值表達(dá)式——賦值表達(dá)式舉例47a=5a=b=c=5a=5+(c=6)表達(dá)式值為5表達(dá)式值為5,a,b,c均為5表達(dá)式值為11,a為11,c為6a=(b=4)+(c=6)表達(dá)式值為10,a為10,b為4,c為6a=(b=10)/(c=2)表達(dá)式值為5,a為5,b為10,c為2a+=a-=a*a

相當(dāng)于:

a=a+(a=a-a*a)基本數(shù)據(jù)類型和表達(dá)式賦值表達(dá)式與賦值語句48格式:賦值表達(dá)式;賦值語句與賦值表達(dá)式的區(qū)別:賦值表達(dá)式可以包含在其它表達(dá)式中,而賦值語句不可。例:if((a=b)>0)

t=a;不可寫為:if((a=b;)>0)

t=a;2.2.3逗號運算和逗號表達(dá)式49格式:表達(dá)式1,表達(dá)式2求解順序及結(jié)果:先求解1,再求解2,最終結(jié)果為表達(dá)式2的值例a=3*5,a*4

最終結(jié)果為60基本數(shù)據(jù)類型和表達(dá)式2.2.4關(guān)系運算與關(guān)系表達(dá)式50關(guān)系運算是比較簡單的一種邏輯運算,優(yōu)先次序為:<

<=

>

>=

== !=優(yōu)先級相同(高) 優(yōu)先級相同(低)關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式其結(jié)果類型為bool,值只能為true

或false。例如:a>b,c<=a+b,x+y==3基本數(shù)據(jù)類型和表達(dá)式2.2.5邏輯運算與邏輯表達(dá)式51邏輯運算符:!(非)優(yōu)先次序:高&&(與)

||(或)→

低邏輯表達(dá)式例如:(a>b)&&(x>y)其結(jié)果類型為bool,值只能為true或false。基本數(shù)據(jù)類型和表達(dá)式2.2.6條件運算符與條件表達(dá)式52一般形式:表達(dá)式1?表達(dá)式2:表達(dá)式3表達(dá)式1必須是bool類型執(zhí)行順序:–先求解表達(dá)式1,–若表達(dá)式1的值為true,則求解表達(dá)式2,表達(dá)式2的值為最終結(jié)果–若表達(dá)式1的值為false,則求解表達(dá)式3,表達(dá)式3的值為最終結(jié)果基本數(shù)據(jù)類型和表達(dá)式條件運算符與條件表達(dá)式53注意:–條件運算符優(yōu)級高于賦值運算符,低于邏輯運算符–結(jié)合方向為自右至左–表達(dá)式2、3的類型可以不同,條件表達(dá)式的最終類型為2和3中較高的類型?;緮?shù)據(jù)類型和表達(dá)式2.2.7

sizeof

操作符54語法形式sizeof(類型名)或sizeof(表達(dá)式)結(jié)果值:“類型名”所指定的類型或“表達(dá)式”的結(jié)果類型所占的字節(jié)數(shù)?;緮?shù)據(jù)類型和表達(dá)式3: 0

000

001

15:(&)

0

00

0

01

0

13&5: 0

000

000

1用途:將某一位置0,其它位不變。例如:將char

型變量a

的最低位置0:a=a

&

0376;取指定位。例

char

c;

int

a;取出a

的低字節(jié),置于c

中:c=a

&

0377;基

2.2.8位運算——按位與(&)本

運算規(guī)則數(shù)

將兩個運算量的每一個位進(jìn)行邏輯與操作據(jù)

舉例:計算3

&

5類型和表達(dá)式55位運算——按位或(|)56運算規(guī)則將兩個運算量的每一個位進(jìn)行邏輯或操作舉例:計算3

|

53: 0

0

0

0

0

0

1

15:(|)

0

0

0

0

0

10

13|5: 0

000

011

1用途:將某些位置1,其它位不變。例如:將int

型變量a

的低字節(jié)置1

:a

=a

|0xff;基本數(shù)據(jù)類型和表達(dá)式位運算——按位異或(^)57運算規(guī)則–兩個操作數(shù)進(jìn)行異或:若對應(yīng)位相同,則結(jié)果該位為0,若對應(yīng)位不同,則結(jié)果該位為1,舉例:計算071^052071:052:071^052

:0

0

1

1

1

0

0

1(^)

001

010

1

00

0

0

1

0

0

1

1基本數(shù)據(jù)類型和表達(dá)式位運算——按位異或(^)58用途:–使特定位翻轉(zhuǎn)(與0異或保持原值,與1異或取反)例如:要使01111010

低四位翻轉(zhuǎn):0

1

1

1

1

0

1

0(^)

0

0

0

01

11101

110

101基本數(shù)據(jù)類型和表達(dá)式位運算——取反(~)59單目運算符:對一個二進(jìn)制數(shù)按位取反。例:025:0000000000010101~025:1111111111101010基本數(shù)據(jù)類型和表達(dá)式位運算——移位舍棄。左移運算(<<)左移后,低位補0,右移運算(>>)右移后,低位:舍棄:無符號數(shù):補0有符號數(shù):補“符號位”基本數(shù)據(jù)類型和表達(dá)式602.2.9運算符優(yōu)先級::,

->,

.,

(),

[]++,--,sizeof*,

/,

%+,-==,

!=&,|,~,^!,&&,

||?:賦值運算逗號運算低61高基本數(shù)據(jù)類型和表達(dá)式括號++,--,sizeof算術(shù)運算符關(guān)系運算符位運算符號邏輯運算符條件運算符賦值運算符逗號運算符2.2.10混合運算時數(shù)據(jù)類型的轉(zhuǎn)換——隱含轉(zhuǎn)換一些二元運算符(算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符和賦值運算符)要求兩個操作數(shù)的類型一致。在算術(shù)運算和關(guān)系運算中如果參與運算的操作數(shù)類型不一致,編譯系統(tǒng)會自動對數(shù)據(jù)進(jìn)行轉(zhuǎn)換(即隱含轉(zhuǎn)換),基本原則是將低類型數(shù)據(jù)轉(zhuǎn)換為高類型數(shù)據(jù)。char

short

int

unsigned

long unsigned

long

float

double低

高基本數(shù)據(jù)類型和表達(dá)式62混合運算時數(shù)據(jù)類型的轉(zhuǎn)換——隱含轉(zhuǎn)換63基本數(shù)

參與運算的操作數(shù)必須是bool型,如果操作數(shù)是其據(jù)它類型,編譯系統(tǒng)會自動將非0數(shù)據(jù)轉(zhuǎn)換為true,0類轉(zhuǎn)換為false。型

位運算的操作數(shù)必須是整數(shù),當(dāng)二元位運算的操和作數(shù)是不同類型的整數(shù)時,也會自動進(jìn)行類型轉(zhuǎn)表換,達(dá)

賦值運算要求左值與右值的類型相同,若類型不式同,編譯系統(tǒng)會自動律將右值轉(zhuǎn)換為左值的類型?;旌线\算時數(shù)據(jù)類型的轉(zhuǎn)換——強制類型轉(zhuǎn)換64語法形式:類型說明符(表達(dá)式)或(類型說明符)表達(dá)式強制類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型?;緮?shù)據(jù)類型和表達(dá)式3.簡單的輸入、輸出*65向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出例:int

x;cout<<“x=“<<x;從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)輸入例:int

x;cin>>x;順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)664.算法的基本控制結(jié)構(gòu)如何解決分支問題?67例1-2輸入一個年份,判斷是否閏年。算法的基本控制結(jié)構(gòu)#include

<iostream.h>voidmain(void){

int

year;bool

IsLeapYear;cout

<<

"Enter

the

year:

";cin

>>

year;IsLeapYear

=

((year

%

4

==

0

&&year

%

100

!=

0)||(year

%

400

==

0));if(IsLeapYear)cout

<<

year

<<

"

is

a

leap

year"<<endl;elsecout

<<

year

<<

"

is

not

a

leap

year"<<

endl;}運行結(jié)果:Enter

the

year:

20002000

is

a

leap

year70if

(表達(dá)式)

語句例:if

(x>y)

cout<<x;if

(表達(dá)式)

語句1

else

語句2例:if

(x>y)

cout<<x;else

cout<<y;if

(表達(dá)式1)

語句1elseif(表達(dá)式2)語句2else…if(表達(dá)式3)語句else

語句nif語句——三種形式算法的基本控制結(jié)構(gòu)71如何解決多分之問題?例1-3輸入兩個整數(shù),比較兩個數(shù)的大小。算法的基本控制結(jié)構(gòu)#include<iostream.h>void

main(

){int

x,y;cout<<"Enter

x

and

y:";cin>>x>>y;if

(x!=y)if(x>y)cout<<"x>y"<<endl;elsecout<<"x<y"<<endl;elsecout<<"x=y"<<endl;}運行結(jié)果1:Enter

x

and

y:5

8x<y運行結(jié)果2:Enter

x

and

y:88x=y運行結(jié)果3:Enter

x

and

y:12

8x>yelseif

(

)if

(

)

語句1else

語句2elseif

(

)

語句3語句4語句1、2、3、4

可以是復(fù)合語句,每層的if與else

配對,或用{}來確定層次關(guān)系。if語句——嵌套74算法

一般形式的基本控制結(jié)

注意構(gòu)特殊的多分支結(jié)構(gòu)75例1-4輸入一個0~6的整數(shù),轉(zhuǎn)換成星期輸出。算法的基本控制結(jié)構(gòu)#include

<iostream.h>void

main(void){ int

day;cin

>>

day;switch

(day){case

0:case

1:case

2:cout

<<

"Sunday"

<<

endl;break;cout

<<"Monday"

<<

endl;break;cout

<<"Tuesday"

<<

endl;break;case

3:case

4:case

5:case

6:cout

<<

"Wednesday"

<<

endl;break;cout

<<

"Thursday"

<<

endl;break;cout

<<

"Friday"

<<

endl;break;cout

<<

"Saturday"

<<

endl;break;default:cout

<<

"Day

out

of

range

Sunday

..Saturday"<<

endl;break;}}一般形式switch (表達(dá)式)常量表達(dá)式

1:語句1{

casecase常量表達(dá)式

2:語句2┆case

常量表達(dá)式

n:語句ndefault

:

語句n+1}switch語句標(biāo)號,由此開始順序執(zhí)行。因此,每個case分支最后應(yīng)該加break語句。每個常量表達(dá)式的值不能相同,次序不影響執(zhí)行結(jié)果??梢允嵌鄠€語句,但不必用{}??梢允钦汀⒆址?、枚舉型算法的基本控制結(jié)

執(zhí)行順序以case中的常量表達(dá)式值為構(gòu)78case分支可包含多個語句,且不用{}。79表達(dá)式、判斷值都是int型或char型。若干分支執(zhí)行內(nèi)容相同可共用一組語句。算使用switch語句應(yīng)注意的問題法的基本控制結(jié)構(gòu)如何有效地完成重復(fù)工作80例1-5求自然數(shù)1~10之和分析:本題需要用累加算法,累加過程是一個循環(huán)過程,可以用while語句實現(xiàn)。算法的基本控制結(jié)構(gòu)#include<iostream.h>void

main(

){int

i(1),

sum(0);while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}運行結(jié)果:sum=55while語句形式while(表達(dá)式)語句可以是復(fù)合語句,其中必須含有改變條件表達(dá)式值的語句。82執(zhí)行順序先判斷表達(dá)式的值,為true時,再執(zhí)行語句。算法的基本控制結(jié)構(gòu)先執(zhí)行循環(huán)體,后判斷條件的情況83例1-6輸入一個整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。算法的基本控制結(jié)構(gòu)#include

<iostream.h>void

main(void){int

n,

right_digit,

newnum

=

0;cout

<<

"Enter

the

number:";cin

>>

n;cout

<<

"The

number

in

reverse

order

is

";do{right_digit

=

n

%

10;cout

<<

right_digit;n

/=

10;}while

(n

!=

0);cout<<endl;}運行結(jié)果:Enter

the

number:

365The

number

in

reverse

order

is

56386do-while語句一般形式do語句可以是復(fù)合語句,其中必須含有改變條件表達(dá)式值的語句。while(表達(dá)式)執(zhí)行順序先執(zhí)行循環(huán)體語句,后判斷條件。表達(dá)式為true

時,繼續(xù)執(zhí)行循環(huán)體與while語句的比較:–While語句執(zhí)行順序先判斷表達(dá)式的值,為true時,再執(zhí)行語句算法的基本控制結(jié)構(gòu)對比下列程序(例1-7){int

i,

sum(0);cin>>i;while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}算程序1:法#include<iostream.h>的void

main()基本控制結(jié)構(gòu)程序2:#include<iostream.h>void

main(){int

i,

sum(0);cin>>i;do

{sum+=i;i++;}

while(i<=10)

;cout<<"sum="<<sum<<endl;}當(dāng)輸入i=11的時候:88for語句語法形式for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句循環(huán)前先求解非0時執(zhí)行循環(huán)體每次執(zhí)行完循環(huán)體后求解89算法的基本控制結(jié)構(gòu)例1-890輸入一個整數(shù),求出它的所有因子。算法的基本控制結(jié)構(gòu)#include<iostream.h>void

main(void){int

n,

k;cout

<<

"Enter

a

positive

integer:

";cin

>>

n;cout

<<

"Number "

<<

n

<<

"

Factors

";for

(k=1;

k

<=

n;

k++)if(n

%

k

==

0)cout

<<

k

<<

"

";cout

<<

endl;}運行結(jié)果1:Enter

a

positive

integer:

36Number36Factors1234

691218

36運行結(jié)果2:Enter

a

positive

integer:

7Number

7

Factors

1

7循環(huán)結(jié)構(gòu)的嵌套93#include<iostream.h>void

main(

){inti(1),a(0);for(;i<=5;i++){do{i++;a++;}while(i<3);i++;}cout<<a<<”,”<<i<<endl;}算法的基本控制結(jié)構(gòu)例1-9

編寫程序輸出以下圖案94*************************算法的基本控制結(jié)構(gòu)#include<iostream.h>void

main(){ int

i,j,n=4;for(i=1;i<=n;i++) //輸出前4行圖案{

for(j=1;j<=30;j++)cout<<''; //在圖案左側(cè)空30列for(j=1;j<=8-2*i;j++)cout<<'

';for(j=1;

j<=2*i-1

;j++)cout<<'*';cout<<endl;}for(i=1;i<=n-1;i++)

//輸出后3行圖案{

for(j=1;j<=30;j++)cout<<''; //在圖案左側(cè)空30列for(j=1;j<=7-2*i

;j++)cout<<'*';cout<<endl;}}循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)相互嵌套97算法

#include<iostream.h>的

void

main(

)基

{*

int

n;控

for(n=100;

n<=200;

n++)制

{結(jié)

if

(n%3!=0)構(gòu)

printf(“%d”,n);}}例1-10讀入一系列整數(shù),統(tǒng)計出正整數(shù)個數(shù)i和負(fù)整數(shù)個數(shù)j,讀入0則結(jié)束。分析:–需要讀入一系列整數(shù),但是整數(shù)個數(shù)不定,要在每次讀入之后進(jìn)行判斷,因此使用while循環(huán)最為合適。循環(huán)控制條件應(yīng)該是n!=0。由于要判斷數(shù)的正負(fù)并分別進(jìn)行統(tǒng)計,所以需要在循環(huán) 嵌入選擇結(jié)構(gòu)。算法的基本控制結(jié)構(gòu)98#include<iostream.h>void

main(

){int i=0,

j=0,

n;cout<<"請輸入若干整數(shù)(輸入0則結(jié)束):";cin>>n;while(

n!=0

){ if(n>0)

i+=1;if(n<0)j+=1;負(fù)整數(shù)個數(shù):cin>>n

;}cout<<"正整數(shù)個數(shù):"<<i<<""<<j<<endl;}break和continue語句100break語句使程序從循環(huán)體和switch語句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的下一條語句。不宜用在別處。continue

語句結(jié)束本次循環(huán),接著判斷是否執(zhí)行下一次循環(huán)。算法的基本控制結(jié)構(gòu)5.自定義數(shù)據(jù)類型101typedef語句枚舉類型結(jié)構(gòu)體*聯(lián)合類(見第四講)*typedef語句102為一個已有的數(shù)據(jù)類型另外命名語法形式typedef

已有類型名新類型名表;例如typedef

double

area,volume;typedef

int

natural;natural

i1,i2;area

a;volume

v;自定義數(shù)據(jù)類型枚舉類型—enum只要將需要的變量值一一列舉出來,便構(gòu)成了一個枚舉類型。枚舉類型的

形式如下:enum

枚舉類型名{變量值列表};例如:enum

weekday

{sun,mon,tue,wed,thu,fri,sat};自定義數(shù)據(jù)類型103104枚舉類型—enum枚舉類型應(yīng)用說明:

對枚舉元素按常量處理,不能對它們賦值。例如,不能寫:sun=0;枚舉元素具有缺省值,它們依次為:0,1,2,......。也可以在 時另行指定枚舉元素的值,如enum

weekday

{sun=7,mon=1,tue,wed,thu,fri,sat};枚舉值可以進(jìn)行關(guān)系運算。

整數(shù)值不能直接賦給枚舉變量,如需要將整數(shù)賦值給枚舉變量,應(yīng)進(jìn)行強制類型轉(zhuǎn)換。自定義數(shù)據(jù)類型105例1-11設(shè)某次體育比賽的結(jié)果有四種可能:勝(win)、負(fù)(lose)、平局(tie)、比賽取消(cancel),編寫程序順序輸出這四種情況。分析:由于比賽結(jié)果只有四種可能,所以可以

一個枚舉類型,

一個枚舉類型的變量來存放比賽結(jié)果。自定義數(shù)據(jù)類型#include

<iostream.h>enum

game_result

{WIN,

LOSE,

TIE,

CANCEL};int

main(

){game_result

result;enum

game_result

omit=

CANCEL;intcount;for

(count

=

WIN

;

count

<=

CANCEL

;

count++){result

=

(game_result)count;if(result

==

omit){cout

<<

"The

game

was

cancelled\n";}else{cout

<<

"The

game

was

played

";if

(result

==

WIN)cout

<<

"and

we

won!";if

(result

==

LOSE)cout

<<

"and

we

lost.";cout

<<"\n";}}return

0;}運行結(jié)果The

game

was

played

and

we

won!The

game

was

played

and

we

lost.The

game

was

playedThe

game

was

cancelled109例1-12口袋中有紅、黃、藍(lán)、白、黑五種顏色的球若干個。每次從口袋中取出3個不同顏色的球,問有多少種取法。分析:由于球只能是五種顏色之一,故可

用枚舉類型表示球的顏色。設(shè)取出的球為i、j、k,根據(jù)題意,i、j、k分別可以有五種取值,且i≠j≠k??梢杂酶F舉法,逐個檢驗每一種可能的組合,從中找出符合要求的

組合并輸出。自定義數(shù)據(jù)類型#include<iostream.h>void

main(

){enum

color{red,yellow,blue,white,black};enum

color

pri;intn,loop,i,j,k;charc;n=0;for(i=red;i<=black;i++)for(j=red;j<=black;j++)if(i!=j)//前兩個球不同{for(k=red;k<=black;k++)if((k!=i)&&(k!=j))//第三個球不同于前兩個{

n=n+1;cout.width(4);cout<<n;for(loop=1;loop<=3;loop++){switch(loop){ case

1:

pri=(enum

color)i;break;case

2:

pri=(enum

color)j;break;case

3:

pri=(enum

color)k;break;default:

break;}switch(pri)red";yellow";blue";white";black";{ case

red:

cout<<"break;case

yellow:

cout<<"break;case

blue:

cout<<"break;case

white:

cout<<"break;case

black:

cout<<"break;default:

break;}}cout<<endl;}}cout<<"total:"<<n<<endl;}113結(jié)構(gòu)體——結(jié)構(gòu)的結(jié)構(gòu)的概念–結(jié)構(gòu)是由不同數(shù)據(jù)類型的數(shù)據(jù)組成的集合體。結(jié)構(gòu)類型struct

結(jié)構(gòu)名{成員名

1;成員名

2;數(shù)據(jù)類型數(shù)據(jù)類型......數(shù)據(jù)類型成員名n;};自定義數(shù)據(jù)類型結(jié)構(gòu)體——結(jié)構(gòu)的//學(xué)生信息結(jié)構(gòu)體舉例:struct

student{intnum; //學(xué)號char

name[20];

//char

sex;

//int

age;

//float

score; //成績char

addr[30];

//住址}自定義數(shù)據(jù)類型114結(jié)構(gòu)體——結(jié)構(gòu)變量說明變量說明形式結(jié)構(gòu)名結(jié)構(gòu)變量名;注意:結(jié)構(gòu)變量的 類型概念、它的

、可見性及使用范圍與普通變量完全一致。結(jié)構(gòu)變量說明在結(jié)構(gòu)類型

之后,二者也可同時進(jìn)行。結(jié)構(gòu)變量占內(nèi)存大小可用sizeof

運算求出:sizeof(運算量)自定義數(shù)據(jù)類型115116結(jié)構(gòu)體——結(jié)構(gòu)變量的初始化和使用初始化說明結(jié)構(gòu)變量的同時可以直接設(shè)置初值。使用結(jié)構(gòu)體成員的 形式:結(jié)構(gòu)變量名.成員名自定義數(shù)據(jù)類型117例1-13

溫馨提示

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

評論

0/150

提交評論