版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度環(huán)保型鋼管扣件運(yùn)輸與回收利用協(xié)議3篇
- 二零二五版電子元件采購(gòu)合同數(shù)量取消及供應(yīng)鏈調(diào)整補(bǔ)充協(xié)議3篇
- 2024建造師勞動(dòng)合同
- 2025年度民族特色餐廳租賃及文化傳承合作協(xié)議3篇
- 二零二五年房地產(chǎn)糾紛調(diào)解估價(jià)委托合同模板3篇
- 2024年項(xiàng)目聯(lián)合開(kāi)發(fā)協(xié)議3篇
- 二零二五年度高品質(zhì)建筑材料租賃與運(yùn)輸管理合同3篇
- 二零二五版商用空調(diào)租賃與能源消耗優(yōu)化合同3篇
- 威海職業(yè)學(xué)院《突發(fā)公衛(wèi)事件應(yīng)急處理》2023-2024學(xué)年第一學(xué)期期末試卷
- 天津城市職業(yè)學(xué)院《災(zāi)害防御與避險(xiǎn)應(yīng)急》2023-2024學(xué)年第一學(xué)期期末試卷
- DB22T 5005-2018 注塑夾芯復(fù)合保溫砌塊自保溫墻體工程技術(shù)標(biāo)準(zhǔn)
- 醫(yī)院手術(shù)室醫(yī)院感染管理質(zhì)量督查評(píng)分表
- 心內(nèi)電生理導(dǎo)管及器械
- 稱(chēng)量與天平培訓(xùn)試題及答案
- 超全的超濾與納濾概述、基本理論和應(yīng)用
- 2020年醫(yī)師定期考核試題與答案(公衛(wèi)專(zhuān)業(yè))
- 2022年中國(guó)育齡女性生殖健康研究報(bào)告
- 各種靜脈置管固定方法
- 消防報(bào)審驗(yàn)收程序及表格
- 教育金規(guī)劃ppt課件
- 呼吸機(jī)波形分析及臨床應(yīng)用
評(píng)論
0/150
提交評(píng)論