第3章 順序程序設計_第1頁
第3章 順序程序設計_第2頁
第3章 順序程序設計_第3頁
第3章 順序程序設計_第4頁
第3章 順序程序設計_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章順序程序設計

3.1順序程序設計舉例(略)

3.2數(shù)據(jù)的表現(xiàn)形式及其運算

3.2.1常量與變量■常量與符號常量

常量在程序運行過程中其值保持不變的量。符號常量用來代表一個常量的標識符。

#definePI3.1415926

例:

#definePI3.1415926main(){floatr=2,c;

c=2*PI*r;printf(“%f”,c);}■變量

其值可以改變的量。

變量的三要素:

變量名每個變量有一個名字,作為識別該變量的標識符。②變量的值每個變量有一個值,變量的值是隨時可以改變的。

③變量的存儲單元

每個變量占據(jù)一個內(nèi)存單元,用于存放變量的值。

變量名

a

變量值

存儲單元

3

變量的命名規(guī)則:由字母、數(shù)字和下劃線組成以字母或下劃線開頭

a、x1、y_2、_b1、_1c合法

1x、a+2、Ф、Ω不合法

變量必須先定義后使用。程序中何時使用常量?何時使用變量?

3.2.2數(shù)據(jù)類型

在程序設計中需要根據(jù)需要選擇合適的“類型”來定義變量??蛇x擇的數(shù)據(jù)類型見圖3.4

基本類型—整型﹑浮點型﹑字符型

枚舉類型

空類型派生類型

3.2.3整型數(shù)據(jù)

■整型常量

即整常數(shù),c的整常數(shù)有三種形式:

①十進制整數(shù)與數(shù)學中的整數(shù)一致,如:100,123,15等。

②八進制整數(shù)以0開頭的整數(shù),如:010,07,020等。

③十六進制整數(shù)以0x開頭的整數(shù),如:0x10,0xff,0x2a等。

■整型變量

用于存放整數(shù)的變量。分4種類型:

①基本型:inta16位,可表示的數(shù)值范圍:-32768—3276732位,數(shù)值范圍:-2147483648—2147483647

②短整型:shortintb16位,可表示的數(shù)值范圍:-32768—32767

③長整型:longintc32位,數(shù)值范圍:-2147483648—2147483647

④無符號型:加上unsigned

只存放正數(shù)。如:unsignedshortintx

變量x為無符號整數(shù),16位全表示數(shù)碼,數(shù)值范圍:0—65535

在程序設計中,如果要使用整型變量,必須首先選擇以上類型符來定義變量,然后才能使用;

例:

main()定義

{inta,b,c;a=100;b=50;使用

c=a+b;printf(“%d”,c);}

一般根據(jù)什么原則選擇變量的類型?3.2.4字符型數(shù)據(jù)

■字符常量

用單引號括起來的一個字符。

’a’,’x’,’*’,’1’等除此外,以’\’開頭的字符如’\n’,’\t’等稱為轉(zhuǎn)義字符,祥見書表3.1■字符型變量

用于存放字符的變量。

charc1,c2定義c1和c2為字符型變量

c1=’a’;c2=’b’;字符賦值字符型變量存放一個字符,占據(jù)一個字節(jié)■字符型數(shù)據(jù)的存儲形式

存放ASCII碼不是而是

如字符’a’在內(nèi)存中存放97,’b’

存放98。與整數(shù)的存儲形式一致,它們之間可以通用一個字符數(shù)據(jù)既可以作字符用,也可以作整數(shù)用(取其ASCII代碼)。如:32+’a’相當于32+97

若intx;charc;則x=’a’;c=97;x=97;c=’a’;都允許

■字符串常量

用雙引號括起來的字符序列。

如:”abcde”,”china”

”a”也屬字符串。注意”a”與’a’的區(qū)別。對于:

charc;c=”a”;

用法錯誤字符串中每個字符各占一個字節(jié),并且在字符串結(jié)尾加上一個結(jié)束標記’\0’

如:”china”

在內(nèi)存中占6個字節(jié)。

china\0

C語言中專門的字符串變量,可用字符數(shù)組存放(以后介紹)。3.2.5實型數(shù)據(jù)

■實型常量

可使用兩種形式表示:①小數(shù)形式:如1.23,3.141592615.48②指數(shù)形式:如1e-201.23e5

■實型變量

用于存放實數(shù)的變量分單精度和雙精度兩種:

floata,b

定義a和b為單精度型變量

32位,7位有效數(shù)字,10-38—1038

doublex,y

定義x和y為雙精度型變量

64位,15位有效數(shù)字,10-308—10308

例:

main(){floatr,c;doubler,c;r=5;c=2*3.1415926*r;printf(“%f”,c);}

3.2.6各數(shù)值型數(shù)據(jù)間的混合運算

整型、實型、字符型數(shù)據(jù)間可以進行混合運算,如:

10-‘a(chǎn)’*1.5

運算時,參加運算的兩個數(shù)據(jù)如果類型不同,則首先將其類型轉(zhuǎn)換成一致再運算,轉(zhuǎn)換規(guī)則是:

將優(yōu)先級低的類型轉(zhuǎn)換到優(yōu)先級高的類型

數(shù)據(jù)類型的優(yōu)先級:高

doublefloatlongunsignde

intchar3.2.7算術(shù)運算符與算術(shù)表達式

■基本的算術(shù)運算符

+-*/%

■算術(shù)表達式

用算術(shù)運算符將運算對象連接起來的式子

用于表達數(shù)學公式的式子如:2*x+y-1/a

表達式經(jīng)過運算最終得到一個值:

算術(shù)表達式的值■運算符的優(yōu)先級與結(jié)合性

優(yōu)先級:在對表達式求值時,如果存在多個運算符,則運算的先后次序按運算符的優(yōu)先級別從高到底進行。

運算符的優(yōu)先級關系為:高:*/%

低:+-

如:a-2*x先算*

2*(a+2)有括號的情況?

結(jié)合性:

如果在一個運算對象兩邊的運算符的優(yōu)先級相同,則按規(guī)定的“結(jié)合方向”處理。如:a-b+cb與-結(jié)合是從左到右,稱“左結(jié)合性”。

b與+結(jié)合是從右到左,稱“右結(jié)合性”。每個運算符都有相應的優(yōu)先級和結(jié)合性?;舅阈g(shù)運算符都是左結(jié)合性。

計算表達式例:

2+’A’-1/2.01+3/2-2構(gòu)造表達式例

2x2+3x-1

a+ba-b

a+ba-b

x+yx-ya+b/a-b?(a+b)/(a-b)2*x*x+3*x-1(*不能?。?a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/((x+y)/(x-y))(a+b)/(a-b)/(x+y)*(x-y)■強制類型轉(zhuǎn)換可以用強制類型轉(zhuǎn)換運算符將一個表達式的值轉(zhuǎn)換成所需類型:如:

(int)(x+y)(float)(7%3)

應用舉例:

若在TurboC下運行:

short

inta=200,b=300,c;c=a*b/100;?

可知,有自動轉(zhuǎn)換和強制轉(zhuǎn)換,當自動轉(zhuǎn)換達不到目的時,可用強制轉(zhuǎn)換。c=(long)a*b/100;c=(long)(a*b)/100;■自增、自減運算符

自增運算符:++

使變量值加1

自減運算符:--

使變量值減1

兩種用法:

++i,--i先加(減)后用

i++,i--先用后加(減)兩種用法對i效果一樣,但表達式的值不同。例:假設i的原值為5:

j=++i;j=?

j=i++;j=?

注意:●++和--只能用于變量。

如:3++和(a+1)++

不合法●++和--為右結(jié)合性。

(-i)++

-i++

-(i++)

若i的原值是5,則該表達式的值是多少?

例:分析執(zhí)行下列語句后的結(jié)果:

a=5;abcd

b=a++;c=--a-b++;d=(a++)-(++b)+c--;

5565067-26-1

兩種特殊情況:①k=(i++)+(i++)+(i++)

②i+++j

是i+(++j)

還是(i++)+j?

i++雖然與i=i+1等效,但使用自增自減運算符的代碼優(yōu)化程度好,因而經(jīng)常使用;但用時需特別小心。3.2.8賦值運算符和賦值表達式■賦值運算符

“=”稱賦值運算符,其作用是將一個數(shù)據(jù)賦給一個變量。如:a=5

不要理解為“等號”。執(zhí)行賦值運算的結(jié)果,是將右邊的數(shù)據(jù)存入左邊變量所對應的內(nèi)存單元中。

■賦值規(guī)則

如果賦值運算符兩側(cè)的類型不一致,則在賦值時要進行類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則為:●實型→整變量舍去小數(shù)部分。

inta=5.5;a中為5?!裾汀鷮嵶兞繑?shù)值不變,以浮點形式存儲?!褡址汀兞糠旁谡巫兞康?位。保持原值不變原則。

inta=‘A’;■復合賦值運算符

在賦值運算符前加上其它運算符,可以構(gòu)成復合賦值運算符。

a+=3——a=a+3b-=x+5——b=b-(x+5)x*=c-6——x=x*(c-6)y/=a*4——y=y/(a*4)k%=b-2——k=k%(b-2)

屬于高效率運算符?!鲑x值表達式

主要實現(xiàn)賦值運算的表達式。

一般形式:

<變量>=<表達式>

如:a=5y=2*x+3a=a+1

不是衡等作用:將右邊表達式的值賦給左邊的變量。賦值表達式的值取左邊變量的值。

賦值表達式右邊的<表達式>可以是任何表達式,如:

a=(b=5)賦值表達式中包含賦值表達式賦值運算符的優(yōu)先級低于所有算術(shù)運算符,且是右結(jié)合性。

a=(b=5)

與a=b=5

等效。

例:計算以下表達式的值:

a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=4.5)+(c=6.5)(a、b、c為整型變量)

a+=a-=a*a(設a的原值為3)

賦值表達式是C語言中的一個重要成分,在賦值表達式后加一分號就成為常用的賦值語句。如y=2*x+1;

賦值表達式作為表達式的一種,可以出現(xiàn)在任何表達式中,如:

x+2-(b/3-(a=k-5)+’b’

3.2.9逗號表達式

逗號也是一種運算符,用它對兩個表達式實現(xiàn)連接運算。

3+5,6+8稱逗號表達式。逗號表達式的一般形式:

表達式1,表達式2

取表達式2的值作為整個逗號表達式的值。如:a=3*5,a*4

逗號表達式的值為:60

一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式,如:

(a=3*5,a*4),a+5

因此,逗號表達式的一般形式可以擴展為:

表達式1,表達式2,表達式3,……,表達式n

取表達式n的值作為整個逗號表達式的值。

逗號運算符的優(yōu)先級最低,且是左結(jié)合性。

逗號運算符只起到連接作用,沒有實際操作。

3.3最簡單的C程序設計

C程序最基本的成分是語句目前我們已掌握的語句:

變量說明語句:

inta,b,c;

表達式語句:

x+y;

特別地:

a=5;

賦值語句

可以編寫簡單程序如:

main(){intx,y;x=5;y=2*x*x+3*x-1;}

該程序語法上完整,但還缺少輸出。

■數(shù)據(jù)的輸出

用輸出函數(shù)實現(xiàn),其中的兩種輸出函數(shù):

1.putchar函數(shù)(字符輸出函數(shù))用于輸出一個字符。

如:

putchar(‘a(chǎn)’);putchar(100);charc=’b’;putchar(c);

例:輸出單詞Boy的完整程序:

#include“stdio.h”注意該語句的作用

main(){chara,b,c;a=’B’;b=’o’;c=’y’;putchar(a);putchar(b);putchar(c);}

2.printf函數(shù)(格式輸出函數(shù))

任意類型、任意格式、任意個數(shù)。例如:

inta=100,b=56;

printf(“a=%d,b=%d”,a,b);

普通字符格式說明格式控制

輸出表列

輸出結(jié)果:a=100,b=56“%”

后的字符稱格式字符,不同格式字符對應不同的數(shù)據(jù)類型。

d格式符:按整數(shù)格式輸出

幾種用法:

%d

不指定寬度,按實際寬度輸出

%md

按指定寬度輸出,m為寬度

%ld

用于輸出長整型數(shù)

例:

inta=125,b=453;longc=65535;printf(“a=%d,b=%5d,c=%ld”,a,b,c);

輸出結(jié)果:

a=125,b=453,c=65535

%ld也可以按指定寬度輸出:

printf(“c=%8ld”,c);

輸出結(jié)果:c=65535注意:格式字符的類型要與對應的輸出對象的類型一致。

c格式符:用于輸出字符

charc=’A’;printf(“c=%c,%c”,c,’B’);

輸出結(jié)果:c=A,B

輸出對象既可以是字符變量、字符常量,還可以是整型表達式。

如:

inta=100;charb=’A’;printf(“\n%d,%c”,a,a);printf(“\n%c,%d”,b,b);

輸出結(jié)果:

100,dA,65s格式符:用于輸出字符串

%s

不指定寬度

%-ms

指定寬度,左靠齊

%ms

指定寬度,右靠齊

%m.ns

指定寬度m,只取左端n個字符,右靠齊

%-m.ns

指定寬度m,只取左端n個字符,左靠齊例:

printf(“1:%s”,”abcd”);

printf(“2:%8s”,”abcd”);printf(“3:%-8s”,”abcd”);

printf(“4:%8.3s”,”abcd”);printf(“5:%-8.3s”,”abcd”);1:abcd2:abcd3:abcd4:abc5:abcf格式符:按小數(shù)形式輸出實數(shù)

%f由系統(tǒng)指定寬度(6位小數(shù))

%m.nf指定寬度m,小數(shù)位數(shù)n,右靠齊

%-m.nf指定寬度m,小數(shù)位數(shù)n,左靠齊

注意:寬度包括符號和小數(shù)點。

例:

floata=3.141592654,b=14.326795,c=-125.2468;

printf(“\na=%f,b=%8.3f,c=%-10.2f”,a,b,c);

輸出結(jié)果:

a=3.141592,b=14.326,c=-125.24

完整前面的程序:main(){intx,y;x=5;y=2*x*x+3*x-1;

printf(“\ny=%d”,y);}程序設計例:

編寫程序計算如圖中的電流I.

假設U=220,R1=30,R2=60,R3=45UIR1R2R3算法設計:

I=U/R1+U/R2+U/R3程序設計:

main(){

}I=U/R1+U/R2+U/R3;intU=220,R1=30,R2=60,R3=45;floatI;printf(“\nI=%f”,I);

正確的程序:

main(){intU=220,R1=30,R2=60,R3=45;floatI;I=(float)U/R1+(float)U/R2+(float)U/R3;printf(“\nI=%f”,I);}

考慮通用:

main(){intU,R1,R2,R3;floatI;

輸入U,R1,R2,R3I=(float)U/R1+(float)U/R2+(float)U/R3;printf(“\nI=%f”,I);}

■數(shù)據(jù)的輸入

getchar函數(shù)(字符輸入)

#include“stdio.h”main(){charc;c=getchar();等待鍵盤輸入

putchar(c);}

scanf函數(shù)(格式輸入)

與printf函數(shù)相反。用于輸入若干任意類型的數(shù)據(jù)。

scanf(“%d%d%d”,&a,&b,&c);

格式控制

溫馨提示

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

評論

0/150

提交評論