C語言期末考試復(fù)習(xí)資料-完整版課件_第1頁
C語言期末考試復(fù)習(xí)資料-完整版課件_第2頁
C語言期末考試復(fù)習(xí)資料-完整版課件_第3頁
C語言期末考試復(fù)習(xí)資料-完整版課件_第4頁
C語言期末考試復(fù)習(xí)資料-完整版課件_第5頁
已閱讀5頁,還剩115頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言期末復(fù)習(xí)大綱幸運(yùn)考試的主要題型和分?jǐn)?shù)分布:1單項(xiàng)選擇題(10小題,每題2分,共20分)2填空題(每空1分,共10分)3閱讀程序(每題2分,共10分)4程序填空(每空2分,共40分)5編寫程序(2小題,每題10分,共20分)幸運(yùn)第一章C語言概述幸運(yùn)

第1章C語言概述本章包含4項(xiàng)目重點(diǎn)內(nèi)容:1簡單的C語言程序#include<stdio.h>voidmain(){printf("ThisisaCprogram.\n");}幸運(yùn)

2VC++6.0環(huán)境:編輯C語言源程序后綴是.c或.cpp經(jīng)過編譯產(chǎn)生目標(biāo)文件,后綴是.obj再經(jīng)過連接成為可執(zhí)行文件,后綴是.exe3C語言是結(jié)構(gòu)化程序,有三種結(jié)構(gòu)(1)順序結(jié)構(gòu);(2)選擇結(jié)構(gòu);(3)循環(huán)結(jié)構(gòu);幸運(yùn)4C語言是由函數(shù)組成的,其中必須有一個(gè)并且只有一個(gè)主函數(shù)main,程序的執(zhí)行從main函數(shù)開始,到main函數(shù)結(jié)束.幸運(yùn)第二章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式幸運(yùn)C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。

數(shù)據(jù)類型構(gòu)造類型指針類型空類型(無值類型)void枚舉類型enum數(shù)組類型結(jié)構(gòu)類型struct聯(lián)合類型

union基本類型整型int字符型char實(shí)型(浮點(diǎn)型)單精度實(shí)型

float雙精度實(shí)型

double幸運(yùn)

常量與變量

常量和符號(hào)常量在程序運(yùn)行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型100,125,-100,0實(shí)型3.14,0.125,-3.1e3字符型‘a(chǎn)’,’\057’,‘\x3c’字符串“a”,“ab”,”1232”定義字符常量:#definePI3.1415926#defineN20幸運(yùn)

變量命名的規(guī)定:C語言規(guī)定標(biāo)識(shí)符:1只能由字母、數(shù)字和下劃線三種字符組成;(注意不要混淆下劃線_和杠號(hào)(減號(hào))-)2第一個(gè)字符必須為字母或下劃線;3不能使用關(guān)鍵字.

例:sum,_123,m123,Student_name1

12a,Jo-hn,¥123,a#b,int

幸運(yùn)整型常量的表示方法整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。

如:123,-456(2)八進(jìn)制整數(shù)。以0開頭的數(shù)是八進(jìn)制數(shù)。

如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)830129非法(每位0-7合法)(3)十六進(jìn)制整數(shù)。以0x開頭的數(shù)是16進(jìn)制數(shù)。如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)291而0x12g非法(每位0-f合法)幸運(yùn)

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

字符常量(1)用單引號(hào)包含的單個(gè)字符(2)用單引號(hào)包含的由\開始的轉(zhuǎn)義字符例‘a(chǎn)’,’A’,‘1’,’\037’,’\x2d’‘a(chǎn)bc’,“a”,’\082’,’\x5g’

幸運(yùn)字符串常量字符串常量是一對(duì)雙引號(hào)括起來的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個(gè)字符串,如

printf(“Howdoyoudo.”);幸運(yùn)C運(yùn)算符簡介C的運(yùn)算符有以下幾類:(1)算術(shù)運(yùn)算符(+-*/%)(2)關(guān)系運(yùn)算符(><==>=<=!=)(3)邏輯運(yùn)算符(?。Γ|)(4)位運(yùn)算符(<<>>~|∧&)(5)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符(?:)幸運(yùn)算術(shù)運(yùn)算符和算術(shù)表達(dá)式基本的算術(shù)運(yùn)算符:+(加法運(yùn)算符或正值運(yùn)算符如:3+5、+3)-(減法運(yùn)算符或負(fù)值運(yùn)算符,如:5-2、-3)*(乘法運(yùn)算符。如:3*5)/(除法運(yùn)算符,實(shí)數(shù)相除結(jié)果是雙精度實(shí)數(shù),整數(shù)相除結(jié)果是整數(shù);兩數(shù)同號(hào)結(jié)果是正數(shù),兩數(shù)異號(hào)結(jié)果是負(fù)數(shù),且舍入得方向不固定,Vc++是“向0取整)%(求余運(yùn)算符,%兩側(cè)必須為整型數(shù)據(jù),結(jié)果與被除數(shù)一致。)幸運(yùn)

自增、自減運(yùn)算符作用是使變量的值增1或減1如:++i,--i(在使用i之前,使i+1或-1)

i++,i--(在使用i之后,使i+1或-1)

就是使用i的原值執(zhí)行本條語句,

而在執(zhí)行下條語句前將i+1或-1

intm=5,n=10;printf("%d,%d\n",m++,--n);

顯示5,9若再有:printf(“%d\n”,m);顯示6幸運(yùn)賦值運(yùn)算符

賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量,如a=5;(單等號(hào))而a==5是判斷a是否等于5;(雙等號(hào))如inta=3;if(a==2)為假,而if(a=5)為真。幸運(yùn)第三章最簡單的c程序設(shè)計(jì)--順序程序設(shè)計(jì)幸運(yùn)C語句概述C程序源程序文件1源程序文件2源程序文件n預(yù)處理命令函數(shù)n函數(shù)1數(shù)據(jù)聲明函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語句幸運(yùn)

C語句概述控制語句完成一定的控制功能 1if()~else條件語句6break間斷語句 2for()~循環(huán)語句7switch()開關(guān)語句 3while()~循環(huán)語句8goto轉(zhuǎn)向語句 4do~while();循環(huán)語句9return返回語句 5continue繼續(xù)語句幸運(yùn)

格式輸入與輸出(一).格式輸出函數(shù)函數(shù)作用:向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出若干個(gè)任意類型的數(shù)據(jù)。一般格式:printf(格式控制,輸出表列)%d:以帶符號(hào)的十進(jìn)制形式輸出整數(shù)%o:以八進(jìn)制無符號(hào)形式輸出整數(shù)%x:以十六進(jìn)制無符號(hào)形式輸出整數(shù)幸運(yùn)

格式輸入與輸出%u:以無符號(hào)十進(jìn)制形式輸出整數(shù)%c:以字符形式輸出,只輸出一個(gè)字符%s:輸出字符串%f:以小數(shù)形式輸出單,雙精度數(shù),隱含輸出六位小數(shù)%e:以指數(shù)形式輸出實(shí)數(shù)%g:選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0幸運(yùn)

格式輸入與輸出用printf和scanf函數(shù)輸出和輸入數(shù)據(jù)。

#include<stdio.h>

intmain()

{

inta,b,c;

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

printf(“%d,%d,%d\n”,a,b,c);

}

運(yùn)行情況:

3,4,5(輸入a,b,c的值)

3,4,5(輸出a,b,c的值)表示a在內(nèi)存中的地址其中,&是地址運(yùn)算符幸運(yùn)

在格式輸入與輸出中

格式控制是用雙引號(hào)包括的,其中一般帶有%d,%c,%f,%s等各種對(duì)數(shù)據(jù)類型的要求.幸運(yùn)第四章選擇結(jié)構(gòu)程序設(shè)計(jì)幸運(yùn)

關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算符及其優(yōu)先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)說明:關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符幸運(yùn)

關(guān)系運(yùn)算符和關(guān)系表達(dá)式2.關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,字符表達(dá)式)接起來的式子,稱關(guān)系表達(dá)式例:a>b,a+b>b+c,(a=3)>(b=5),’a’<‘b’,(a>b)>(b<c)關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。例:關(guān)系表達(dá)式”a>b”的值為“真”,表達(dá)式的值為1。C語言中沒有專用的邏輯值,1代表真,0代表假幸運(yùn)

邏輯運(yùn)算符和邏輯表達(dá)式1.邏輯運(yùn)算符及其優(yōu)先次序(1)&&(邏輯與)(2)||(邏輯或)(3)!(邏輯非)

優(yōu)先次序:邏輯非!

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

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

邏輯與或

賦值運(yùn)算符

或運(yùn)算中有1,值為1,與運(yùn)算中有0,值為0幸運(yùn)if語句2.If語句的嵌套在if語句中又包含一個(gè)或多個(gè)if語句稱為if語句的嵌套。形式:if()

if()語句1 else語句2else

if()語句3 else語句4內(nèi)嵌if幸運(yùn)if語句如inta=3,b=4,c=5;if(a<b)a=b;b=c;c=a;if(a>b)a=b;b=c;c=a;第1個(gè),因?yàn)閍<b,所以a=b;b=c;c=a;都執(zhí)行,第2個(gè),因?yàn)閍不大于b,所以不執(zhí)行a=b;只執(zhí)行b=c;c=a;

那么a,b,c是4,5,4那么a,b,c是3,5,3幸運(yùn)條件運(yùn)算符格式:表達(dá)式1?表達(dá)式2∶表達(dá)式3功能:判斷表達(dá)式1的值,如果成立就執(zhí)行表達(dá)式2,否則就執(zhí)行表達(dá)式3max=(a>b)?a:b;min=(a<b)?a:b;幸運(yùn)if語句例:輸入一個(gè)字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。

#include<stdio.h>

voidmain()

{charch;

scanf(“%c”,&ch);

ch=(‘A’<=ch&&ch<=‘Z’)?(ch+32):ch;

printf(“%c\n”,ch);

}

//注意:不能用‘A’<=ch<=‘Z’,它永遠(yuǎn)為真如果字符變量ch的值為大寫字母,則條件表達(dá)式的值為(ch+32),即相應(yīng)的小寫字母。如果ch的值不是大寫字母,則條件表達(dá)式的值為ch,即不進(jìn)行轉(zhuǎn)換。

幸運(yùn)幾個(gè)典型的判斷:判斷大寫字母:if(‘A’<=c&&c<=‘Z’)判斷小寫字母:if(‘a(chǎn)’<=c&&c<=‘z’)判斷數(shù)字:if(‘0’<=c&&c<=‘9’)判斷閏年:if((year%4==0&&year%100!=0)||year%400==0)幸運(yùn)注意:例如在判斷數(shù)字中:if(‘0’<=c&&c<=‘9’)不可以沒有&&,也不能沒有’’即不能用if(‘0’<=c<=‘9’)也不能用

if(0<=c&&c<=9)但可以用

if(48<=c&&c<=57)(想想為什么?)幸運(yùn)用switch語句實(shí)現(xiàn)(若a是整數(shù))按照考試成績輸出等級(jí)百分制分?jǐn)?shù)段

switch((a/10))

{case10: case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break;

default:grade='E'; }幸運(yùn)第五章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)幸運(yùn)

用while語句實(shí)現(xiàn)循環(huán)while語句用來實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。一般形式:

while(表達(dá)式)語句當(dāng)表達(dá)式為非0值時(shí),執(zhí)行while語句中的內(nèi)嵌語句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語句。幸運(yùn)

求正整數(shù)m和n的最大公約數(shù)和最小公倍數(shù):

#include<stdio.h>

voidmain()

{

intp,r,n,m;

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

scanf("%d,%d,",&n,&m);

p=n*m;

while(m!=0)

{r=n%m;n=m;m=r;}

printf("它們的最大公約數(shù)為:%d\n",n);

printf("它們的最小公倍數(shù)為:%d\n",p/n);}幸運(yùn)其中用下面的輾轉(zhuǎn)相除法求出最大公約數(shù)nwhile(m!=0){r=n%m;n=m;m=r;}把它獨(dú)立出來就是一個(gè)函數(shù)inthcf(intm,intn){intr;while(m!=0)

{r=n%m;n=m;m=r;}return(n);}用p/n得到最小公倍數(shù)

幸運(yùn)

用do-while語句實(shí)現(xiàn)循環(huán)

do-while語句的特點(diǎn):先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。一般形式:

do{循環(huán)體語句}while(表達(dá)式);執(zhí)行過程:先執(zhí)行一次指定的循環(huán)體語句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”)時(shí),返回重新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。幸運(yùn)例如:為了保證輸入成績的正確,可以使用語句:printf("請(qǐng)輸入學(xué)生成績a(0-100):");scanf("%d",&a);while(a<0||a>100){printf("\n輸入有誤,請(qǐng)重輸:");scanf("%d",&a);}

幸運(yùn)

我們更簡潔地用do-while語句do

{printf(“請(qǐng)輸入成績a(0-100):”);scanf(“%d”,&a);}while(a<0||a>100);

注意while(a<0||a>100);的含義和;號(hào)

幸運(yùn)

用do-while語句計(jì)算10!i=1;s=1;do{s=s*i;i++;}while(i<=10);不是:i=1;s=0;do{s=s*i;i++;}while(i<=10);也不是:do{i=1;s=1;s=s*i;i++;}while(i<=10);do{i=1;s=0;s=s*i;i++;}while(i<=10);幸運(yùn)while語句和用do-while語句的比較:while是先判斷條件,再?zèng)Q定是否執(zhí)行,所以可能一次也不執(zhí)行;do-while是先執(zhí)行再判斷條件,決定是否還執(zhí)行,所以至少執(zhí)行一次.幸運(yùn)

用for語句實(shí)現(xiàn)循環(huán)C語言中的for語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語句。一般形式:

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句幸運(yùn)注意:for中用兩個(gè)分號(hào)隔開,不能省略;for只對(duì)其后第一個(gè)語句有效,如果要求對(duì)多條語句有效,必須用花括號(hào)括之成為復(fù)合語;for()后通常沒有分號(hào),有分號(hào)將不執(zhí)行任何語句,只執(zhí)行自己的循環(huán);

幸運(yùn)下面是用for語句顯示數(shù)組a中的最小值的程序#include<stdio.h>voidmain(){inta[5]={4,2,8,9,5},i,min;min=a[0];for(i=1;i<5;i++)if(min>a[i])min=a[i];printf("%d\n",min);}幸運(yùn)break語句和continue語句

break語句

break語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán).

一般形式:

break;注意:break語句只能用于循環(huán)語句或switch語句中。

幸運(yùn)

continue語句作用為結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進(jìn)行下一次循環(huán)的判定.一般形式:

continue;幸運(yùn)例把100~200之間的不能被3整除的數(shù)輸出。

#include<stdio.h>

voidmain()

{intn;

for(n=100;n<=200;n++)

{if(n%3==0)continue;

printf(″%d″,n);

}

}

注意是把能被3整除的跳過.不能用n%3!=0幸運(yùn)

判斷m是否素?cái)?shù)。

#include<stdio.h>

#include<math.h>

voidmain()

{intm,i,k;

scanf(″%d″,&m);

k=sqrt(m);

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

if(m%i==0)break;

if(i>k)printf("%disaprimenumber\n″,m);

elseprintf("%disnotaprimenumber\n″,m);

}幸運(yùn)

也可以是:

#include<stdio.h>

#include<math.h>

voidmain()

{intm,I,k,flag=1;

scanf(″%d″,&m);

k=sqrt(m);

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

if(m%i==0){flag=0;break;}

if(flag)printf("%disaprimenumber\n″,m);

elseprintf("%disnotaprimenumber\n″,m);

}幸運(yùn)第六章數(shù)組幸運(yùn)

一維數(shù)組

所謂數(shù)組就是一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合。幸運(yùn)一維數(shù)組的定義格式為:例如:

inta[10];或者是:#defineN10;inta[N];(方括號(hào)中必須是常數(shù))注意:1此數(shù)組有10個(gè)元素.分別是a[0]-a[9]

注意:從0開始編號(hào),沒有數(shù)組元素a[10]2元素個(gè)數(shù)必須是常量.所以不可以:intn=10,a[n];//這里n是變量不可以用圓括號(hào):inta(n);也不可是:intn,a[n];scanf(“%d”,&n);

幸運(yùn)

字符數(shù)組的定義例如:charc[10]={‘I’,'‘,’a’,’m’,’‘,’h’,’a’,’p’,’p’,’y’};c[0]=′I′;c[1]=′′;c[2]=′a′;c[3]=′m′;c[4]=′′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′;幸運(yùn)對(duì)字符串初始化,最好的方法是:例如:Charc[]=“Iamaboy”;

字符串的初始化幸運(yùn)字符串和字符串結(jié)束標(biāo)志

為了測(cè)定字符串的實(shí)際長度,C語言規(guī)定了一個(gè)“字符串結(jié)束標(biāo)志”——‘\0’。幸運(yùn)字符數(shù)組的輸入輸出

字符數(shù)組的輸入輸出可以有兩種方法:逐個(gè)字符輸入輸出。用格式符“%c”輸入或輸出一個(gè)字符。將整個(gè)字符串一次輸入或輸出。用“%s”格式符,意思是對(duì)字符串的輸入輸出。

幸運(yùn)

如果利用一個(gè)scanf函數(shù)輸入給多個(gè)字符串,則在輸入時(shí)以空格分隔。例如:charstrl[5],str2[5],str3[5];scanf(″%s%s%s″,str1,str2,str3);輸入數(shù)據(jù):Howareyou?數(shù)組中未被賦值的元素的值自動(dòng)置′\0′。幸運(yùn)1.puts函數(shù)其一般形式為:puts(str);

字符串處理函數(shù)

2.gets函數(shù)其一般形式為:gets(str);幸運(yùn)說明:

用scanf(“%s”,str);只能輸入單詞(不包含空格),

而gets(str);可以輸入句子(即可以包含空格);

注意不是gets(“%s”,str);

也不是gets(&str);

幸運(yùn)3.strcat函數(shù)其一般形式為:strcat(字符數(shù)組1,字符數(shù)組2)Strcat的作用是連接兩個(gè)字符數(shù)組中的字符串,把字符串2接到字符串1的后面幸運(yùn)4.strcpy函數(shù)其一般形式為:strcpy(字符數(shù)組1,字符串2)

strcpy是“字符串復(fù)制函數(shù)”。作用是將字符串2復(fù)制到字符數(shù)組1中去。例如:charstr1[10],str2[]={″China″};strcpy(str1,str2);

幸運(yùn)關(guān)于strcpy函數(shù)的幾點(diǎn)說明(1)字符數(shù)組1必須定義得足夠大,以便容納被復(fù)制的字符串。字符數(shù)組1的長度不應(yīng)小于字符串2的長度。(2)“字符數(shù)組1”必須寫成數(shù)組名形式(如str1),“字符串2”可以是字符數(shù)組名,也可以是一個(gè)字符串常量。如strcpy(str1,″China″);幸運(yùn)(3)復(fù)制時(shí)連同字符串后面的′\0′一起復(fù)制到字符數(shù)組1中。幸運(yùn)(4)不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。如:

str1=″China″;不合法

str1=str2;不合法用strcpy函數(shù)只能將一個(gè)字符串復(fù)制到另一個(gè)字符數(shù)組中去。用賦值語句只能將一個(gè)字符賦給一個(gè)字符型變量幸運(yùn)5.strcmp函數(shù)其一般形式為:strcmp(字符串1,字符串2)例如:strcmp(str1,str2);strcmp(″China″,″Korea″);strcmp(str1,″Beijing″);幸運(yùn)比較的結(jié)果由函數(shù)值返回(1)

如果字符串1=字符串2,函數(shù)值為0。(2)

如果字符串1>字符串2,函數(shù)值為1。(3)

如果字符串1<字符串2,函數(shù)值為-1。注意:判斷str1是否大于str2,不能用以下式:if(str1>str2)只能用if(strcmp(str1,str2)>0)幸運(yùn)6.strlen函數(shù)其一般形式為:strlen(字符數(shù)組)strlen是測(cè)試字符串長度的函數(shù)。函數(shù)的值為字符串中的實(shí)際長度(不包括′\0′在內(nèi))。例如:charstr[10]={″China″};printf(″%d″,strlen(str));輸出結(jié)果不是10,也不是6,而是5,即有效字符數(shù).幸運(yùn)strlwr(字符串)

strlwr函數(shù)7.strlwr函數(shù)其一般形式為:的作用是將字符串中大寫字母換成小寫字母。8.strupr函數(shù)其一般形式為:strupr(字符串)strupr函數(shù)的作用是將字符串中小寫字母換成大寫字母。

幸運(yùn)使用字符串函數(shù)時(shí),必須包括字符串函數(shù)庫:#include<string.h>幸運(yùn)我們可以不使用字符串函數(shù)編寫程序:例如:不使用strcat連接兩個(gè)字符串;不使用strcpy拷貝字符串;不使用strcmp比較字符串;幸運(yùn)不使用strcpy拷貝字符串:1用數(shù)組:For(i=0;i<=strlen(s2);i++)S1[i]=s2[i];2用指針:p1=s1;p2=s2;while(*p1++=*p2++);尋找字符串尾:while(s1[i])i++;i就是字符串尾的下標(biāo),再拷貝就是連接。幸運(yùn)第七章函數(shù)幸運(yùn)

簡單的C語言函數(shù)#include<stdio.h>/*文件包含*/voidmain()/*主函數(shù)*/{/*函數(shù)體開始*/printf(“ThisisaCprogram.\n”);/*函數(shù)體語句*/}/*函數(shù)體結(jié)束*/

幸運(yùn)說明:main是主函數(shù)名,void是函數(shù)類型每個(gè)C程序是由若干函數(shù)組成的,其中必有一個(gè)并且只能有一個(gè)主函數(shù)main()每個(gè)C程序從main函數(shù)開始執(zhí)行,到main函數(shù)結(jié)束,即執(zhí)行的是主函數(shù)的函數(shù)體,與主函數(shù)main在程序中的位置無關(guān);幸運(yùn){}是函數(shù)開始和結(jié)束的標(biāo)志,不可省略;每個(gè)C語句以分號(hào)結(jié)束;在主函數(shù)中直接或間接調(diào)用其他函數(shù);使用標(biāo)準(zhǔn)輸入出庫函數(shù)時(shí)應(yīng)寫:#include<stdio.h>使用數(shù)學(xué)庫函數(shù)和字符串函數(shù)時(shí)應(yīng)寫:#include<math.h>#include<string.h>幸運(yùn)

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

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

intmax(intx,inty)

函數(shù)體:花括號(hào)內(nèi)的部分。若一個(gè)函數(shù)有多個(gè)花括號(hào),則最外層的一對(duì)花括號(hào)為函數(shù)體的范圍。幸運(yùn)

函數(shù)定義的一般形式

類型標(biāo)識(shí)符函數(shù)名(形式參數(shù)表列){

聲明部分

語句部分}其中類型標(biāo)識(shí)符是函數(shù)返回值的數(shù)據(jù)類型,如:int,charfloat,double等,也可以是無返回值,寫為void.也可以沒有形式參數(shù)表列,稱為無參函數(shù).幸運(yùn)例如:intmax(intx,inty){intz;/*函數(shù)體中聲明部分*/z=x>y?x∶y;/*函數(shù)體中語句部分*/

return(z);/*返回值*/

幸運(yùn)

函數(shù)參數(shù)和函數(shù)的值形式參數(shù)和實(shí)際參數(shù)

形式參數(shù):函數(shù)名后面括弧中的變量名稱為“形式參數(shù)”(簡稱“形參”);實(shí)際參數(shù):主調(diào)函數(shù)中調(diào)用一個(gè)函數(shù)時(shí),函數(shù)名后面括弧中的參數(shù)(可以是一個(gè)表達(dá)式)稱為“實(shí)際參數(shù)”(簡稱“實(shí)參”);函數(shù)返回值:return后面的括弧中的值作為函數(shù)帶回的值(稱函數(shù)返回值)。幸運(yùn)說明:

1.函數(shù)的返回值是通過函數(shù)中的return語句獲得的。一個(gè)函數(shù)中可以有一個(gè)以上的return語句,執(zhí)行到哪一個(gè)return語句,哪一個(gè)語句起作用。幸運(yùn)

函數(shù)的調(diào)用

對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型在一個(gè)函數(shù)中調(diào)用另一函數(shù)(即被調(diào)用函數(shù))需要具備哪些條件呢?1.首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫函數(shù)或用戶自己定義的函數(shù))。幸運(yùn)3.如果使用用戶自己定義的函數(shù),而該函數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的后面,應(yīng)該在主調(diào)函數(shù)中對(duì)被調(diào)用的函數(shù)作聲明,即寫上函數(shù)的原型。用函數(shù)首部加上;號(hào)表示函數(shù)聲明.2.如果使用庫函數(shù),還應(yīng)該在本文件開頭用#include命令將調(diào)用有關(guān)庫函數(shù)時(shí)所需用到的信息“包含”到本文件中來。如#include<stdio.h>#include<math.h>#include<string.h>幸運(yùn)函數(shù)調(diào)用的實(shí)例(求兩整數(shù)的最大公約數(shù)):#include<stdio.h>voidmain(){inthcf(intu,intv);//函數(shù)聲明intu,v,h;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("%d,%d的最大公約數(shù)是:%d\n",u,v,h);}//函數(shù)定義inthcf(intu,intv)//函數(shù)首部{intr;while(v!=0){r=u%v;u=v;v=r;}return(u);}幸運(yùn)

局部變量和全局變量局部變量

在一個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是說只有在本函數(shù)內(nèi)才能使用它們,在此函數(shù)以外是不能使用這些變量的。這稱為“局部變量”。

幸運(yùn)全局變量在函內(nèi)定義的變量是局部變量,而在函數(shù)外定義的變量稱為外部變量,也稱全局變量.靜態(tài)局部變量是函數(shù)中保持最近值不釋放的變量在函數(shù)中用下面方式定義:staticintc=7;幸運(yùn)

考察靜態(tài)局部變量的值#include<stdio.h>voidmain(){intf(inta);

inta=2,i;for(i=0;i<3;i++)

printf(″%d″,f(a));}intf(inta){intb=0;staticint

c=3;b=b+3;c=c+2;return(a+b+c);}3次調(diào)用函數(shù)f后,c的值是9幸運(yùn)第八章指針幸運(yùn)

地址和指針的概念內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是“地址”。如果在程序中定義了一個(gè)變量,在對(duì)程序進(jìn)行編譯時(shí),系統(tǒng)就會(huì)給這個(gè)變量分配內(nèi)存單元。幸運(yùn)一個(gè)變量的地址稱為該變量的“指針”。例如,地址2000是變量i的指針。如果有一個(gè)變量專門用來存放另一變量的地址(即指針),則它稱為“指針變量”。指針和指針變量的定義:幸運(yùn)

指針變量的引用

注意:指針變量中只能存放地址(指針),不要將一個(gè)整數(shù)(或任何其他非地址類型的數(shù)據(jù))賦給一個(gè)指針變量。

例通過指針變量訪問整型變量#include<stdio.h>void

main(){inta;

int*p;a=100;

p=&a;/*把變量a的地址賦給p*/printf(“%d,%d\n”,a,*p);}幸運(yùn)對(duì)“&”和“*”運(yùn)算符說明:如果已執(zhí)行了語句p=&a那么:那么a和*p是相同的值所以,如果a=3;Printf(“%d,%d”,a,*p);顯示是3,3所以,如果*p=6;Printf(“%d,%d”,a,*p);顯示是6,6幸運(yùn)

指針變量作為函數(shù)參數(shù)例10.3對(duì)輸入的兩個(gè)整數(shù)按大小順序輸出

#include<stdio.h>voidmain(){voidswap(int*p1,int*p2);

inta,b;

int*p1,*p2;

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

p1=&a;p2=&b;

if(a<b)

swap(p1,p2);

printf(″\n%d,%d\n″,a,b);}幸運(yùn)voidswap(int*p1,int*p2){inttemp;

temp=*p1;

*p1=*p2;

*p2=temp;}幸運(yùn)下面的函數(shù):voidswap(inta,intb){inttemp;

temp=a;

a=b;

b=temp;/*只在函數(shù)中交換了局部變量*/

}同樣不可用函數(shù):voidswap(int*p,intb)或voidswap(inta,int*p)只能用函數(shù)voidswap(int*p1,int*p2)處理主調(diào)用函數(shù)中的變量幸運(yùn)定義一個(gè)指向數(shù)組元素的指針變量的方法例如:inta[10],*p;

p=a;(a是數(shù)組的首地址,注意a前沒有地址符)

或p=&a[0];雖然a和p都是地址,它們是不同的:a是數(shù)組的首地址,一旦由系統(tǒng)分配,就是一個(gè)固定的值;而p是指針變量,是可以改變的.所以a++是錯(cuò)誤的,而p++是正確的.

指向數(shù)組元素的指針幸運(yùn)10.3.2通過指針引用數(shù)組元素如果inta[6],*p=a;引用一個(gè)數(shù)組元素,可以用:(1)下標(biāo)法,如a[i]形式;(2)地址或指針法,如*(a+i)或*(p+i)注意:a[0]-a[5]合法,a[6]非法;*(a)-*(a+5)合法,*(a+6)非法;*(p)-*(p+5)合法,*(p+6)非法;幸運(yùn)

字符串與指針字符串的表示形式

例定義一個(gè)字符數(shù)組,對(duì)它初始化,然后輸出該字符串

#include<stdio.h>voidmain(){char*s=″abcdefg″;

printf(″%s\n″,s);}輸出abcdefg(1)用字符數(shù)組存放一個(gè)字符串,然后輸出該字符串。幸運(yùn)輸出cdefg的語句是:printf(″%s\n″,s+2);s+2是指針輸出efg的語句是:printf(″%s\n″,s+4);s+4是指針輸出字符f的語句是:printf(″%c\n″,*(s+5));*(s+5)是字符注意:輸出字符串用%s和指針;輸出字符用%c和*(指針)幸運(yùn)指針運(yùn)算與數(shù)據(jù):#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10},*p;p=a;printf("%d,",*(p+2));printf("%d,",*++p);printf("%d,",*p++);printf("%d\n",*++p);}顯示6,4,4,8注意1p+2沒有改變p的值;注意2++p,和p++的區(qū)別.幸運(yùn)調(diào)用函數(shù)實(shí)現(xiàn)數(shù)組的相反順序存放:#include<stdio.h>voidmain(){voidinv(intx[],intn);//函數(shù)聲明

inti,a[10]={3,7,9,11,0,6,7,5,4,2};printf("Theoriginalarray:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");inv(a,10);//調(diào)用函數(shù)

printf("Thearrayhasbeeninverted:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}幸運(yùn)//用數(shù)組元素:voidinv(intx[],intn){inttemp,i,j,m=(n-1)/2;for(i=0;i<=m;i++){j=n-1-i;temp=x[i];x[i]=x[j];x[j]=temp;}}幸運(yùn)//或用指針:voidinv(int*x,intn){int*p,temp,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i<=p;i++,j--){temp=*i;*i=*j;*j=temp;}}這時(shí)函數(shù)聲明要改成:voidinv(int*x,intn);幸運(yùn)用選擇法實(shí)現(xiàn)數(shù)組從大到小排序的函數(shù):voidsort(intx[],intn){inti,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(x[j]>x[k])k=j;if(k!=i) {t=x[i];x[i]=x[k];x[k]=t;}}}幸運(yùn)第九章用戶建立的數(shù)據(jù)類型--結(jié)構(gòu)體幸運(yùn)問題定義:

有時(shí)需要將不同類型的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,以便于引用。如:一個(gè)學(xué)生有學(xué)號(hào)/姓名/性別/年齡/地址等intnum;charname[20]; charsex;intage;charaddr[30];

幸運(yùn)

聲明一個(gè)結(jié)構(gòu)體類型的一般形式為:

struct

結(jié)構(gòu)體名{成員表列};如:struct

student{

int

num;char

name[20];char

sex;

int

age;float

score;char

addr[30];}

結(jié)構(gòu)體名類型名成員名幸運(yùn)

定義結(jié)構(gòu)體類型變量的方法可以采取以下3種方法定義結(jié)構(gòu)體類型變量:先聲明結(jié)構(gòu)體類型再定義變量名例如:structstudent

student1,student2;|||

結(jié)構(gòu)體類型名結(jié)構(gòu)體變量名

定義了student1和student2為structstudent類型的變量,即它們具有structstudent類型的結(jié)構(gòu).

圖9-2student1100101ZhangXinM1990.5Shanghai100102WangLiF2098Beijingstudent2幸運(yùn)引用結(jié)構(gòu)體變量中成員的方式為結(jié)構(gòu)體變量名.成員名例如,

student1.num表示student1變量中的num成員,即student1的num(學(xué)號(hào))項(xiàng)??梢詫?duì)變量的成員賦值和運(yùn)算

student1.num=10010幸運(yùn)但不能用以下語句整體讀入結(jié)構(gòu)體變量,例如:

scanf(″%d,%s,%c,%d,%f,%s″,&student1);

結(jié)構(gòu)體變量的地址主要用作函數(shù)參數(shù),傳遞結(jié)構(gòu)體變量的地址。

對(duì)結(jié)構(gòu)體變量初始化.

#include<stdio.h>

voidmain()

{structstudent

{longintnum;

charname[20];

charsex;

charaddr[20];

}a={10101,″LiLin″,′M′,″123BeijingRoad″};/*對(duì)結(jié)構(gòu)體變量a賦初值*/

printf(″No.:%ld\nname:%s\nsex:%c\naddress:%s\n″,a.num,,a.sex,a.addr);

幸運(yùn)

結(jié)構(gòu)體數(shù)組

一個(gè)結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù)(如一個(gè)學(xué)生的學(xué)號(hào)、姓名、成績等數(shù)據(jù))。如果有10個(gè)學(xué)生的數(shù)據(jù)需要參加運(yùn)算,顯然應(yīng)該用數(shù)組,這就是結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組與以前介紹過的數(shù)值型數(shù)組不同之處在于每個(gè)數(shù)組元素都是一個(gè)結(jié)構(gòu)體類型的數(shù)據(jù),它們都分別包括各個(gè)成員項(xiàng)。幸運(yùn)定義結(jié)構(gòu)體數(shù)組

和定義結(jié)構(gòu)體變量的方法相仿,只需說明其為數(shù)組即可。例如:structstudent{intnum;charname[20];charsex;intage;flo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論