c語(yǔ)言專升本教案_第1頁(yè)
c語(yǔ)言專升本教案_第2頁(yè)
c語(yǔ)言專升本教案_第3頁(yè)
c語(yǔ)言專升本教案_第4頁(yè)
c語(yǔ)言專升本教案_第5頁(yè)
已閱讀5頁(yè),還剩116頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章C語(yǔ)言概述

>c程序的組成和形式

?c程序是由函數(shù)構(gòu)成網(wǎng)「主函數(shù)

t其他函!

?一個(gè)函數(shù)由兩部分組成

行函數(shù)的首部

例1.3中max函數(shù)的首部為

intmax(i

;I

函數(shù)類型函數(shù)名函數(shù)參數(shù)類型函數(shù)參數(shù)名函數(shù)參數(shù)類型函數(shù)參數(shù)名

聲函數(shù)體「聲明部分r變量聲明

Vt函數(shù)聲明

I執(zhí)行部分

?一個(gè)C程序總是從main函數(shù)開始執(zhí)行。

?C程序書寫格式自由,一行可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以寫在多行上。

?每個(gè)語(yǔ)句和數(shù)據(jù)聲明的最后必須有一個(gè)分號(hào)。

?C語(yǔ)言的輸入輸出功能是通過函數(shù)完成的。

?可以用/*......*/對(duì)C程序進(jìn)行注釋。

第三章數(shù)據(jù)類型、運(yùn)算符、與表達(dá)式

§3.1C語(yǔ)言的數(shù)據(jù)類型

>C語(yǔ)言的數(shù)據(jù)類型:整型r整型int

J短整型short

「長(zhǎng)整型long

基本類型

單精度型float

實(shí)型’

雙精度型double

C字符類型char數(shù)據(jù)類型決定:

數(shù)枚舉類型enum1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)

據(jù)2.數(shù)據(jù)取值范圍

類結(jié)構(gòu)體struct3.其上可進(jìn)行的操作

型構(gòu)造類型

共用體union

數(shù)組

指針類型

空類型void

§3.2常量與變量

>常量與符號(hào)常量

?常量:在程序運(yùn)行過程中,其值不能被改變的量

?符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的符號(hào)

*使用符號(hào)常量的好處:

①含義清楚

日能做到“一改全改”

>變量

?變量:代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來存放數(shù)據(jù),也就是變量的

值,在程序運(yùn)行期間,這些值是可以改變的。

*標(biāo)識(shí)符:在C語(yǔ)言中用來對(duì)變量、符號(hào)常量、函數(shù)、數(shù)組、類型等對(duì)象命名的有效

字符序列

*標(biāo)識(shí)符的命名規(guī)則:

b只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須為字母或下劃線。

5大寫和小寫字母是不同的字符,也就是不同的標(biāo)識(shí)符。

卡標(biāo)識(shí)符的最大長(zhǎng)度TuoboC規(guī)定為32個(gè)字符,一般不超過8個(gè)字符。

叱標(biāo)識(shí)符應(yīng)做到“見名知義”

叱標(biāo)識(shí)符不能是關(guān)鍵字,如果是已經(jīng)定義標(biāo)識(shí)符,比如函數(shù)名,則相當(dāng)于重新定義。

?變量必須''先定義,后使用”

例:判斷下列標(biāo)識(shí)待號(hào)合法性

sumSumM.D.JohndayDate

3days

studentname#33lotus_l_2_3

chara>b_above$123

§3.3整型數(shù)據(jù)

>整型常量

?十進(jìn)制整數(shù):正負(fù)整數(shù)

?八進(jìn)制整數(shù):以0開頭,08是錯(cuò)誤的用法

?十六進(jìn)制整數(shù):以0x開頭,例:0x2a是合法的

>整型常量的類型

?一個(gè)整型常數(shù)根據(jù)數(shù)據(jù)所在的范圍可自動(dòng)確定它的數(shù)據(jù)類型

??個(gè)整常量后面加一個(gè)字母u或U,認(rèn)為是unsignedint型

?一個(gè)整常量后面加一個(gè)字母1或L,認(rèn)為是longint

整型變量

整型數(shù)據(jù)在內(nèi)存中的存放形式:補(bǔ)碼

正整數(shù):該數(shù)的原碼

負(fù)整數(shù):該數(shù)的絕對(duì)值按位取反再加1

例:10的補(bǔ)碼為0000000000001010

-10的補(bǔ)碼為1111111111110110

最高位是符號(hào)位,該位為0表示正,該位為1表示負(fù)。

整型變量的分類:六種

,有符號(hào)基本整型:[signed]int2-32768~32767(-215-215-1)

?無(wú)符號(hào)基本整型:unsignedint20?65535(0-291)

?有符號(hào)短整型:[signed]short[int]2-32768-32767

,無(wú)符號(hào)短整型:unsignedshort[int]20-65535

,有符號(hào)長(zhǎng)整型:[signed]long[int]4-2147483648(-231-23|-1)

,無(wú)符號(hào)長(zhǎng)整型:unsignedlong[int]40?4294967295(0-232-1)

t整型數(shù)據(jù)的溢出

例3.3整型數(shù)據(jù)的溢出

//include<stdio.h>

voidmain()

{inta,b;

a=32767;

b=a+1;

printf("%d,%d\n",a,b);

a和b在內(nèi)存中的形式:

運(yùn)行結(jié)果為:0111111111111111___432767

32767,-327681000000000000000___4-32768

§3.4浮點(diǎn)型數(shù)據(jù)

A浮點(diǎn)型常量的表示方法

?十進(jìn)制小數(shù)形式:(必須有小數(shù)點(diǎn))如0.123,.123,123.0,0.0,123.

*指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3,123E2,1.23e4,

e-5.1.2E-3.5

*規(guī)范化的指數(shù)形式:在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且

只能有一位非零的數(shù)字。

浮點(diǎn)型變量

*浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式:分成小數(shù)部分和指數(shù)部分兩部分存放

例:3.14159在內(nèi)存中的形式如下(實(shí)際存儲(chǔ)的是它的二進(jìn)制數(shù)形式):

+3141591

符號(hào)小數(shù)部分指數(shù)部分

?浮點(diǎn)型變量的分類

類比特?cái)?shù)有效數(shù)字?jǐn)?shù)值范圍

float326?7-3.4*10-38?34*1()38

double6415?16_]7*10-3。8?17*1()308

lingdouble12818-19-1.2*10-4932?1.2*1(/932

?浮點(diǎn)型變量也應(yīng)先定義后使用

§3.5字符型數(shù)據(jù)

>字符常量:

?用單撇號(hào)括起來的一個(gè)字符

?轉(zhuǎn)義字符:以一個(gè)“\”開頭的字符序列:

轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義

\n換行\(zhòng)t水平制表8

\b退格\r回車

\\反斜線\f換頁(yè)

\'單引雙引號(hào)

\ddd1?3位8進(jìn)制數(shù)代表的字符\xhh1?2位16進(jìn)制數(shù)代表的字符

main()

{print"'abc\tde\rf\tg\n");

printf("h\ti\b\bjk\n");

}

運(yùn)行結(jié)果應(yīng)為:

fabcgde實(shí)際運(yùn)行結(jié)果為:

hjikfgde

hjk

*輸出的制表符覆蓋了

>字符變量原有字符

*字符變量的定義及使用形式:

charcl,c2;

cl='a';c2='b';

*字符變量在內(nèi)存中占一字節(jié)。

>字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式

?以字符的ASCH碼形式存放

?可以和整型數(shù)據(jù)通用,可以互相賦值,可以以%d或c式輸出,字符型數(shù)據(jù)可以參

加算術(shù)運(yùn)算,但只能存放0?255(unsignedchar)或-128?127(signedchar)之間的整

數(shù)。

例3.6向字符變量賦予整數(shù)

#inchide<stdio.h>

voidmain()

{charcl;intc2;

cl=97;

c2=98;

prin氓"%c%c\nM,cl,c2);

printf("%d%d\nn,c1,c2);

}

運(yùn)行結(jié)果:

ab

9798

例3.7大小寫字母的轉(zhuǎn)換

#include<stdio.h>

voidmain()

{charcl,c2;

cl=R;

c2=b;

cl=cl-32;

c2=c2-32;

printf("%c%cn,cl,c2);

}

>字符串常量:

?一對(duì)雙撇號(hào)括起來的字符序列:“abc”

*'a'是字符常量,“a”是字符串常量

?不能將一個(gè)字符串常量賦值給字符變量

?系統(tǒng)自動(dòng)在字符串常量的末尾加上打結(jié)束號(hào)志

例字符串“hello”在內(nèi)存中:he11o\0

例空串“”在內(nèi)存中

§3.6變量賦初值

>變量賦初值:在定義變量的同時(shí)使變量初始化

例:inta=3;

floatf=3.56;

charc=,a,;

inti,j,k=5;

inta,b,c=5;

inta=b=c=5;

§3.7各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算

>各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算

*整型、浮點(diǎn)型、字符型數(shù)據(jù)間可以混合運(yùn)算

*不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,再進(jìn)行運(yùn)算

?轉(zhuǎn)換規(guī)則:

double

§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式

>C運(yùn)算符簡(jiǎn)介

算術(shù)運(yùn)算符:(+-*/%++-)

關(guān)系運(yùn)算符:(<<===>>=!=)

邏輯運(yùn)算符:((!&&||)

位運(yùn)算符:(“??|.&)

C賦值運(yùn)算符:(=及其擴(kuò)展)

運(yùn)條件運(yùn)算符:(?:)

算逗號(hào)運(yùn)算符:(,)

符指針運(yùn)算符:(*&)

求字節(jié)數(shù):(sizeof)

強(qiáng)制類型轉(zhuǎn)換:(類型)

分量運(yùn)算符:(.-?

下標(biāo)運(yùn)算符:(□)

I其它:(()-)

>算術(shù)運(yùn)算符和算術(shù)表達(dá)式

?基本算術(shù)運(yùn)算符:+,*,/,%(取余)

卡結(jié)合方向:從左向右

5優(yōu)先級(jí):-―?*/%―?+-

(2)(3)(4)

?說明:

b可為單目運(yùn)算符時(shí),右結(jié)合性

面兩整數(shù)相除,結(jié)果為整數(shù),遵守“向零取整”的原則

b%要求兩側(cè)均為整型數(shù)據(jù)

1例:5%2=1~1

例:5/2=2

-5%2=-1

-5/2=-2

1%10=1

-5/2.0=-2.5

5%1=0

5.5%2(x)I

?算術(shù)表達(dá)式:用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(操作數(shù))連接起來,符合C語(yǔ)法規(guī)

則的式子。

>強(qiáng)制類型轉(zhuǎn)換運(yùn)算符

?一般形式:(類型名)(表達(dá)式)

?優(yōu)先級(jí):2級(jí)

例:(int)(x+y)

(int)x+y

(double)(3/2)

(int)3.6

?說明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變

例main()

{floatx;

inti;

x=3.6;

i=(int)x;

printf("x=%f,i=%d”,x,i);

)

結(jié)果:x=3.600000,i=3

>自增、自減運(yùn)算符++-

?作用:使變量值加1或減1

?種類:

b前置++i,-i(先執(zhí)行i+1或i-1,再使用i值)

向后置i++,i-(先使用i值,再執(zhí)行i+1或i-1)

?說明:

方++-只能用于變量,不能用于常量和表達(dá)式,如5++(x),(a+b)++(x)

5++-結(jié)合方向:自右向左

優(yōu)先級(jí):++,-----?*,/,%---?+,-

(2)(3)(4)

=i++

例:printf("%d,%d”,i,i++);1==>J>

運(yùn)行結(jié)果:4,3printf("%d,%d”j,i);

例-i++6-(i++)(同一優(yōu)先級(jí)右結(jié)合性)例j+++k;〈^"?(j++)+k;

i=3;printf(“%d”,-i++);//-3______________________________

§3.9賦值運(yùn)算符和賦值表達(dá)式

>簡(jiǎn)單賦值運(yùn)算符

?符號(hào):=

?格式:變量標(biāo)識(shí)符=表達(dá)式

?作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量

>賦值時(shí)若變量和表達(dá)式的類型不一致將自動(dòng)進(jìn)行類型轉(zhuǎn)換

例1:inti;

i=3.56;/*實(shí)際i值為3*/

例2:floatf;

423;

printf(u%f\n,,,f);結(jié)果為:23.000000

例3:doule賦值給float時(shí),截取其前面7位有效數(shù)字,取值范圍超出時(shí)產(chǎn)生溢出錯(cuò)誤。

floatf;

doubled=123.456789el00;

4d;/*出錯(cuò)*/

例4:字符賦給整型時(shí):

main()

{unsignedcharc,d;

inta,b;

c='\376';d=-125;無(wú)符號(hào)字符時(shí),將原值存入整

a=c;b=d;型數(shù)的低八位,高八位補(bǔ)零。

printf(t4%d,%d,,,a,b);}

運(yùn)行結(jié)果為:254,131

main()

{charc;

inta;有符號(hào)字符時(shí),將原值存入整型數(shù)

,,

c=\376;的低八位,高八位符號(hào)擴(kuò)展。原值

a=c;最高位為零則補(bǔ)零,為1則補(bǔ)1

printff<%d,,,a);)

運(yùn)行結(jié)果為:一2

例5:main()

{inti=289;int,short,long賦值給字符型變

charc;量時(shí),只將其低八位截取賦值

c=i;

printf("%d,%c”,c,c);}

運(yùn)行結(jié)果為:33,!

例6:將int賦值給longint處理方法同例4

將longint賦值給血時(shí)截取低16位

main()

{longb=65536;inta;

a=b;

printf("%d”,a);}

運(yùn)行結(jié)果為:0

例7:將unsigned賦給?個(gè)同字節(jié)數(shù)的signed型時(shí),將原值保持不變,超范圍會(huì)產(chǎn)生溢出

錯(cuò)誤。

例:main()

{unsignedinta=65535;

intb;

b=a;

printfC€%d,,,b);}

運(yùn)行結(jié)果為:一1

例8:將signed賦給一個(gè)同字節(jié)數(shù)的unsigned型時(shí),將原值保持不變

main()

{unsignedinta;

intb=?l;

a=b;

pr血f(“%d”,a);}

運(yùn)行結(jié)果為:65535

>復(fù)合賦值運(yùn)算符

?種類:+=-=*=/=%=?=?=&=A=|=

含義:變量op=表達(dá)式?——變量=變量op(表達(dá)式)

a+=3vaa=a+3

x*=y+8v>x=x*(y+8)

x%=3<c---->x=x%3

>賦值表達(dá)式

?一?般形式:變量=表達(dá)式

?賦值表達(dá)式的值與變量值相等,且可嵌套,但賦值號(hào)左邊必須為變量

正確用法:

a=b=c=5

a=(b=5)

a=5+(c=6)

a=(b=4)+(c=6)

a=(b=10)/(c=2)

錯(cuò)誤用法:

3=x-2*y;

a+b=3;

a=3*5=4*3

例:a=12;

a+=a-=a*a/*a=-264等價(jià)于a=a+(a=a-(a*a))*/

例:b=3;

printf(64%d,,,a=b);

§3.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式

形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n

結(jié)合性:從左向右

優(yōu)先級(jí)低于賦值表達(dá)式

逗號(hào)表達(dá)式的值:等于表達(dá)式n的值

a=3*5,a*4/*a=15,表達(dá)式值60*/

a=3*5,a*4,a+5/*a=15,表達(dá)式值20*/

x=(a=3,6*3)/*賦值表達(dá)式,表達(dá)式值表,x=18*/

x=a=3,6*a/*逗號(hào)表達(dá)式,表達(dá)式值18,x=3*/

例a=l;b=2;c=3;

printf("%d,%d,%d”,a,b,c);/*1,2,3*/

printf("%d,%d,%d",(a,b,c)bc);/*3,2,3*/

>課堂練習(xí):

分析下面程序的運(yùn)行結(jié)果:

main()

{floatfl;inta;charc=,a';

f1=32.78;

c=c-(int)f1;

a=c%15;

printf(a%d,%f,%c\nw,a,fl,c);}

第一章與第三章練習(xí)題

1.一個(gè)c程序的執(zhí)行是從一。

A)本程序的main函數(shù)開始,到main函數(shù)結(jié)束

B)本程序文件的第一個(gè)函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束

C)本程序的main函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束

D)本程序文件的第一個(gè)函數(shù)開始,到本程序main函數(shù)結(jié)束

2.以下敘述正確的是:

A)在C程序中,main函數(shù)必須位于程序的最前面

B)C程序的每行中只能寫?條語(yǔ)句

0C語(yǔ)言本身沒有輸入輸出語(yǔ)句

D)在對(duì)個(gè)C程序進(jìn)行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯(cuò)誤

3.以下敘述不正確的是。

A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成

B)一個(gè)C源程序必須包含一個(gè)main函數(shù)

C)C程序的基本組成單位是函數(shù)

D)在C程序中,注釋說明只能位于一條語(yǔ)句的后面

4.C語(yǔ)言規(guī)定:在一個(gè)源程序中,main函數(shù)的位置。

A)必須在最開始

B)必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)的后面

C)可以任意

D)必須在最后

5.一個(gè)C語(yǔ)言程序是由

A)一個(gè)主程序和若干子程序組成B)函數(shù)組成

C)若干過程組成D)若干子程序組成

6.若x,i,j和k都是int型變量,則執(zhí)行下面表達(dá)式后x的值為

x=(i=4,j=16,k=32)

A)4B)16032D)52

7.假設(shè)所有變量均為整型,則表達(dá)式(a=2,b=5,b++,a+b)的值是:

A)7B)8C)6D)2

8.C語(yǔ)言中的標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符

A)必須為字母B)必須為下劃線

C)必須為字母或下劃線D)可以是字母,數(shù)字和下劃線中任一種字符

9.若有代數(shù)式3ae/bc,則不正確的C語(yǔ)言表達(dá)式是:

A)a/b/c*e*3B)3*a*e/b/c

C)3*a*e/b*cD)a*e/c/b*3

10.以下不正確的敘述是

A)在C程序中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低

B)在C程序中,APH和aph是兩個(gè)不同的變量

C)若a和b類型相同,在執(zhí)行了賦值表達(dá)式a=b后b中的值將放人a中,而b中的值不變。

D)當(dāng)從鍵盤輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)值,對(duì)于實(shí)型變量只能輸入實(shí)型

數(shù)值。

11.以下正確的敘述是:

A)在C程序中,每行中只能寫一條語(yǔ)句

B)若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整型數(shù)

C)在C程序中,無(wú)論是整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無(wú)誤地表示

D)在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符

12.以下符合C語(yǔ)言語(yǔ)法的賦值表達(dá)式是

A)d=9+e+f=d+9B)d=9+e,f=d+9

C)d=9+e=e++,d+9D)d=9+e++=d+7

13.已知字母A的ASCII碼為十進(jìn)制數(shù)65,且c2為字符型,則執(zhí)行語(yǔ)句c2='A'十'6'一

'3';后,c2中的值為

A)DB)68C)不確定的值D)C

14.在C語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是。

A)/B)++c)!=D)%

15.若以下變量均是整型,且num=sum=7;則執(zhí)行表達(dá)式sUM=num++,sllM++,++num后sum

的值為

A)7B)8C)9D)10

16.在C語(yǔ)言中,int、char和short種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)

A)由用戶自己定義B)均為2個(gè)字節(jié)

0是任意的D)山所用機(jī)器的機(jī)器字長(zhǎng)決定

17.若有說明語(yǔ)句:charc='\72'則變量c

A)包含1個(gè)字符B)包含2個(gè)字符

C)包含3個(gè)字符D)說明不合法,c的值不確定

18.若有定義:inta=7;floatx=2.5,y=4.7;則表達(dá)式x+a%3*(int)(x+y)%2/4的值是

A)2.500000B)2.750000c)3.500000D)0.000000?

19.sizeof(float)是:

A)一個(gè)雙精度型表達(dá)式B)一個(gè)整型表達(dá)式

C)一種函數(shù)調(diào)用D)一個(gè)不合法的表達(dá)式

20.設(shè)變量a是整型,f是實(shí)型,i是雙精度型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為

A)intB)floatC)doubleD)不確定

21.在C語(yǔ)言中,char型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是:

A)補(bǔ)碼B)反碼C)原碼D)ASCII碼

22.表達(dá)式18/4*sqrt(4.0)/8值的數(shù)據(jù)類型為:

A)intB)floatC)doubleD)不確定

23.設(shè)C語(yǔ)言中,?個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則unsignedint型數(shù)據(jù)的取值

范圍為:

A)0—255B)0~32767C)0~65535D)0~2147483647

24.設(shè)有說明:charw;intx;floaty;doublez;則表達(dá)式w*x+z—y值的

數(shù)據(jù)類型為:

A)floatB)charC)intD)double

25.若有以下定義,則能使值為3的表達(dá)式是:

intk=7,x=12;

A)x%=(k%=5)B)x%=(k—k%5)

C)x%=k-k%5D)(x%=k)—(k%=5)

26.設(shè)以下變量均為int類型,則值不等于7的表達(dá)式是

A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)

0(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)

第四章順序程序設(shè)計(jì)

§4.1C語(yǔ)句

>C語(yǔ)句分類

?程序控制語(yǔ)句(9種):

_Tif()~else~

分支

Lswitch

for()~

Jwhile()~

循環(huán)

?do~while()

continue

break

輔助控制

]goto

、return

?表達(dá)式語(yǔ)句:表達(dá)式加分號(hào)構(gòu)成。

夕函數(shù)調(diào)用語(yǔ)句:函數(shù)名(實(shí)際參數(shù)表);

吠賦值語(yǔ)句:賦值表達(dá)式加一個(gè)分號(hào)

a=3;

i++;

吠其他表達(dá)式構(gòu)成語(yǔ)句:表達(dá)式加一個(gè)分號(hào)

x+y;/*合法但無(wú)意義*/

?空語(yǔ)句:;

?復(fù)合語(yǔ)句:用{…}括起來的一組語(yǔ)句

它一般形式:{[數(shù)據(jù)說明部分;]

執(zhí)行語(yǔ)句部分;

句說明:

?“}”后不加分號(hào)

?語(yǔ)法上和單一語(yǔ)句相同

復(fù)合語(yǔ)句可嵌套

§4.2字符數(shù)據(jù)的輸入輸出

>字符輸出函數(shù):

?格式:putchar(c)

?參數(shù):c為字符常量、變量或表達(dá)式

?功能:把字符C輸出到顯示器上

ftinclude<stdio.h>

main()

{intc;

chara;

c=65;a=,B';

putchar(c);putchar('\n");putchar(a);

}

>字符輸入函數(shù)

?格式:getchar()/*無(wú)參函數(shù)*/

?功能:從輸入設(shè)備得到一個(gè)字符作為函數(shù)值賦值給一個(gè)字符變量

例:charc;

c=getchar();

putchar(getchar());

printf("%c”,getchar。);

§4.3格式輸出printf函數(shù)

Aprintf函數(shù)

?一般格式:printf(“格式控制串”,輸出表)

?功能:按指定格式向顯示器輸出數(shù)據(jù)

?輸出表:要輸出的數(shù)據(jù)(可以沒有,多個(gè)時(shí)以“,”分隔)

?格式控制串:包含兩種信息

卡格式說明:%[修飾符]格式字符,用于指定輸出格式

曲普通字符或轉(zhuǎn)義序列:原樣輸出

d,i十進(jìn)制整數(shù)inta=567;printf("%d”,a);5677

x,X十六進(jìn)制無(wú)符號(hào)整數(shù)inta=255;printf("%x”,a);fff

0八進(jìn)制無(wú)符號(hào)整數(shù)inta=65;printfT%o”,a);1Al

4t,

u不帶符號(hào)十進(jìn)制整數(shù)inta=567;printfT%u\a);567

c單一字符chara=65;printfC4%c,\a);A

s字符串print.%”,“ABC”);AB

floata=567.789;printtVu%e,,,a);

e,E指數(shù)形式浮點(diǎn)小數(shù)5.677890e+02

tt,

f小數(shù)形式浮點(diǎn)小數(shù)floata=567.789;printfi[%f,a);567.789000

g-Ge和仲較短一種floata=567.789;printf(u%g,,,a);567.789

%%百分號(hào)本身printfC%%”);%

?說明

行格式字符要用小寫(X,E,G除外)

①格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng)

#include<stdio.h>

voidmain()

{inta;

a=12;

printf("%d,%d”,a,13);

運(yùn)行結(jié)果:12,13

修改:printf(〃%d,%d〃,a);

運(yùn)行結(jié)果:12,0

修改:printf(〃%d〃,a,13);

運(yùn)行結(jié)果:12

,輸出轉(zhuǎn)換:格式字符與輸出項(xiàng)類型不一致,自動(dòng)按指定格式輸出(某種情況下可,某種

情況不能轉(zhuǎn)換)

?附加格式說明符(修飾符)

修飾符功先巨

m輸出數(shù)據(jù)域?qū)?,?shù)據(jù)長(zhǎng)度vm,左補(bǔ)空格;否則按實(shí)際輸出(用于整型、浮點(diǎn)、字待串)

對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入)

.n

對(duì)字符串,指定實(shí)際從左端截取的字符的個(gè)數(shù)

-輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(岐省右對(duì)齊)

在d,o,x,u前,指定輸出精度為long型

1在e,f,g前,指定輸出精度為double型(double型也可以直接用%f輸出)

課堂練習(xí):分析下列程序的運(yùn)行結(jié)果:

例inta=1234;

floats123.456;

charch='a';

printfC4%8d,%2d\n,,,a,a);

printfr%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);

printfC4%3c\n,,,ch);

運(yùn)行結(jié)果:

1234,1234

123.456000,123.456000,123.5,123.46,1.23e+02

a

例:無(wú)符號(hào)數(shù)據(jù)的輸出

#include<stdio.h>

voidmain()

{unsignedinta=65535;

intb=-2;

printf(na=%d,%o,%x,%u\nn,a,a,a,a);

printf(,,b=%d,%o,%x,%u\nn,b,b,b,b);

)

運(yùn)行結(jié)果為:

a=-l,177777,ffff,65535

b=-2,l77776,ffife,65534

例:字符串的輸出

#include<stdio.h>

voidmain()

{

printf("%3s,%7.2s,%.4s,%-5.3s\n”JCHINA”JCHINA","CHINA”,“CHINA");

|

運(yùn)行結(jié)果:

CHINA,CHIN,CHI##

(#號(hào)代表空格)

例:輸出實(shí)數(shù)時(shí)的有效位數(shù)(一般7位有效數(shù)字)

#include<stdio.h>

voidmain()

{floatx,y;

x=llllll.lll;y=222222.222;

printf(H%f,,x+y);

}

運(yùn)行結(jié)果為:

333333.328125

例:輸出雙精度數(shù)時(shí)的有效位數(shù)(般16位有效數(shù)字)

#include<stdio.h>

voidmain()

{doublex,y;

111111111;

產(chǎn)2222222222222.222222222;

printf(M%f\x+y);

}

運(yùn)行結(jié)果為:

3333333333333.333000

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

Ascanf函數(shù)

?一般格式:scanf(“格式控制串”,地址表列)

?功能:按指定格式從鍵盤輸入數(shù)據(jù)

?地址表列:由若干個(gè)地址組成的表列,可以是變量的地址,或字符串的首地址

?格式字符:d,i;o;x,X;u;c;s;f,e,E,g.,G

?附加格式說明符(修飾符)

修飾符功

h用于d,o,x前,指定輸入為short.型整數(shù)

用于d,o,x,u前,指定輸入為long型整數(shù)

1

用于e,f前,指定輸入為double型實(shí)數(shù)

?輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:

卡遇空格、TAB、或回車

e遇寬度結(jié)束

廿遇非法輸入

#include<stdio.h>

voidmain()

{inta,b,c;

scanf(〃%d%d%d〃,&a,&b,&c);

printf("%d,%d,%d\n〃,a,b,c);

必,四田c,「菽贏以空格,回車鍵,Tab鍵分隔

輸入數(shù)據(jù):345------------一

運(yùn)行結(jié)果:3,4,5————

以下輸入方法均正確:①345

②3

45

③3(按Tab鍵)4

5

例scanf(a%d%o%xw,&a,&b,&c);

printf(<<a=%d,b=%d,c=%d\n,',a,b,c);

輸入123123123J

輸出a=123,b=83,c=291

例scanf("%4d%2d%2d”,&yy,&mm,&dd);

輸入19991015J

則1999=>yy,10=>mm,15=>dd

例scanf("%2d%*3d%2d”,&a,&b);

輸入1234567J

則12na,67nb

例scanf("%3d%*4d%f”,&k,&f);

輸入12345678765.43J

貝1」123=>k,8765.43nf

例scanf("a=%d,b=%d,c=%dw,&a,&b,&c);

輸入a=12,b=24,c=36J

例scanf(<<%d%c%f,),&a,&b,&c);

若輸入1234al23o.26J

貝I」1234na,'a'=例intx;

例intx;charch;

scanf("%d",&x);

scanf("%c”,&.ch);

printf("x=%d,ch=%d\n>,,x,ch);

執(zhí)行:123J

輸出:x=123,ch=10

charch;

scanf("%d”,&x);

ch=getchar();

printf("x=%d,ch=%d\n”,x,ch);

執(zhí)行:123」

輸出:x=123,ch=10

例main()

{doublef;

scanf(a%lf",f);〃1不能省略

printf("%f",f);}

§4.6順序結(jié)構(gòu)程序設(shè)計(jì)舉例

例4.10輸入三角形的三個(gè)邊長(zhǎng),求三角形的面積

分析:式假設(shè)輸入的三個(gè)數(shù)可以構(gòu)成一個(gè)三角形,則由三條邊求三角形面積公式為:

s=2(〃+Z?+c)

area='sx(s-〃)x(s-b)x(s-c)

程序如下:

#include<math.h>

#include<stdio.h>

main()

{floata,b,c,s,area;

scanfC%f,%f,%f〃,&a,&b,&c);

s=l.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printfCa=%7.2f,b=%7.2f,c=%7,2f,s=%7,2f\n\a,b,c,s);

printf("area=%7.2f\n〃,area);

輸入:3,4,6」

輸出:a=3.00,b=4.00,c=6.00s=6.50

area=5.33

例求ox2+for+c=0方程的根,設(shè)人2一4ac>0

分析:一元二次方程的根為:

-b±^lh2-4ac

x=------------------

2a

#include<stdio.h>

#include<math.h>

main()

{floata,b,c,disc,xl,x2,p,q;

scanf("a=%f,b=%f,c=%f〃,&a,&b,&c);

disc=b*b-4*a*c;

p=-b/(2*a);q=sqrt(disc)/(2*a);

xl=p+q;x2=p-q;

printf('\n\nxl=%5.2f\nx2=%5.2f\n〃,xl,x2);

)

輸入:a=l,b=3,c=2J

輸出:

xl=-1.00

x2=~2.00

第五章選擇結(jié)構(gòu)程序設(shè)計(jì)

§5.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式

>關(guān)系運(yùn)算符

?種類:<<===>=>!=

?結(jié)合方向:自左向右

?優(yōu)先級(jí)別:低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符(算術(shù)-關(guān)系-賦值-逗號(hào))

>優(yōu)先級(jí)6(高)

L優(yōu)先級(jí)7(低)

例c>a+b//c>(a+b)

a>b!=c//(a>b)!=c

a==b<c//a==(b<c)

a=b>c//a=(b>c)

?關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示

例inta=3,b=2,c=l,d,f;

a>b〃表達(dá)式值1

(a>b)==c〃表達(dá)式值1

b+c<a〃表達(dá)式值0

d=a>b〃d=l

K=0,合法,但不要理解錯(cuò)含義

例inti=l,j=7,a;

a=i+(j%4!=0);

結(jié)果:a=2

例3>0結(jié)果為1

4^>100結(jié)果為0

例5>2>7>8在C中是允許的,

值為0

例注意區(qū)分與“=="

inta=0,b=1;

if(a=b)〃改為if(a==b)

printff'aequaltob");

else

printff'anotequaltob");

例應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷(有些系統(tǒng)可以)

如1.0/3.0*3.0==1.0有的系統(tǒng)結(jié)果為0,有的系統(tǒng)結(jié)果為1

可改寫為:fabs(1.0/3.0*3.0-1.0)<le-6

§5.2邏輯運(yùn)算符和邏輯表達(dá)式

>邏輯運(yùn)算符和表達(dá)式

?邏輯運(yùn)算符

句種類:&&(與)||(或)!(非)

的邏輯運(yùn)算規(guī)則:

&&:兩個(gè)操作數(shù)同時(shí)為真,其值為真,否則為假

||:兩個(gè)操作數(shù)有一者為真則其值為真,全為假則為假

1:若操作數(shù)為真,則其值為假,若操作數(shù)為假,則其值為真。

吠優(yōu)先級(jí):!一?算術(shù)運(yùn)算符—關(guān)系運(yùn)算符—&&和||-?賦值—?逗號(hào)

高---------------------------------------------------?低

卡結(jié)合性:?。簭挠蚁蜃?/p>

&&:從左向右

||:從左向右

華說明:當(dāng)邏輯運(yùn)算的操作數(shù)為數(shù)值型值時(shí),若該值為0則為假,非0則為真

例a<=x&&x<=b//(a<=x)&&(x<=b)

a>b&&x>y//(a>b)&&(x>y)

a==b||x==y//(a==b)||(x==y)

!a||a>b//(!a)||(a>b)

例a=4;b=5;

!a值為0

a&&b值為1

a||b值為1

!a||b值為1

4&&0||2值為1

5>3&&2||8<4-!0//(5>3)&&2||(8<(4-(!0)))值為1

'c'&&'d'值為1

?短路特性:邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行

下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí).,才執(zhí)行該運(yùn)算符

例a&&b&&c〃只在a為真時(shí),才判別b的值;

只在a、b都為真時(shí),才判別c的值

例a||b||c//只在a為假時(shí),才判別b的值;

只在a、b都為假時(shí),才判別c的值

例a=1;b=2;c=3;d=4;m=1;n=1;

(m=a>b)&&(n=c>d)〃結(jié)果m=0,n=l

§5.3if語(yǔ)句

>if語(yǔ)句的三種形式

?形式一:

格式:if(expression)

statement

▼執(zhí)行過程:

V

=0

條件表達(dá)式

非0

語(yǔ)句

例:if(x>y)

printfC%d”,x);

?形式二:

好格式:if(expression)

statement1

else

statement?

例:if(x>y)max=x;

elsemax=y;

?形式三:

▼格式:

if(表達(dá)式1)語(yǔ)句1

elseif俵達(dá)式2)語(yǔ)句2

elseif(表達(dá)式3)語(yǔ)句3

[else語(yǔ)句n]

例:if(number>500)cost=0.15;

elseif(number>300)cost=0.1;

elseif(number>100)cost=0.075;

elseif(number>50)cost=0.05;

elsecost=0;

?說明:

bif后面的表達(dá)式類型任意,按表達(dá)式值為0還是非0區(qū)分真假,一般為邏輯或

關(guān)系表達(dá)式

b語(yǔ)句可以是復(fù)合語(yǔ)句

bif(x)oif(x!=0)例:if(3)為真;if(3)為真

if<!x)oif(x==0)

例51輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大的順序輸出這兩個(gè)數(shù)

程序如下:

#include<stdio.h>

voidmain()

(

floata,b,t;

scanff%f,%F,&a,&b);

if(a>b)

{t=a;a=b;b=t;}

printf(n%5.2f,%5.2f\nn,a,b);

)

例52輸入3個(gè)數(shù)a,b,c,要求按由小到大的順序輸出

程序如下:

#include<stdio.h>

voidmain()

floata,b,c,t;

scanf("%f,%f,%f',&a,&b,&c);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if{b>c)

{t=b;b=c;c=t;}

printfC%5.2f,%5.2f,%5.2f\n”,a,b,c);

}

?if語(yǔ)句嵌套:

團(tuán)一般形式:(else總是與離它最近的if配對(duì))

if(exprl)

if(e

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論