第講-基本數(shù)據(jù)類型與表達(dá)式優(yōu)秀文檔_第1頁(yè)
第講-基本數(shù)據(jù)類型與表達(dá)式優(yōu)秀文檔_第2頁(yè)
第講-基本數(shù)據(jù)類型與表達(dá)式優(yōu)秀文檔_第3頁(yè)
第講-基本數(shù)據(jù)類型與表達(dá)式優(yōu)秀文檔_第4頁(yè)
第講-基本數(shù)據(jù)類型與表達(dá)式優(yōu)秀文檔_第5頁(yè)
已閱讀5頁(yè),還剩43頁(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)介

C++程序設(shè)計(jì)基礎(chǔ)2008年春季學(xué)期第2講基本數(shù)據(jù)類型與表達(dá)式(上)2本章內(nèi)容

作業(yè)講解常見(jiàn)錯(cuò)誤基本數(shù)據(jù)類型數(shù)組及其應(yīng)用本講作業(yè)32.2常見(jiàn)錯(cuò)誤與警告1、變量未定義或定義了卻從未使用2、邏輯表達(dá)式錯(cuò)誤(||與&&)3、IF…ELSE不匹配,或IF(表達(dá)式)中少了括號(hào)4、字符串與表達(dá)式的錯(cuò)誤,如“y=x-5”是字符串5、cin>>x,y;

cin>>x>>y>>endl;之類的錯(cuò)誤6、函數(shù)實(shí)現(xiàn)的函數(shù)頭處寫分號(hào)的錯(cuò)誤(見(jiàn)上講程序)7、函數(shù)未能按聲明、使用、定義的原則(第四講)重復(fù)上機(jī)過(guò)程!缺少函數(shù)頭(在函數(shù)實(shí)現(xiàn)代碼如main后面加了;就會(huì)出現(xiàn))m[0]=1;m[1]=2;m[2]=3;s1="abcd";//error,too!5、cin>>x,y;cin>>x>>y>>endl;之類的錯(cuò)誤不能與程序中的其他名字如函數(shù)名等同名符號(hào)常量名不能放在賦值語(yǔ)句的左邊。另一個(gè)是地址值(所占內(nèi)存空間的起始地址)inta[5];則元素為a[0]~a[4]long(signedlong),unsignedlong:4個(gè)字節(jié)有兩個(gè)值:true和false;for(i=1;i<10;i++) if(a[i]>max)max=a[i];{if(x<y)一維數(shù)組元素的下標(biāo)表示如下:voidmain()注意:"0"與'0'的不同。用一個(gè)與常量相關(guān)的標(biāo)識(shí)符來(lái)替代常量出現(xiàn)在程序中,這種相關(guān)的標(biāo)識(shí)符稱為符號(hào)常量。無(wú)符號(hào):00000000~11111111可表示0到255共256個(gè)數(shù)4常見(jiàn)錯(cuò)誤及改正1、單詞拼寫錯(cuò)誤void—viodmain---mianiostream--iosteamcout---countendl—end12、輸出<<與輸入>>用錯(cuò)cin<<"Entertwonumbers:">>x,y;

cout<<"Entertwonumbers:";cin>>x>>y;3、main后少了(),函數(shù)體少了{(lán)}或{}不匹配54、;用錯(cuò),該有的沒(méi)有,不該有的卻有5、中文標(biāo)點(diǎn)用錯(cuò),特別是引號(hào)#include<iostream.h>void

main()

{ doublex,y; cout<<"Entertwofloatnumber:"; cin>>x>>y; doublez=x+y; cout<<"x+y="<<z<<endl;}不是“”!應(yīng)該是;此處無(wú);

errorC2018:unknowncharacter"0xa3"肯定是中文符號(hào)錯(cuò)常見(jiàn)錯(cuò)誤及改正66、大小寫錯(cuò)誤void–Void前面是x,后面完成X7、函數(shù)后面接(),不是{}也不是[]unknowncharacter“0xa3”:不可知字符(中文符號(hào))syntaxerror:missing";"beforetype"double""x":undeclaredidentifier:x:是沒(méi)有聲明的標(biāo)識(shí)符4、unexpectedtokensfollowingpreprocessordirective-expectedanewline(若在#include行尾有;則有本條錯(cuò)誤):在預(yù)處理命令后有一個(gè)意外的符號(hào)8、常見(jiàn)錯(cuò)誤常見(jiàn)錯(cuò)誤及改正75、missingfunctionheader(old-styleformallist?)

缺少函數(shù)頭(在函數(shù)實(shí)現(xiàn)代碼如main后面加了;就會(huì)出現(xiàn))6、subscriptrequiresarrayorpointertype

下標(biāo)需要數(shù)組或指針類型,max(2,4)誤寫成max[2,4]!7、"max":functiondoesnottake3parameters

函數(shù)不支持3個(gè)參數(shù)8、"main":functionshouldreturnavalue;"void"returntypeassumed

main前少了void

常見(jiàn)錯(cuò)誤及改正89、localvariable"x"usedwithouthavingbeeninitialized

本地變量沒(méi)有初始化就使用了10、function"void_cdeclmain(void)"alreadyhasabody

在程序中有兩個(gè)main函數(shù)體!不能在同一文件中放兩個(gè)程序的代碼,一個(gè)程序中只有一個(gè)main函數(shù)!解決辦法常見(jiàn)錯(cuò)誤及改正911、編譯與構(gòu)建時(shí)文件名稱不同Debug/aa.exe:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound解決辦法:關(guān)閉工作區(qū)-選擇否-重新編譯、構(gòu)建常見(jiàn)錯(cuò)誤及改正2.3基本數(shù)據(jù)類型基本數(shù)據(jù)類型類型修飾符常用數(shù)據(jù)類型C++語(yǔ)言的基本數(shù)據(jù)類型有如下4種:char(字符型)int(整型)float(單精度浮點(diǎn)型)

double(雙精度浮點(diǎn)型)void(空值型)1)基本數(shù)據(jù)類型如:A,b,z12,989992)類型修飾符C++語(yǔ)言中還有四種類型修飾符:signed(有符號(hào))unsigned(無(wú)符號(hào))long(長(zhǎng)型)short(短型)是否能為負(fù)數(shù)數(shù)的范圍是否更寬無(wú)符號(hào):00000000~11111111可表示0到255共256個(gè)數(shù)有符號(hào):11111111~01111111可表示-128到+127共256個(gè)數(shù)0代表正,1代表負(fù),×11111113)常用數(shù)據(jù)類型允許用修飾符組合構(gòu)成的常用數(shù)據(jù)類型有:char(signedchar),unsignedchar:1個(gè)字節(jié)short(signedshort),unsignedshort:2個(gè)字節(jié)int(signedint),unsignedint:4個(gè)字節(jié)long(signedlong),unsignedlong:4個(gè)字節(jié)float:4個(gè)字節(jié)(大約6位有效數(shù)字)double:8個(gè)字節(jié)(大約12位有效數(shù)字)longdouble:10個(gè)字節(jié)(大約15位有效數(shù)字)4)常量和變量常量

是指在程序中不被改變的量變量

指在程序中其值可以被改變的量5)常量常量是指在程序中不被改變的量。常量有各種不同的數(shù)據(jù)類型,這由它的表示方法決定。1、整型常量2、浮點(diǎn)型常量3、字符型常量4、字符串常量5、符號(hào)常量1、整型常量有3種表示方式:十進(jìn)制整數(shù)八進(jìn)制整數(shù)(以0開(kāi)頭的整數(shù))十六進(jìn)制整數(shù)(以0X或0x開(kāi)頭的整數(shù))如:123,-34,00123(=1*82+2*81+3*80)//等于數(shù)83

0X123//等于數(shù)291

-024,-0X32//不正確123L//長(zhǎng)整型數(shù)123LU//無(wú)符號(hào)長(zhǎng)整型數(shù)5)常量有兩種表示:定點(diǎn)數(shù)形式和指數(shù)形式如://定點(diǎn)數(shù)形式//指數(shù)形式要注意E或e的前面要有數(shù)字,且E的后面的指數(shù)必須為整數(shù)。

E2,2.1E3.5,e//不合法實(shí)型常數(shù)分為單精度、雙精度和長(zhǎng)雙精度3類。如:在C++中,一個(gè)實(shí)型常數(shù)未說(shuō)明則表示是double型。2、浮點(diǎn)型常量5)常量是用單引號(hào)括起來(lái)的一個(gè)字符。如'a'、'!'等。轉(zhuǎn)義序列表示方法:以反斜線(\)開(kāi)頭,后跟字符的ASCII碼值;如'\n'

,它表示一個(gè)換行符。轉(zhuǎn)義字符中可將反斜杠同八進(jìn)制或十六進(jìn)制數(shù)值結(jié)合使用,以表示相應(yīng)于該數(shù)值的ASCII碼。用八進(jìn)制數(shù)表示時(shí),所能表示的范圍為'\000'~'\377',即從0~255。用十六進(jìn)制數(shù)表示時(shí),表示的范圍是'\x00'~'\xff'。3、字符型常量5)常量C++中常用轉(zhuǎn)義序列符5)常量4、布爾常量有兩個(gè)值:true和false;在定義數(shù)組時(shí),同時(shí)給各元素賦初值,這稱為數(shù)組元素的初始化。&(a[0][0]+2*4+1)minv=min(x,min(y,z)); //計(jì)算最小值如變量名something和Something為不同的名字。另一個(gè)是地址值(所占內(nèi)存空間的起始地址)用八進(jìn)制數(shù)表示時(shí),所能表示的范圍為'\000'~'\377',即從0~255。注意:"0"與'0'的不同。inta[5];則元素為a[0]~a[4]字符串常量"a"在內(nèi)存中doublez=x+y;inta[4]={1,2,3,4};例如:inta,b,c;doublex,y,z;表示定義了一個(gè)名為B的一維數(shù)組,其中有5個(gè)元素,類型都為整型。#include<iostream.分別設(shè)計(jì)一個(gè)求最大值與最小值的函數(shù),求出最大、最小值及中間值,并輸出;允許用修飾符組合構(gòu)成的常用數(shù)據(jù)類型有:是由一對(duì)雙引號(hào)括起來(lái)的字符序列。如:

"

Howdoyoudo?"

、"

hello"字符常量和字符串常量在存儲(chǔ)方式上是不同的。字符常量只占一個(gè)字節(jié)的空間,而字符串常量除字符序列中每個(gè)字符占一個(gè)字節(jié)外,還要在最后多占一個(gè)字節(jié)空間用來(lái)保存一個(gè)'\0'字符(空字符)稱為字符串結(jié)束標(biāo)志符號(hào)。它是系統(tǒng)自動(dòng)增加的。如:

"

hello"的長(zhǎng)度為6,占6個(gè)內(nèi)存單元。注意:

"0"與'0'的不同。5、字符串常量5)常量5)常量由一個(gè)字符型變量存放由一維數(shù)組存放字符常量字符串常量用單引號(hào)括起用雙引號(hào)括起字符串有一個(gè)結(jié)束符,該結(jié)束符用'\0'表示字符常量'a'在內(nèi)存中用一個(gè)字節(jié)字符串常量"a"在內(nèi)存中占用兩個(gè)字節(jié)可進(jìn)行加、減法運(yùn)算可進(jìn)行連接、拷貝運(yùn)算5、符號(hào)常量用一個(gè)與常量相關(guān)的標(biāo)識(shí)符來(lái)替代常量出現(xiàn)在程序中,這種相關(guān)的標(biāo)識(shí)符稱為符號(hào)常量。定義方法須用類型說(shuō)明符const。如:

constfloatpi=3.14159;定義成符號(hào)常量后,程序中對(duì)其值只能讀而不能改變,否則出現(xiàn)編譯錯(cuò)誤。由于其常量值不可改變,所以該常量定義時(shí)必須初始化。注:符號(hào)常量名不能放在賦值語(yǔ)句的左邊。5)常量地址值名字類型值三要素?cái)?shù)據(jù)值地址值intc;c=5;內(nèi)存5......c地址值1000H變量類型變量名數(shù)據(jù)值可以在程序中隨時(shí)定義變量,只要在該變量被使用前定義即可;定義格式:<類型><變量名表>;例如:inta,b,c;doublex,y,z;變量是指在程序中其值可以被改變的量。6)變量<1>變量名C++將大寫和小寫的字母認(rèn)為是不同的字母。如變量名something和Something為不同的名字。命名變量名的規(guī)則為:不能為關(guān)鍵字遵循標(biāo)識(shí)符的命名規(guī)則不能與程序中的其他名字如函數(shù)名等同名一般講究見(jiàn)名知意一般變量名全用小寫字母。如myBook,theFox。6)變量必須先定義其類型才能使用該變量。如:unsignedmyAge,myWeight;floatmyScore;可用賦值運(yùn)算符給變量賦值。如:intx(0);unsignedshortwidth;width=5;也可在定義時(shí)直接給變量賦值。這時(shí)所賦的一般是初始值,稱為變量初始化。如:unsignedshortwidth=5;<2>變量類型6)變量如:inta;a=300;注意有兩個(gè)值的概念:一個(gè)是數(shù)據(jù)值(存放在內(nèi)存空間中的數(shù)據(jù))另一個(gè)是地址值(所占內(nèi)存空間的起始地址)<3>變量值內(nèi)容起始地址空間大小由類型決定與變量名A關(guān)聯(lián)對(duì)應(yīng)變量值100110051009100d3006)變量2.4數(shù)組數(shù)組的定義數(shù)組的賦值字符數(shù)組數(shù)組的定義數(shù)組是一種用一個(gè)名字來(lái)標(biāo)識(shí)一組有序且類型相同的數(shù)據(jù)組成的派生數(shù)據(jù)類型,它占有一片連續(xù)的內(nèi)存空間。一維數(shù)組的說(shuō)明形式為:類型說(shuō)明符數(shù)組名[常量表達(dá)式];起始地址內(nèi)容B100110051009100d1011對(duì)應(yīng)元素值與數(shù)組名關(guān)聯(lián)如:

intB[5];表示定義了一個(gè)名為B的一維數(shù)組,其中有5個(gè)元素,類型都為整型。定義時(shí)方括號(hào)內(nèi)必須為常量形式,不能為變量。如:intsize=50;voidmain(){intarray[size];//error…}應(yīng)為:constintsize=50;數(shù)組的定義數(shù)組的賦值1、數(shù)組元素的表示數(shù)組的賦值是給數(shù)組的各個(gè)元素賦值。數(shù)組的元素可以被賦值也可被賦初值。一維數(shù)組元素的下標(biāo)表示如下:<數(shù)組名>[<下標(biāo)表達(dá)式>]

如:

inta[5];則元素為a[0]~a[4]注意:a[5]不屬于該數(shù)組的空間范圍。又如:

intb[3][4];則元素為b[0][0]~b[2][3]。12345a[0]a[1]a[2]a[3]a[4]2、數(shù)組元素的賦初值在定義數(shù)組時(shí),同時(shí)給各元素賦初值,這稱為數(shù)組元素的初始化。規(guī)定:數(shù)組元素的個(gè)數(shù)不能少于初始值的個(gè)數(shù)。如:

inta[4]={1,2,3,4};inta[4]={2,3};//默認(rèn)值為0inta[4]={1,2,3,4,5};//errorintb[2][3]={{1,2,3},{4,5,6}};intb[2][3]={1,2,3,4,5};intb[2][3]={{1,3},{2,4}};數(shù)組的賦值3、數(shù)組元素的賦值即用賦值表達(dá)式給每個(gè)數(shù)組元素賦值。如:

intm[3];m[0]=1;m[1]=2;m[2]=3;注意:m[3]=4;

//error也可用循環(huán)語(yǔ)句實(shí)現(xiàn):如:

inta[5];for(inti=0;i<5;i++)a[i]=i*2+1;12345a[0]a[1]a[2]a[3]a[4]13579數(shù)組的賦值例如:計(jì)算由鍵盤輸入的五個(gè)人的平均年齡#include<iostream.h>voidmain(){

intage[5];//數(shù)組聲明intsum=0;for(inti=0;i<5;i++)

{cin>>age[i];//給數(shù)組賦值sum+=age[i];//累加數(shù)組元素之和cout<<"Enteranotherage:";

}cout<<"theaverageis:"<<sum/5.0<<endl;

}數(shù)組的應(yīng)用舉例字符數(shù)組字符數(shù)組是指數(shù)組類型為char的一種數(shù)組。如:

chars1[4]={'a','b','c','d'};chars2[5]={'a','b','c','d','\0'};chars2[5]="abcd";chars3[5]="abcde";//errorchars3[]="abcde";

//元素個(gè)數(shù)由初始值的個(gè)數(shù)決定charss[2][3]={{'a','b','\0''},{'c','d','\0'}};charss[2][3]={"ab","cd"};ss[0,0]ss[0,1]ss[0,2]ss[1,0]ss[1,1]ss[1,2]ab\0cd\0注意:

chars1[5];s1[5]="abcd";//error

s1="abcd";//error,too!

初始化時(shí)允許直接用字符串常量賦值,而在一般賦值時(shí)嚴(yán)禁直接對(duì)數(shù)組名操作,而只能對(duì)其中的元素逐個(gè)操作(因?yàn)閿?shù)組名是一個(gè)指針常量!)。如:staticinta[]={1,2,4,8,16};for(inti=0;i<5;i++)

cout<<a[i]<<"";cout<<endl;

結(jié)果為:124816注意字符數(shù)組cout<<"最大值"<<"中間值"<<"最小值"<<endl;a[i]=rand()/300;//rand()值的范圍是0-32768八進(jìn)制整數(shù)(以0開(kāi)頭的整數(shù))intsize=50;#include<iostream.#include<a[4]={1,2,3,4,5};//errorfor(i=0;i<10;i++)字符常量只占一個(gè)字節(jié)的空間,而字符串常量除字符序列中每個(gè)字符占一個(gè)字節(jié)外,還要在最后多占一個(gè)字節(jié)空間用來(lái)保存一個(gè)'\0'字符(空字符)稱為字符串結(jié)束標(biāo)志符號(hào)。&(a[0][0]+2*4+1)m[0]=1;m[1]=2;m[2]=3;cin>>x>>y;cout<<"Enteranotherage:";#include"iostream.h"voidmain(){inta[12];for(inti=0;i<12;i++)

{ a[i]=i+1;//元素賦值 if(i%4==0)cout<<endl;cout<<a[i]<<"\t";

}}123456789101112a[12]pa[0]a[1]a[2]a[9]a[10]a[11]給一維數(shù)組賦值,并按每行4個(gè)元素輸出數(shù)組的應(yīng)用舉例2.5枚舉類型枚舉模式和枚舉變量枚舉變量的值枚舉模式和枚舉變量枚舉類型是若干個(gè)有名字的整型常量的集合。枚舉類型的定義格式為:

enum<枚舉類型名>{<枚舉常量表>};

如:

enumday{sun,mon,tue,wed,thu,fri,sat};這時(shí),枚舉常量所對(duì)應(yīng)的常量值默認(rèn)為0~6。枚舉變量的定義格式為:enum<枚舉類型名><枚舉變量名表>;如:enumdayd1,d2,d3;也可連在一起寫:

enumday{sun,mon,tue,wed}d1,d2,d3;如:

enumday{sun,mon,tue,wed,thu,fri,sat}d1,d2,d3;enumcolor{red,blue,yellow,black,white}c1,c2,c3;

則有:

d1=sun;d2=sat;c1=red;c2=blue;

但無(wú):

d3=yellow;//集合中無(wú)該枚舉常量值

c3=3;//枚舉常量值并不能直接對(duì)應(yīng)整型值若輸出某個(gè)枚舉變量的值則總是整型數(shù)值,而不是枚舉符。如:cout<<d1<<c2;則輸出:01若要輸出sun和blue,則要通過(guò)編程實(shí)現(xiàn)。枚舉變量的值隨機(jī)生成數(shù)組的10個(gè)元素,求它們的最大值及平均值#include<iostream.h>#include<stdlib.h> //srand()及rand()函數(shù)#include<time.h> //包含time()函數(shù)voidmain(){inti,a[10],sum=0,max;srand((unsigned)time(NULL)); //使種子數(shù)隨時(shí)間變化,否則每次運(yùn)行結(jié)果相同//數(shù)組元素用隨機(jī)函數(shù)賦值for(i=0;i<10;i++)

數(shù)組的應(yīng)用舉例a[i]=rand()/300;//rand()值的范圍是0-32768//數(shù)組元素累加求和for(i=0;i<10;i++)sum=sum+a[i];//求數(shù)組的最大值(打擂算法)max=a[0];for(i=1;i<10;i++) if(a[i]>max)max=a[i];

//數(shù)組按每行5列輸出for(i=0;i<10;i++)

{ if(i%5==0)cout<<endl; cout<<a[i]<<"\t"; }cout<<"\nmaxofarraya[]is"<<max<<endl;}數(shù)組的應(yīng)用舉例給二維數(shù)組a[3][4]賦值,并按每行4個(gè)元素輸出123456789101112a[0][0]a[1][0]a[2][0]a[0][0]a[0][1]a[0][2]a[0][3]a[2][0]a[2][1]a[2][2]a[2][3]123456789101112a[2][3]a[0][0]a[i][j]是一維數(shù)組中的第幾個(gè)元素?如a[2][1]:以首元素為基準(zhǔn),前面有2行(2*4個(gè)),有1列故有2*4+1=9,其地址為:&(a[0][0]+2*4+1)數(shù)組的應(yīng)用舉例給二維數(shù)組a[3][4]的第0行賦值a[0][0]a[0][1]a[0][2]a[0][3]123456789101112a[2][3]a[0][0]for(inti=0;i<4;i++) a[0][i]=i+1;for(inti=0;i<4;i++) a[1][i]=5+i;for(inti=0;i<4;i++) a[2][i]=9+i;給1行賦值給2行賦值數(shù)組的應(yīng)用舉例給二維數(shù)組a[3][4]的各行賦值a[0][0]a[0][1]a[0][2]a[0][3]for(inti=0;i<3;i++)//外循環(huán),控制行

{

for(intj=0;j<4;j++)

//內(nèi)循環(huán),控制列{a[i][j]=4*i+j+1;cout<<a[i][j]<<"\t";}cout<<endl;}

2

3

45

6

7

89

10

11

12可把a(bǔ)[i][j]改為*(*(a+i)+j)數(shù)組的應(yīng)用舉例2.6本講作業(yè)從鍵盤上輸入三個(gè)整數(shù),求出其中的最大與最小值(用條件運(yùn)算符?:);分別設(shè)計(jì)一個(gè)求最大值與最小值的函數(shù),求出最大、最小值及中間值,并輸出;用for循環(huán)編程輸出以下圖形:******************************************4、編程求Sum=1!+2!+3!+…+10!之和。*************************voidmain(){ doub

溫馨提示

  • 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)論