期末復(fù)習(xí) C語(yǔ)言知識(shí)點(diǎn)歸納_第1頁(yè)
期末復(fù)習(xí) C語(yǔ)言知識(shí)點(diǎn)歸納_第2頁(yè)
期末復(fù)習(xí) C語(yǔ)言知識(shí)點(diǎn)歸納_第3頁(yè)
期末復(fù)習(xí) C語(yǔ)言知識(shí)點(diǎn)歸納_第4頁(yè)
期末復(fù)習(xí) C語(yǔ)言知識(shí)點(diǎn)歸納_第5頁(yè)
已閱讀5頁(yè),還剩45頁(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)介

期末復(fù)習(xí)C語(yǔ)言知識(shí)點(diǎn)歸納

一、概述

1.一個(gè)c語(yǔ)言源程序可以由一個(gè)或多個(gè)函數(shù)組成,有且只有

1個(gè)nain()函數(shù),可以放在程序中的任何位置.

2.一個(gè)C程序不論有幾個(gè)函數(shù),都是從nain()函數(shù)開(kāi)始執(zhí)行.

3.標(biāo)識(shí)符

按照C語(yǔ)言所定義的規(guī)則來(lái)命名的符號(hào)。

規(guī)則:由字母、數(shù)字、下劃線組成,但第一個(gè)字符必須

是字母或下劃線。

例如:area>a234>_1234為合法標(biāo)識(shí)符

456P、a-b、a+b為非法標(biāo)識(shí)符

注意:標(biāo)識(shí)符區(qū)分大小寫(xiě)。

例如:PAGE和page是兩個(gè)不同的標(biāo)識(shí)符。

4.c語(yǔ)言有32個(gè)關(guān)鍵字,關(guān)鍵字不能用作用戶標(biāo)識(shí)符。

5.C源程序文件的擴(kuò)展名”.心。

6.VC++6.。下c語(yǔ)言程序的完整實(shí)現(xiàn)過(guò)程包括4個(gè)基本步驟:

?編輯源程序

?編譯源程序

?構(gòu)建(鏈接)形成可執(zhí)行文件(.exe)

?運(yùn)行可執(zhí)行文件.

二、數(shù)據(jù)類(lèi)型、表達(dá)式

1.C語(yǔ)言中,整型、字符型、實(shí)型是最基本的數(shù)據(jù)類(lèi)型.

2.常量

指在程序運(yùn)行中,其值不能被改變。

分為整型常量、實(shí)型常量、字符常量、字符串常量。

?整型常量

C語(yǔ)言中主要有十進(jìn)制、八進(jìn)制、十六進(jìn)制等。

十進(jìn)制例如12、-3、32767等。

八進(jìn)制用數(shù)字0開(kāi)頭,由0-7這8個(gè)數(shù)字組成。

例如010.016為合法八進(jìn)制數(shù)

127、018為非法八進(jìn)制數(shù)

十六進(jìn)制用數(shù)字0和字母x或X開(kāi)頭,用0-9表示前10

個(gè)數(shù)字,字母A-F(可小寫(xiě))表示后6個(gè)數(shù)字。

例如OxAF、0x10、0x34為合法十六進(jìn)制數(shù)

100、ABC、OxAFH為非法十六進(jìn)制數(shù)

注意:C語(yǔ)言中只有十進(jìn)制數(shù)可以為負(fù)數(shù)。

?實(shí)型常量

表示方式有兩種:小數(shù)形式和指數(shù)形式。

小數(shù)形式

例如:0.123、.123、123.都是合法形式。

指數(shù)形式

例如:2.3026可用以下任何一種指數(shù)表示

0.23026E1,2.3026e0>23.026E-1

但下面的指數(shù)形式為非法

E3、.5e3.6、2.3e?2(e和?2間有空格)

?符號(hào)常量

用符號(hào)名來(lái)表示一個(gè)常量。

格式:#define符號(hào)名常量值

例:已知圓的半徑為5.0,計(jì)算圓的面積(圓周率取3.14)。

include<stdio.h>

#definePI3.14

main()

{doubler,s;

r=5.0;

s=PI*r*r;

printf(,,s=%f\n,,,s);

C語(yǔ)言中整型常量的3種表示:8進(jìn)制以。引導(dǎo),16進(jìn)制以

Ox或0X引導(dǎo),十進(jìn)制不能以0開(kāi)頭.

?實(shí)型(float或double型)常量在程序中只能用十進(jìn)制

數(shù),不能用其他進(jìn)制表示。2種表示形式,普通的和指數(shù)

形式,如3e5或者3E5,三者不可省略任何一部分.

?一個(gè)字符常量占一個(gè)字節(jié)存儲(chǔ)空間.用單引號(hào)限定,如:

'A'

'\0x4T(為轉(zhuǎn)義字符,表示以十六進(jìn)制數(shù)41為ASQI碼值

的字符,即應(yīng)的轉(zhuǎn)義字符形式).

'\0'(表示空字符,在字符串中用作字符串的結(jié)束標(biāo)志)

11.字符串常量用英文雙引號(hào)括起來(lái).如:"helIo\n"

?字符串中的字符個(gè)數(shù)稱(chēng)為字符串的長(zhǎng)度.空字符串長(zhǎng)度為

0.

?字符串存儲(chǔ)中每個(gè)字符占一個(gè)字節(jié),字符串結(jié)尾自動(dòng)加一

個(gè)結(jié)束標(biāo)志符''0’,所以字符串存儲(chǔ)的時(shí)候,占用的空

間長(zhǎng)度要比串的實(shí)際長(zhǎng)度多1.

如:charch[]={t(Hello55};實(shí)際串的長(zhǎng)度為5,但數(shù)組空

間長(zhǎng)度為6。

?變量

指在程序運(yùn)行過(guò)程中其值可以改變的量。

變量的命名必須符合標(biāo)識(shí)符的命名規(guī)則,且不能和C語(yǔ)言

中關(guān)鍵字同名。(例如:main是關(guān)鍵字)

例如:a、b、ab為合法變量

define、printf為非法變量

注意:ab是一個(gè)整體,含義不同于a乘以b。

?有符號(hào)整型變量用英文singned表示,存儲(chǔ)時(shí)最高一位是

符號(hào)位,無(wú)符號(hào)整型變量用英文unsigned表示.

?字符型變量的數(shù)據(jù)類(lèi)型標(biāo)識(shí)符是符號(hào)char,每個(gè)字符型

變量只能存儲(chǔ)一個(gè)字符.

例如:‘A‘、七'、5都是合法的字符常量。

”A"、‘a(chǎn)bc'都是非法的字符常量。

?常見(jiàn)的轉(zhuǎn)義字符:

\n回車(chē)換行\(zhòng)\反斜杠

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

\ddd三位八進(jìn)制\xhh二位十六進(jìn)制

\0空值

例1:'\rf表示回車(chē)換行、”表示一個(gè)單引號(hào)

例2:301'表示字符'A''\x41'表示字符'A'

?字符變量

用關(guān)鍵字char定義,可以同時(shí)賦初值。

例1定義兩個(gè)字符變量ch1和ch2o

charch1,ch2;

例2定義兩個(gè)字符變量a和b,初值分別為T(mén)和'2'。

chara=T,b='2';

?getchar函數(shù)和putchar函數(shù)

分別用來(lái)輸入字符和輸出字符。

?字符的輸入和輸出

使用scant和printf時(shí),格式符均為%c。

例1從鍵盤(pán)上輸入一個(gè)字符保存在ch中。

charch;

ch=getchar();

例2charc1='A',c2;

c2=c1+1;

putchar(c2);

輸出結(jié)果是‘B'。

例3輸出一個(gè)回車(chē)換行符。

putchar('\n');

例:從鍵盤(pán)上輸入一串字符,最后以'!'為結(jié)束標(biāo)志。分別

統(tǒng)計(jì)大寫(xiě)字母,小寫(xiě)字母、數(shù)字出現(xiàn)的次數(shù)。

#include<stdio.h>

main()

charch;

intn1=0,n2=0,n3=0;

printf("請(qǐng)輸入一串字符以!結(jié)束:\n");

ch=getchar();

while(ch!='!')

if(ch>='A'&&chv=Z)

n1++;

if(ch>='a'&&ch<='z')

n2++;

if(ch>='0'&&ch<='9')

n3++;

ch=getchar();

)

printf("大寫(xiě)字母出現(xiàn)次數(shù)是%d\n",n1);

printf("小寫(xiě)字母出現(xiàn)次數(shù)是%d\n",n2);

printf("數(shù)字出現(xiàn)次數(shù)是%d\rT,n3);

?VC++6.0下,int型數(shù)據(jù)占4個(gè)字節(jié),float型數(shù)據(jù)占4

個(gè)字節(jié),double型數(shù)據(jù)占8個(gè)字節(jié),.char型數(shù)據(jù)占1

個(gè)字節(jié).

?算術(shù)運(yùn)算符

+、-、*、/、%(求余數(shù))

例如:3+21.2*3.25%31/2

求余運(yùn)算符熾能用于整型數(shù)據(jù)的相除求余數(shù),結(jié)果為整數(shù).

如:7%.0為非法表達(dá)式,7/2結(jié)果為3,7呢結(jié)果為1

運(yùn)算規(guī)則

1)如果運(yùn)算數(shù)類(lèi)型一致,則結(jié)果為運(yùn)算數(shù)的類(lèi)型。所有實(shí)數(shù)

運(yùn)算都是以雙精度進(jìn)行.

2)如果運(yùn)算數(shù)類(lèi)型不一致,則系統(tǒng)自動(dòng)轉(zhuǎn)換,使運(yùn)算符

兩邊類(lèi)型一致后再進(jìn)行運(yùn)算。

char和short參與運(yùn)算先轉(zhuǎn)換成同int.

賦值運(yùn)算中,賦值號(hào)右側(cè)量的類(lèi)型將轉(zhuǎn)換成左側(cè)的類(lèi)型.

例11.0/2.0結(jié)果為0.5

例21/2結(jié)果為0

例315/3.0結(jié)果為5.0

?強(qiáng)制類(lèi)型轉(zhuǎn)換

格式:(類(lèi)型名)(表達(dá)式)

例4(int)3.234結(jié)果為3

例5(float)(10%3)結(jié)果為1.000000

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

>,>=,<,<=的優(yōu)先級(jí)相同且高于==,!=的優(yōu)先級(jí).

關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符高于賦值運(yùn)算符.

關(guān)系運(yùn)算符是左結(jié)合性.

?關(guān)系表達(dá)式的值為真則是1,假為0.

?邏輯運(yùn)算符!高于路和11,高于算術(shù)運(yùn)算符.&S和11是左

結(jié)合的,!是右結(jié)合的.

?注意陽(yáng)及||運(yùn)算的短路現(xiàn)象。

8&的短路運(yùn)算:

(表達(dá)式1)8&(表達(dá)式2),若(表達(dá)式1)的值為0,

則表達(dá)式2將不被計(jì)算,整個(gè)8a的結(jié)果為0。

11的短路運(yùn)算:

(表達(dá)式1)11(表達(dá)式2),若(表達(dá)式1)的值為1,

則表達(dá)式2將不被計(jì)算,整個(gè)11的結(jié)果為1。

?數(shù)學(xué)關(guān)系式0<x<10在C語(yǔ)言中的表達(dá):

(0<x)8&(x<10)或(Xx8&x<10

?賦值表達(dá)式

格式:變量名=表達(dá)式

例如:a=10a=a+1a=b=7+1為合法表達(dá)式

a+b=8a=7+1=b為非法表達(dá)式

整個(gè)表達(dá)式的值等于最左邊變量的值。

例如:a=b=c=8*8整個(gè)表達(dá)式最后的值為64

?復(fù)合賦值表達(dá)式

復(fù)合運(yùn)算符:+=、-=、*=、/=、%=

例如:n=n+1表達(dá)式可寫(xiě)成n+=1

n=n%3表達(dá)式可寫(xiě)成n%=3

n*=m+3表達(dá)式可寫(xiě)成n=n*(m+3)

例1假設(shè)變量a初值為9,計(jì)算下列表達(dá)式。

a+=a-=a+a

解答:

1)計(jì)算a+a,結(jié)果為18,a值未變。

2)計(jì)算a-=18,BPa=a-18,結(jié)果為-9,a值變?yōu)?9。

3)計(jì)算a+=-9,BPa=a+(-9),結(jié)果為-18,a值變?yōu)?18。

整個(gè)表達(dá)式最后結(jié)果為-18,a最后值為-18。

注意:a=a+1為賦值表達(dá)式,而2=2+1;為賦值語(yǔ)句。

?自加和自減運(yùn)算符

自加和自減只適用于整型變量.

例如:a++和++a等價(jià)于a=a+1

b—和—b等價(jià)于b=b-1

a++和++a的區(qū)別:

假設(shè)a的初值為5

表達(dá)式a++值為5,最后a值為6。

表達(dá)式++a值為6,最后a值為6。

?逗號(hào)表達(dá)式

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

從左至右依次計(jì)算每個(gè)表達(dá)式,最后一個(gè)表達(dá)式的值即為

整個(gè)逗號(hào)表達(dá)式的值。

例如:表達(dá)式i=3,++i,i+5最后結(jié)果為9,i最后值為4。

?條件運(yùn)算由“?“和“:”構(gòu)成,它是根據(jù)條件從兩個(gè)表達(dá)式中

選擇一個(gè)進(jìn)行計(jì)算取值的操作,優(yōu)先級(jí)高于賦值運(yùn)算符,

低于算術(shù)運(yùn)算和關(guān)系運(yùn)算.

三、輸入輸出函數(shù)

?數(shù)據(jù)輸出printf

格式:printf(格式符,輸出項(xiàng)1,輸出項(xiàng)2,)

格式符功能

%c輸出一個(gè)字符

%d輸出十進(jìn)制整數(shù)

%f輸出小數(shù)形式浮點(diǎn)數(shù)

%e輸出指數(shù)形式浮點(diǎn)數(shù)

%s輸出一個(gè)字符串

數(shù)據(jù)寬度說(shuō)明:

1)在%和格式字符之間插入一個(gè)整數(shù)來(lái)指定輸出寬度。

例如:%4d、%5c

2)對(duì)于float和double類(lèi)型的實(shí)數(shù),可以用n1.n2形式

n1指定輸出數(shù)據(jù)的寬度(包括小數(shù)點(diǎn)),n2指定小數(shù)

點(diǎn)后小數(shù)的位數(shù)。

例如:%12.3f、%12.0f

例1輸出整型變量a和b的值,數(shù)據(jù)寬度均為4。

printf(',%4d%4d,,,a,b);

例2輸出單精度變量k的值,保留2位小數(shù)。

printf("%.2f',k);

?數(shù)據(jù)輸入scanf

格式:scanf(格式符,輸入項(xiàng)1,輸入項(xiàng)2,...)

格式符功能

%c輸入一個(gè)字符

%d輸入十進(jìn)制整數(shù)

%f輸入單精度數(shù)

%lf輸入雙精度數(shù)

%s輸入一個(gè)字符串

例1從鍵盤(pán)上輸入兩個(gè)整數(shù),保存在變量a和b中。

scanf(,l%d%d,,,&a,&b);

例2從鍵盤(pán)上輸入一個(gè)雙精度數(shù),保存在變量data中。

scanf("%lf”,&data);

此處兩例中&是C語(yǔ)言運(yùn)算符,表示取變量地址。

?復(fù)合語(yǔ)句

格式:{語(yǔ)句1語(yǔ)句2….語(yǔ)句n}

例1用復(fù)合語(yǔ)句將變量a,b,c依次賦值為最小素?cái)?shù)。

{a=2;b=3;c=5;}

例2用復(fù)合語(yǔ)句實(shí)現(xiàn)變量a和b的值的交換。

{k=a;a=b;b=k;}

?不帶參數(shù)的宏次lefinePI3.14159意思是用符號(hào)

常量PI(宏名)代替3.14159(宏體),注意:宏定義不是c

語(yǔ)句,后面不加分號(hào).

?帶參數(shù)的宏.^defineMx)x*x*x*x

意思是Mx)代替x的4次方,x不用定義,可以在使用中換成

需要的字母.

帶參數(shù)的宏的展開(kāi),如:

^definen$x)x*x*x*x

printf("W,n$1+1));

M1+1)的宏展開(kāi)式為:1+1*1+1力+1*1+1計(jì)算結(jié)果為5

再如:

defineMx)(x)*(x)*(x)*(x)

prinJ1+1));

M1+1)的宏展開(kāi)式為:(1+1)*(1+1)*(1+1)*(1+1)

計(jì)算結(jié)果為16

?include命令是編譯預(yù)處理的文件包含命令,形式為了

箱nclude〈文件名〉或者箱nclude”文件名",調(diào)用標(biāo)準(zhǔn)函

數(shù)中的輸入輸出函數(shù),箱nclude"stdio.h",如果調(diào)用

數(shù)學(xué)函數(shù)(如sqrt函數(shù)、fabs函數(shù)等),則應(yīng)加上

ndude"nath.h"或者制ndude<nath.h>

U!、分支結(jié)構(gòu)

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

>、v、>=、<=>==、!=

關(guān)系運(yùn)算的結(jié)果只有兩種:真或假

C語(yǔ)言中用1表示真,用。表示假。

例16>=65>一結(jié)果均為真,值為1

例26!=6'D'=='d''9'>'F'結(jié)果均為假,值為0

?邏輯運(yùn)算符

&&(與)||(或)!俳)

優(yōu)先級(jí):非運(yùn)算>與運(yùn)算,或運(yùn)算

非運(yùn)算規(guī)則

操作數(shù)結(jié)果

真假

假真

與運(yùn)算規(guī)則

操作數(shù)1操作數(shù)2結(jié)果

真真真

真假假

假真假

假假假

或運(yùn)算規(guī)則

操作數(shù)1操作數(shù)2結(jié)果

真真真

真假真

假真真

假假假

例1若變量a值為10,變量b值為16,計(jì)算表達(dá)式。

a>b||a>sqrt(b)&&b>=16

最后結(jié)果為真,表達(dá)式的值為1

?if語(yǔ)句的一般形式:

單分支結(jié)構(gòu):

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

若表達(dá)式為真,則執(zhí)行語(yǔ)句;否則if語(yǔ)句結(jié)束。

二選一結(jié)構(gòu):

if(表達(dá)式)

{語(yǔ)句組1}

else

{語(yǔ)句組2}

表達(dá)式的值非0才執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2.

例1從鍵盤(pán)上輸入兩個(gè)整數(shù),輸出較大的數(shù)。

include<stdio.h>

main()

(

intx,y;

printf("請(qǐng)輸入兩個(gè)整數(shù):\n");

scanf("%d%d”,&x,&y);

if(x>y)

printf("%d",x);

else

printf("%d”,y);

?條件運(yùn)算符

格式:表達(dá)式1?表達(dá)式2:表達(dá)式3

若表達(dá)式1為真,結(jié)果為表達(dá)式2;否則為表達(dá)式3。

例如:x的初值為5,執(zhí)行以下語(yǔ)句

y=++x>6?100:200;最后y的值為200

?if語(yǔ)句可嵌套,在花括號(hào)里繼續(xù)使用.

多選一結(jié)構(gòu):

if(表達(dá)式1)

{語(yǔ)句組1}

elseif(表達(dá)式2)

{語(yǔ)句組2}

elseif(表達(dá)式3)

{語(yǔ)句組3}

else

{語(yǔ)句組n}

例1根據(jù)輸入的學(xué)生成績(jī),大于或等于90分為A,60

分以下等級(jí)為E,其余每10分一個(gè)等級(jí)。

#include<stdio.h>

main()

(

intg;

printf(“請(qǐng)輸入一個(gè)整數(shù):\n");

scanf("%d",&g);

if(g>=90)printf("A\n”);

elseif(g>=80)printf("B\rT);

elseif(g>=70)printf("C\rT);

elseif(g>=60)printf(',D\n'');

elseprintf("E\n");

)

?sv\itch(表達(dá)式)〃sWtch表達(dá)式通常為整型或字符型

case常量1:語(yǔ)句組1〃case后面必須是常量

case常量2:語(yǔ)句組2

default:語(yǔ)句組〃也可省略該語(yǔ)句

}

可以使用中break來(lái)中止后面語(yǔ)句的執(zhí)行.

?s對(duì)tch表達(dá)式通常為整型或字符型值,case中的常量類(lèi)

型與之對(duì)應(yīng),case后面的表達(dá)式可以是常量或常量表達(dá)

式,不能為變量表達(dá)式.

switch語(yǔ)句

格式:

switch(表達(dá)式)

case常量表達(dá)式1:語(yǔ)句1

case常量表達(dá)式2:語(yǔ)句2

case常量表達(dá)式n-1:語(yǔ)句n-1

default:語(yǔ)句n

)

若表達(dá)式的值與表達(dá)式1相等,則執(zhí)行語(yǔ)句1;若與表達(dá)

式2相等,則執(zhí)行語(yǔ)句2……若均不相等則執(zhí)行語(yǔ)句n。

例1用sw計(jì)ch語(yǔ)句重寫(xiě)學(xué)生等級(jí)程序。

#include<stdio.h>

main()

{

intg;

printf("請(qǐng)輸入一個(gè)整數(shù):\n");

scanf("%d",&g);

swi忙h(g/10)

{

case10:printf("A\n");break;

case9:printf("A\n");break;

case8:printf("B\n");break;

case7:printf("C\n");break;

case6:printf("D\n");break;

default:printf("E\n”);

)

)

程序中break表示跳過(guò)后面的分支。

五、循環(huán)結(jié)構(gòu)

?while循環(huán)

格式:

while(表達(dá)式)循環(huán)體

若表達(dá)式為真,則執(zhí)行循環(huán)體。再判斷表達(dá)式,若仍為真

則重復(fù)執(zhí)行循環(huán)體直到表達(dá)式為假時(shí)循環(huán)結(jié)束。

例1編程計(jì)算S=1+2+……100o

#include<stdio.h>

main()

intk=1,s=0;

while(k<=100)

{s=s+k;k=k+1;}

printf("%cT,s);

)

?do-while循環(huán)

格式:

do

循環(huán)體

while(表達(dá)式);

先執(zhí)行循環(huán)體,然后判斷表達(dá)式。若為真則重復(fù)執(zhí)行

循環(huán)體直到表達(dá)式為假時(shí)循環(huán)結(jié)束。

例1用do-while循環(huán)計(jì)算10!

#include<stdio.h>

main()

(

intk=1;

longs=1;

do

{s=s*k;k++;}

while(k<=10);

printf("%ld",s);

)

注意:while循環(huán)和do-while循環(huán)的區(qū)別

while循環(huán)是先判斷表達(dá)式,因此循環(huán)體有可能一次

也不執(zhí)行。do-while循環(huán)是先執(zhí)行一次循環(huán)體,再判

斷表達(dá)式,所以不論表達(dá)式為真為假,循環(huán)體至少要

執(zhí)行一次。

?for循環(huán)

格式:

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體

先執(zhí)行表達(dá)式1,然后判斷表達(dá)式2,若為真則執(zhí)行

循環(huán)體。然后執(zhí)行表達(dá)式3,再判斷表達(dá)式2,若仍

為真則重復(fù)執(zhí)行循環(huán)體直到表達(dá)式2為假時(shí)結(jié)束。

例1用for循環(huán)計(jì)算S=1+2+...100。

#include<stdio.h>

main()

intk,sum=O;

for(k=1;k<=100;k++)

sum=sum+k;

printf("%d",sum);

)

例2若一個(gè)三位數(shù)個(gè)位、十位、百位的立方和等于它本身

則稱(chēng)這個(gè)數(shù)為水仙花數(shù)。例如153是一個(gè)水仙花數(shù)。

編程輸出所有的水仙花數(shù)。

#include<stdio.h>

main()

(

inta,b,c,i;

for(i=100;i<=999;i++)

(

a=i/100;

b=i%100/10;

c=i%10;

if(a*a*a+b*b*b+c*c*c==i)

printf("%d\n",i);

?break語(yǔ)句

適用的場(chǎng)合是sWtch語(yǔ)句中,及循環(huán)語(yǔ)句中。

用在循環(huán)體內(nèi)表示強(qiáng)行退出循環(huán)。

例1計(jì)算S=1+2+3+...n,直到累加和大于5000為止。

#include<stdio.h>

main()

{

inti,s=0;

for(i=1;;i++)

(

s=s+i;

if(s>5000)break;

)

pnntf(,l%d",s);

注意:當(dāng)有多重循環(huán)時(shí),break只能退出最內(nèi)層循環(huán)。

?continue語(yǔ)句

用在循環(huán)體中用來(lái)跳過(guò)本次循環(huán)余下的語(yǔ)句,立即開(kāi)始

下一輪循環(huán),整個(gè)循環(huán)并未結(jié)束。

例1寫(xiě)出下列程序運(yùn)行結(jié)果。

inti,k=0,s=0;

for(i=1;i<=5;i++)

{

s=s+i;

if(s>5)

{printf(,,i=%d,s=%d,k=%d\n,,,i,s,k);

continue;

)

k=k+s;

printf("i=%d,s=%d,k=%d\n",i,s,k);

)

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

i=1,s=1,k=1

』2,s=3,k=4

i=3,s=6,k=4

i=4,s=10,k=4

i=5,s=15,k=4

六、數(shù)組

?數(shù)組是包含多項(xiàng)相同類(lèi)型數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu),它使用同

一個(gè)名字命名,再用下標(biāo)進(jìn)行分量標(biāo)識(shí).數(shù)組元素的下標(biāo)

從0開(kāi)始,數(shù)組長(zhǎng)度為n時(shí),最末元素的下標(biāo)是n-1.

定義一維數(shù)組

格式:類(lèi)型名數(shù)組名[元素個(gè)數(shù)]

例1定義一個(gè)包含4個(gè)整數(shù)的數(shù)組a

inta[4];

例2定義一個(gè)包含3個(gè)雙精度數(shù)的數(shù)組b

doubleb[3];

注意:C語(yǔ)言中數(shù)組的下界從。開(kāi)始計(jì)數(shù)。

例如:a[4]的4個(gè)元素分別為a[0]、a[1]>a[2],a[3]

?數(shù)組有一維數(shù)組,二維數(shù)組,和多維數(shù)組.數(shù)組中的每一個(gè)

分量稱(chēng)為一個(gè)數(shù)組元素。

?一維數(shù)組定義格式

數(shù)據(jù)類(lèi)型數(shù)組名[數(shù)組長(zhǎng)度];

〃數(shù)組長(zhǎng)度指數(shù)組中可以存放的數(shù)據(jù)元素的個(gè)數(shù),用整數(shù)

常量表示,也可用代表一個(gè)正整數(shù)的符號(hào)常量表示

例如:

intarray[10];

C語(yǔ)言規(guī)定只能逐個(gè)使用數(shù)組元素,而不能一次使用整個(gè)數(shù)

組。

?數(shù)值型一維數(shù)組的初始化,

用一對(duì)大括號(hào)將數(shù)組的初值括起來(lái)。

例如:inta[6]=<10,20,30,40,50,60};

注意:C語(yǔ)言中,不允許初值個(gè)數(shù)多于數(shù)組定義的長(zhǎng)度。

inta[]={10,20,30,40,50,60);

給初值的情況下,數(shù)組的長(zhǎng)度可省略,系統(tǒng)以初值的個(gè)數(shù)作

為數(shù)組的長(zhǎng)度。

?對(duì)部分元素的初始化,例如:inta[6]={10,20,30}是對(duì)前

3個(gè)元素的賦值.

例1inta[3]={1,2,3};

此例中a[0]值為1、a川值為2、a[2]值為3

例2inta[5]={0};

此例中數(shù)組a的全部元素值均為0

例3inta[3]={1,2,3,4);

此例中由于初值個(gè)數(shù)多于數(shù)組元素個(gè)數(shù),所以非法。

例4inta[>{0,0,0,0};

此例中省略數(shù)組元素個(gè)數(shù),初值為4個(gè)。

等價(jià)于inta[4]={0};

注意:數(shù)組名是一個(gè)常量值,不能對(duì)它賦值。

例如:inta[3];

a=5;此語(yǔ)句非法,應(yīng)改為a[0]=5;

?一維數(shù)組應(yīng)用

例1從鍵盤(pán)上輸入10個(gè)整數(shù),輸出最大數(shù)和最小數(shù)。

#include<stdio.h>

main()

inta[10],i,max,min;

printf("請(qǐng)輸入10個(gè)整數(shù):\n");

for(i=0;i<=9;i++)

scanf("%d",&a[i]);

max=a[0];

min=a[0];

for(i=1;i<=9;i++)

(

if(a[i]>max)max=a[i];

if(a[i]<min)min=a[i];

)

printf("最大數(shù)是%d\n",max);

printf("最小數(shù)是%d\n",min);

)

例2斐波數(shù)列的定義如下:

1、1、2、3、5、8、13、...

編程輸出斐波數(shù)列的第40項(xiàng)值。

#include<stdio.h>

main()

{

longa[40];

inti;

a[0]=1;

a[1]=1;

for(i=2;i<=39;i++)

a[i]=a[i-1]+a[i-2];

printf("%ld",a[39]);

?字符型一維數(shù)組中每1個(gè)元素存放一個(gè)字符常量.

如:

charchd^'XxW,'\x21','\x5a'};

該數(shù)組中的初值字符為轉(zhuǎn)義字符。

?字符串

用雙引號(hào)將一串字符括起來(lái)稱(chēng)字符串。

C語(yǔ)言中用一維數(shù)組來(lái)存放,并以'\0'作為結(jié)束標(biāo)志。

'\0’就是0,占用空間但不計(jì)入串的實(shí)際長(zhǎng)度。

例如:字符串"student”的長(zhǎng)度為7,占用空間為8

通常利用字符數(shù)組存放字符串。如:

charstr[20]={"helIo"};

該字符串的實(shí)際長(zhǎng)度為5個(gè)字符,占用的數(shù)組空間長(zhǎng)度為20

'\0'是字符串的結(jié)束標(biāo)志.系統(tǒng)在存放一個(gè)字符串時(shí),會(huì)在

,

串的最后一個(gè)字符后添加\0,o

?任何一個(gè)一維數(shù)組在內(nèi)存中都占用一段連續(xù)的空間.

?用“%”格式輸入字符串時(shí),遇到回車(chē)鍵結(jié)束,但獲得的字

符中不包含回車(chē)鍵本身,而是在字符串末尾添加'\0'.

?使用一個(gè)一維scanf()函數(shù)使用“%”格式輸入多個(gè)字符

串時(shí),輸入的各字符串之間要以空格鍵分隔.

如:charch[20];

scanf(“%二ch);〃從鍵盤(pán)輸入一個(gè)字符串存入數(shù)組ch

?用坊格式符為一個(gè)字符數(shù)組輸入字符串時(shí),只有第一個(gè)

空格之前的字符串被讀入到字符數(shù)組中.

如:對(duì)上面的ch數(shù)組,輸入"Hellow)rld1w則只有空

格前面的“Hell?!北淮嫒霐?shù)組。

?gets()函數(shù)和puts。函數(shù)專(zhuān)門(mén)用于字符串的輸入輸出,

而且只能對(duì)一個(gè)字符串進(jìn)行操作.

gets。函數(shù)格式為:

gets(字符數(shù)組名);

如:charstr[20];

gets(str);/*從鍵盤(pán)輸入一個(gè)字符串存入數(shù)組ch,輸

入時(shí)以回車(chē)鍵作為結(jié)束符.*/

puts()使用格式與gets()相同.

puts(str);〃輸出str數(shù)組中存放的字符串

?字符串常用函數(shù)

使用下列函數(shù)時(shí)要包含頭文件〈string.h>

1)字符串拷貝函數(shù)

strcpy(s1,s2)

表示將s2復(fù)制到s1中。

2)字符串連接函數(shù)

strcat(s1,s2)

表示將s2連接到s1后面形成一個(gè)新字符串。

3)字符串長(zhǎng)度函數(shù)

strlen(s)

計(jì)算出s的實(shí)際長(zhǎng)度不包括‘\0'。

4)字符串比較函數(shù)

strcmp(s1,s2)

若s1>s2,函數(shù)返回值大于0

若s1=s2,函數(shù)返回值等于0

若s1vs2,函數(shù)返回值小于0

?字符串應(yīng)用

例1從鍵盤(pán)上輸入一個(gè)字符串,輸出它的長(zhǎng)度。

#include<stdio.h>

#include<string.h>

main()

char*p,str[100];

P=str;

printf("請(qǐng)輸入一個(gè)字符串:\n");

gets(p);

printf("%d",strlen(p));

?定義二維數(shù)組

格式:類(lèi)型名數(shù)組名[一維上界][二維上界]

例1定義一個(gè)2行2列的整型數(shù)組a

inta[2][2];

此例中數(shù)組a共有4個(gè)元素,分別是a[0][0]>a[0][1]>

a[1][0]>a[1][1]o

例2定義一個(gè)4行4列的整型矩陣a

inta[4][4];

?二維數(shù)組的初始化

用嵌套的大括號(hào)將數(shù)組初值括起來(lái)。

例1例a[4][3]={{1,2,3},{4,5,6},{7,8.9},{10,11,12)};

例2inta[4][3]={{1,2},{4,5},{7},{10});

此例中系統(tǒng)自動(dòng)給空缺的地方補(bǔ)0

例3inta[4][3]={{152},{4,5}};

系統(tǒng)自動(dòng)給后面的行補(bǔ)初值0

例4inta[4][3]={1,2,4,5};

此例中數(shù)組a的第一行中元素和第二行的第一個(gè)

元素依次為1,2,4,5其余全部為0

?定義二維數(shù)組大小

例1inta[][3]={{1,2,3},{4,5},{6},{8});

有4個(gè)行花括號(hào),因此說(shuō)明是4行3歹U。

例2inta[][3]={1,2,3,4,5};表示一個(gè)2行3列數(shù)組。

?定義并初始化二維數(shù)組時(shí),數(shù)組的列數(shù)不能省略。如:

inta[2][]={{1,2}r{3,4,5}};是錯(cuò)誤的。

?二維數(shù)組應(yīng)用

例:從鍵盤(pán)上輸入5個(gè)學(xué)生3門(mén)課程的成績(jī),分別計(jì)算

每個(gè)學(xué)生的平均分和每門(mén)課程的平均分。

#include<stdio.h>

#defineM5

#defineN3

main()

inta[M][N],i,j,sum;

printf("請(qǐng)輸入15個(gè)分?jǐn)?shù)(0-100)個(gè))

for(i=0;i<=M-1;i++)

for(j=0;j<=N-1;j++)

scanf("%d",&a[i][j]);

printf("每個(gè)學(xué)生的平均分\n");

for(i=0;i<=M-1;i++)

(

sum=0;

for(j=0;j<=N-1;j++)

sum=sum+a[i][j];

printf("%4d",sum/N);

)

printf("\n");

printf("每門(mén)課程的平均分\n");

for(i=0;i<=N-1;i++)

{

sum=0;

for(j=0;j<=M-1;j++)

sum=sum+a[j][i];

printf("%4d",sum/M);

七、函數(shù)

?帶返回值的函數(shù)

格式:

類(lèi)型名函數(shù)名(參數(shù)列表)

(

語(yǔ)句

return返回值

)

例1已知F(X)=2*X+3,計(jì)算F⑴+F⑵+….F(10)的值。

#include<stdio.h>

intf(intx)

(

return2*x+3;

)

main()

inti,sum=O;

for(i=1;i<=10;i++)

sum=sum+f(i);

pnntf("%d",sum);

)

例2編程輸出2至100之間所有的素?cái)?shù)之和。

#include<stdio.h>

intisprime(intnum)

(

inti;

for(i=2;i<=num-1;i++)

if(num%i==0)

return0;

return1;

)

main()

(

inti,sum=0;

for(i=2;i<=100;i++)

if(isprime(i)==1)

sum=sum+i;

printf("%d",sum);

例3從鍵盤(pán)上輸入兩個(gè)整數(shù),分別輸出它們的最大公約數(shù)

和最小公倍數(shù)。

#include<stdio.h>

intgetmax(inta,intb)

{

intresult;

result=a<b?a:b;

while(a%result!=O||b%result!=O)

result=result-1;

returnresult;

)

intgetmin(inta,intb)

{

intresult=1;

while(result%a!=O||result%b!=O)

result=result+1;

returnresult;

)

main()

inta,b;

printf("請(qǐng)輸入兩個(gè)整數(shù):\n");

scanf("%d%d",&a,&b);

printf("最大公約數(shù)是%d\n",getmax(a,b));

printf("最小公倍數(shù)是%d\rT,getmin(a,b));

)

?不帶返回值的函數(shù)

格式:

void函數(shù)名(參數(shù)列表)

(

語(yǔ)句

)

?函數(shù)的遞歸

指一個(gè)函數(shù)在內(nèi)部又調(diào)用自己的過(guò)程。

例:用遞歸的方法計(jì)算斐波數(shù)列的第40項(xiàng)。

#include<stdio.h>

longf(intn)

(

if(n==1||n==2)

return1;

else

returnf(n-1)+f(n-2);

main()

printf("%ld",f(40));

)

?傳值和傳地址

傳值是指子程序中變量的變化不會(huì)影響主程序變量。

傳地址是指子程序中變量的變化會(huì)影響主程序變量。

例1交換兩變量a和b的值。(傳值方式)

#include<stdio.h>

voidchange(inta,intb)

(

intt;

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

)

main()

(

inta=3,b=5;

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

change(a,b);

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

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

a=3b=5

a

溫馨提示

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