![C語(yǔ)言期末考試復(fù)習(xí)資料完整版_第1頁(yè)](http://file4.renrendoc.com/view11/M00/36/0C/wKhkGWXikRiAIsk3AAGEiDlLsFg028.jpg)
![C語(yǔ)言期末考試復(fù)習(xí)資料完整版_第2頁(yè)](http://file4.renrendoc.com/view11/M00/36/0C/wKhkGWXikRiAIsk3AAGEiDlLsFg0282.jpg)
![C語(yǔ)言期末考試復(fù)習(xí)資料完整版_第3頁(yè)](http://file4.renrendoc.com/view11/M00/36/0C/wKhkGWXikRiAIsk3AAGEiDlLsFg0283.jpg)
![C語(yǔ)言期末考試復(fù)習(xí)資料完整版_第4頁(yè)](http://file4.renrendoc.com/view11/M00/36/0C/wKhkGWXikRiAIsk3AAGEiDlLsFg0284.jpg)
![C語(yǔ)言期末考試復(fù)習(xí)資料完整版_第5頁(yè)](http://file4.renrendoc.com/view11/M00/36/0C/wKhkGWXikRiAIsk3AAGEiDlLsFg0285.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
考試的主要題型和分?jǐn)?shù)分布:1單項(xiàng)選擇題(10小題,每題2分,共20分)2填空題(每空1分,共10分)3閱讀程序(每題2分,共10分)4程序填空(每空2分,共40分)5編寫(xiě)程序(2小題,每題10分,共20分)第一章
第1章C語(yǔ)言概述本章包含4項(xiàng)目重點(diǎn)內(nèi)容:1簡(jiǎn)單的C語(yǔ)言程序#include<stdio.h>voidmain(){printf("ThisisaCprogram.\n");}
2VC++6.0環(huán)境:編輯C語(yǔ)言源程序后綴是.c或.cpp經(jīng)過(guò)編譯產(chǎn)生目標(biāo)文件,后綴是.obj再經(jīng)過(guò)連接成為可執(zhí)行文件,后綴是.exe3C語(yǔ)言是結(jié)構(gòu)化程序,有三種結(jié)構(gòu)(1)順序結(jié)構(gòu);(2)選擇結(jié)構(gòu);(3)循環(huán)結(jié)構(gòu);4C語(yǔ)言是由函數(shù)組成的,其中必須有一個(gè)并且只有一個(gè)主函數(shù)main,程序的執(zhí)行從main函數(shù)開(kāi)始,到main函數(shù)結(jié)束.第二章
C的數(shù)據(jù)類(lèi)型C語(yǔ)言提供了以下一些數(shù)據(jù)類(lèi)型。
數(shù)據(jù)類(lèi)型構(gòu)造類(lèi)型指針類(lèi)型空類(lèi)型(無(wú)值類(lèi)型)void枚舉類(lèi)型enum數(shù)組類(lèi)型結(jié)構(gòu)類(lèi)型struct聯(lián)合類(lèi)型union基本類(lèi)型整型int字符型char實(shí)型(浮點(diǎn)型)單精度實(shí)型float雙精度實(shí)型
double
常量與變量
常量和符號(hào)常量在程序運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量常量區(qū)分為不同的類(lèi)型:整型100,125,-100,0實(shí)型3.14,0.125,-3.1e3字符型‘a(chǎn)’,’\057’,‘\x3c’字符串“a”,“ab”,”1232”定義字符常量:#definePI3.1415926#defineN20
變量命名的規(guī)定:C語(yǔ)言規(guī)定標(biāo)識(shí)符:1只能由字母、數(shù)字和下劃線(xiàn)三種字符組成;(注意不要混淆下劃線(xiàn)_和杠號(hào)(減號(hào))-)2第一個(gè)字符必須為字母或下劃線(xiàn);3不能使用關(guān)鍵字.
例:sum,_123,m123,Student_name1
12a,Jo-hn,¥123,a#b,int
整型常量的表示方法整型常量即整常數(shù)。在C語(yǔ)言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。
如:123,-456(2)八進(jìn)制整數(shù)。以0開(kāi)頭的數(shù)是八進(jìn)制數(shù)。
如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)830129非法(每位0-7合法)(3)十六進(jìn)制整數(shù)。以0x開(kāi)頭的數(shù)是16進(jìn)制數(shù)。如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)291而0x12g非法(每位0-f合法)
字符型數(shù)據(jù)
字符常量(1)用單引號(hào)包含的單個(gè)字符(2)用單引號(hào)包含的由\開(kāi)始的轉(zhuǎn)義字符例‘a(chǎn)’,’A’,‘1’,’\037’,’\x2d’‘a(chǎn)bc’,“a”,’\082’,’\x5g’
字符串常量字符串常量是一對(duì)雙引號(hào)括起來(lái)的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個(gè)字符串,如printf(“Howdoyoudo.”);C運(yùn)算符簡(jiǎn)介
C的運(yùn)算符有以下幾類(lèi):(1)算術(shù)運(yùn)算符(+-*/%)(2)關(guān)系運(yùn)算符(><==>=<=!=)(3)邏輯運(yùn)算符(!&&||)(4)位運(yùn)算符(<<>>~|∧&)(5)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(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)算符作用是使變量的值增1或減1如:++i,--i(在使用i之前,使i+1或-1)
i++,i--(在使用i之后,使i+1或-1)
就是使用i的原值執(zhí)行本條語(yǔ)句,而在執(zhí)行下條語(yǔ)句前將i+1或-1
intm=5,n=10;printf("%d,%d\n",m++,--n);顯示5,9若再有:printf(“%d\n”,m);顯示6賦值運(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)為真。第三章
C語(yǔ)句概述C程序源程序文件1源程序文件2源程序文件n預(yù)處理命令函數(shù)n函數(shù)1數(shù)據(jù)聲明函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語(yǔ)句
C語(yǔ)句概述控制語(yǔ)句完成一定的控制功能 1if()~else條件語(yǔ)句6break間斷語(yǔ)句 2for()~循環(huán)語(yǔ)句7switch()開(kāi)關(guān)語(yǔ)句 3while()~循環(huán)語(yǔ)句8goto轉(zhuǎn)向語(yǔ)句 4do~while();循環(huán)語(yǔ)句9return返回語(yǔ)句 5continue繼續(xù)語(yǔ)句格式輸入與輸出(一).格式輸出函數(shù)函數(shù)作用:向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出若干個(gè)任意類(lèi)型的數(shù)據(jù)。一般格式:printf(格式控制,輸出表列)%d:以帶符號(hào)的十進(jìn)制形式輸出整數(shù)%o:以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù)%x:以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)
格式輸入與輸出%u:以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)%c:以字符形式輸出,只輸出一個(gè)字符%s:輸出字符串%f:以小數(shù)形式輸出單,雙精度數(shù),隱含輸出六位小數(shù)%e:以指數(shù)形式輸出實(shí)數(shù)%g:選用%f或%e格式中輸出寬度較短的一種格式,不輸出無(wú)意義的0
格式輸入與輸出用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)算符
在格式輸入與輸出中
格式控制是用雙引號(hào)包括的,其中一般帶有%d,%c,%f,%s等各種對(duì)數(shù)據(jù)類(lèi)型的要求.第四章
關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算符及其優(yōu)先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)說(shuō)明:關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(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á)式)接起來(lái)的式子,稱(chēng)關(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語(yǔ)言中沒(méi)有專(zhuān)用的邏輯值,1代表真,0代表假
邏輯運(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,值為0if語(yǔ)句2.If語(yǔ)句的嵌套在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱(chēng)為if語(yǔ)句的嵌套。形式:if()
if()語(yǔ)句1 else語(yǔ)句2else
if()語(yǔ)句3 else語(yǔ)句4內(nèi)嵌ifif語(yǔ)句如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)算符格式:表達(dá)式1?表達(dá)式2∶表達(dá)式3功能:判斷表達(dá)式1的值,如果成立就執(zhí)行表達(dá)式2,否則就執(zhí)行表達(dá)式3max=(a>b)?a:b;min=(a<b)?a:b;if語(yǔ)句例:輸入一個(gè)字符,判別它是否大寫(xiě)字母,如果是,將它轉(zhuǎn)換成小寫(xiě)字母;如果不是,不轉(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的值為大寫(xiě)字母,則條件表達(dá)式的值為(ch+32),即相應(yīng)的小寫(xiě)字母。如果ch的值不是大寫(xiě)字母,則條件表達(dá)式的值為ch,即不進(jìn)行轉(zhuǎn)換。
幾個(gè)典型的判斷:判斷大寫(xiě)字母:if(‘A’<=c&&c<=‘Z’)判斷小寫(xiě)字母:if(‘a(chǎn)’<=c&&c<=‘z’)判斷數(shù)字:if(‘0’<=c&&c<=‘9’)判斷閏年:if((year%4==0&&year%100!=0)||year%400==0)注意:例如在判斷數(shù)字中:if(‘0’<=c&&c<=‘9’)不可以沒(méi)有&&,也不能沒(méi)有’’即不能用if(‘0’<=c<=‘9’)也不能用if(0<=c&&c<=9)但可以用if(48<=c&&c<=57)(想想為什么?)用switch語(yǔ)句實(shí)現(xiàn)(若a是整數(shù))按照考試成績(jī)輸出等級(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'; }第五章
用while語(yǔ)句實(shí)現(xiàn)循環(huán)while語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。一般形式:
while(表達(dá)式)語(yǔ)句當(dāng)表達(dá)式為非0值時(shí),執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。
求正整數(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);}其中用下面的輾轉(zhuǎn)相除法求出最大公約數(shù)nwhile(m!=0){r=n%m;n=m;m=r;}把它獨(dú)立出來(lái)就是一個(gè)函數(shù)inthcf(intm,intn){intr;while(m!=0)
{r=n%m;n=m;m=r;}return(n);}用p/n得到最小公倍數(shù)
用do-while語(yǔ)句實(shí)現(xiàn)循環(huán)
do-while語(yǔ)句的特點(diǎn):先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。一般形式:
do{循環(huán)體語(yǔ)句}while(表達(dá)式);執(zhí)行過(guò)程:先執(zhí)行一次指定的循環(huán)體語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”)時(shí),返回重新執(zhí)行循環(huán)體語(yǔ)句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。例如:為了保證輸入成績(jī)的正確,可以使用語(yǔ)句:printf("請(qǐng)輸入學(xué)生成績(jī)a(0-100):");scanf("%d",&a);while(a<0||a>100){printf("\n輸入有誤,請(qǐng)重輸:");scanf("%d",&a);}
我們更簡(jiǎn)潔地用do-while語(yǔ)句do
{printf(“請(qǐng)輸入成績(jī)a(0-100):”);scanf(“%d”,&a);}while(a<0||a>100);
注意while(a<0||a>100);的含義和;號(hào)
用do-while語(yǔ)句計(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);while語(yǔ)句和用do-while語(yǔ)句的比較:while是先判斷條件,再?zèng)Q定是否執(zhí)行,所以可能一次也不執(zhí)行;do-while是先執(zhí)行再判斷條件,決定是否還執(zhí)行,所以至少執(zhí)行一次.
用for語(yǔ)句實(shí)現(xiàn)循環(huán)C語(yǔ)言中的for語(yǔ)句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語(yǔ)句。一般形式:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句注意:for中用兩個(gè)分號(hào)隔開(kāi),不能省略;for只對(duì)其后第一個(gè)語(yǔ)句有效,如果要求對(duì)多條語(yǔ)句有效,必須用花括號(hào)括之成為復(fù)合語(yǔ);for()后通常沒(méi)有分號(hào),有分號(hào)將不執(zhí)行任何語(yǔ)句,只執(zhí)行自己的循環(huán);
下面是用for語(yǔ)句顯示數(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);}
break語(yǔ)句和continue語(yǔ)句
break語(yǔ)句break語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán).一般形式:
break;注意:break語(yǔ)句只能用于循環(huán)語(yǔ)句或switch語(yǔ)句中。
continue語(yǔ)句作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次循環(huán)的判定.一般形式:
continue;例把100~200之間的不能被3整除的數(shù)輸出。
#include<stdio.h>
voidmain()
{intn;
for(n=100;n<=200;n++)
{if(n%3==0)continue;
printf(″%d″,n);
}
}
注意是把能被3整除的跳過(guò).不能用n%3!=0判斷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);
}
也可以是:
#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);
}第六章
一維數(shù)組
所謂數(shù)組就是一組具有相同數(shù)據(jù)類(lèi)型的數(shù)據(jù)的有序集合。一維數(shù)組的定義格式為:例如:inta[10];或者是:#defineN10;inta[N];
(方括號(hào)中必須是常數(shù))注意:1此數(shù)組有10個(gè)元素.分別是a[0]-a[9]
注意:從0開(kāi)始編號(hào),沒(méi)有數(shù)組元素a[10]2元素個(gè)數(shù)必須是常量.所以不可以:intn=10,a[n];//這里n是變量不可以用圓括號(hào):inta(n);也不可是:intn,a[n];scanf(“%d”,&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′;對(duì)字符串初始化,最好的方法是:例如:Charc[]=“Iamaboy”;
字符串的初始化字符串和字符串結(jié)束標(biāo)志
為了測(cè)定字符串的實(shí)際長(zhǎng)度,C語(yǔ)言規(guī)定了一個(gè)“字符串結(jié)束標(biāo)志”——‘\0’。字符數(shù)組的輸入輸出
字符數(shù)組的輸入輸出可以有兩種方法:逐個(gè)字符輸入輸出。用格式符“%c”輸入或輸出一個(gè)字符。將整個(gè)字符串一次輸入或輸出。用“%s”格式符,意思是對(duì)字符串的輸入輸出。
如果利用一個(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′。1.puts函數(shù)其一般形式為:puts(str);
字符串處理函數(shù)
2.gets函數(shù)其一般形式為:gets(str);說(shuō)明:用scanf(“%s”,str);只能輸入單詞(不包含空格),
而gets(str);可以輸入句子(即可以包含空格);
注意不是gets(“%s”,str);
也不是gets(&str);
3.strcat函數(shù)其一般形式為:strcat(字符數(shù)組1,字符數(shù)組2)Strcat的作用是連接兩個(gè)字符數(shù)組中的字符串,把字符串2接到字符串1的后面4.strcpy函數(shù)其一般形式為:strcpy(字符數(shù)組1,字符串2)
strcpy是“字符串復(fù)制函數(shù)”。作用是將字符串2復(fù)制到字符數(shù)組1中去。例如:charstr1[10],str2[]={″China″};strcpy(str1,str2);
關(guān)于strcpy函數(shù)的幾點(diǎn)說(shuō)明(1)字符數(shù)組1必須定義得足夠大,以便容納被復(fù)制的字符串。字符數(shù)組1的長(zhǎng)度不應(yīng)小于字符串2的長(zhǎng)度。(2)“字符數(shù)組1”必須寫(xiě)成數(shù)組名形式(如str1),“字符串2”可以是字符數(shù)組名,也可以是一個(gè)字符串常量。如strcpy(str1,″China″);(3)復(fù)制時(shí)連同字符串后面的′\0′一起復(fù)制到字符數(shù)組1中。(4)不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。如:
str1=″China″;不合法str1=str2;不合法用strcpy函數(shù)只能將一個(gè)字符串復(fù)制到另一個(gè)字符數(shù)組中去。用賦值語(yǔ)句只能將一個(gè)字符賦給一個(gè)字符型變量5.strcmp函數(shù)其一般形式為:strcmp(字符串1,字符串2)例如:strcmp(str1,str2);strcmp(″China″,″Korea″);strcmp(str1,″Beijing″);比較的結(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)6.strlen函數(shù)其一般形式為:strlen(字符數(shù)組)strlen是測(cè)試字符串長(zhǎng)度的函數(shù)。函數(shù)的值為字符串中的實(shí)際長(zhǎng)度(不包括′\0′在內(nèi))。例如:charstr[10]={″China″};printf(″%d″,strlen(str));輸出結(jié)果不是10,也不是6,而是5,即有效字符數(shù).strlwr(字符串)
strlwr函數(shù)7.strlwr函數(shù)其一般形式為:的作用是將字符串中大寫(xiě)字母換成小寫(xiě)字母。8.strupr函數(shù)其一般形式為:strupr(字符串)strupr函數(shù)的作用是將字符串中小寫(xiě)字母換成大寫(xiě)字母。
使用字符串函數(shù)時(shí),必須包括字符串函數(shù)庫(kù):#include<string.h>我們可以不使用字符串函數(shù)編寫(xiě)程序:例如:不使用strcat連接兩個(gè)字符串;不使用strcpy拷貝字符串;不使用strcmp比較字符串;不使用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),再拷貝就是連接。第七章
簡(jiǎn)單的C語(yǔ)言函數(shù)#include<stdio.h>
/*文件包含*/void
main()
/*主函數(shù)*/{/*函數(shù)體開(kāi)始*/
printf(“ThisisaCprogram.\n”);/*函數(shù)體語(yǔ)句*/}
/*函數(shù)體結(jié)束*/
說(shuō)明:main是主函數(shù)名,void是函數(shù)類(lèi)型每個(gè)C程序是由若干函數(shù)組成的,其中必有一個(gè)并且只能有一個(gè)主函數(shù)main()每個(gè)C程序從main函數(shù)開(kāi)始執(zhí)行,到main函數(shù)結(jié)束,即執(zhí)行的是主函數(shù)的函數(shù)體,與主函數(shù)main在程序中的位置無(wú)關(guān);{}是函數(shù)開(kāi)始和結(jié)束的標(biāo)志,不可省略;每個(gè)C語(yǔ)句以分號(hào)結(jié)束;在主函數(shù)中直接或間接調(diào)用其他函數(shù);使用標(biāo)準(zhǔn)輸入出庫(kù)函數(shù)時(shí)應(yīng)寫(xiě):#include<stdio.h>使用數(shù)學(xué)庫(kù)函數(shù)和字符串函數(shù)時(shí)應(yīng)寫(xiě):#include<math.h>#include<string.h>
一個(gè)函數(shù)由兩部分組成:
函數(shù)的首部:例1.3中的max函數(shù)首部intmax(intx,inty)
函數(shù)體:花括號(hào)內(nèi)的部分。若一個(gè)函數(shù)有多個(gè)花括號(hào),則最外層的一對(duì)花括號(hào)為函數(shù)體的范圍。函數(shù)定義的一般形式
類(lèi)型標(biāo)識(shí)符函數(shù)名(形式參數(shù)表列){
聲明部分
語(yǔ)句部分}其中類(lèi)型標(biāo)識(shí)符是函數(shù)返回值的數(shù)據(jù)類(lèi)型,如:int,charfloat,double等,也可以是無(wú)返回值,寫(xiě)為void.也可以沒(méi)有形式參數(shù)表列,稱(chēng)為無(wú)參函數(shù).例如:intmax(intx,inty){intz;/*函數(shù)體中聲明部分*/z=x>y?x∶y;/*函數(shù)體中語(yǔ)句部分*/return(z);/*返回值*/}
函數(shù)參數(shù)和函數(shù)的值形式參數(shù)和實(shí)際參數(shù)
形式參數(shù):函數(shù)名后面括弧中的變量名稱(chēng)為“形式參數(shù)”(簡(jiǎn)稱(chēng)“形參”);實(shí)際參數(shù):主調(diào)函數(shù)中調(diào)用一個(gè)函數(shù)時(shí),函數(shù)名后面括弧中的參數(shù)(可以是一個(gè)表達(dá)式)稱(chēng)為“實(shí)際參數(shù)”(簡(jiǎn)稱(chēng)“實(shí)參”);函數(shù)返回值:return后面的括弧中的值作為函數(shù)帶回的值(稱(chēng)函數(shù)返回值)。說(shuō)明:
1.函數(shù)的返回值是通過(guò)函數(shù)中的return語(yǔ)句獲得的。一個(gè)函數(shù)中可以有一個(gè)以上的return語(yǔ)句,執(zhí)行到哪一個(gè)return語(yǔ)句,哪一個(gè)語(yǔ)句起作用。函數(shù)的調(diào)用
對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型在一個(gè)函數(shù)中調(diào)用另一函數(shù)(即被調(diào)用函數(shù))需要具備哪些條件呢?1.首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫(kù)函數(shù)或用戶(hù)自己定義的函數(shù))。3.如果使用用戶(hù)自己定義的函數(shù),而該函數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的后面,應(yīng)該在主調(diào)函數(shù)中對(duì)被調(diào)用的函數(shù)作聲明,即寫(xiě)上函數(shù)的原型。用函數(shù)首部加上;號(hào)表示函數(shù)聲明.2.如果使用庫(kù)函數(shù),還應(yīng)該在本文件開(kāi)頭用#include命令將調(diào)用有關(guān)庫(kù)函數(shù)時(shí)所需用到的信息“包含”到本文件中來(lái)。如#include<stdio.h>#include<math.h>#include<string.h>函數(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);}
局部變量和全局變量局部變量
在一個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是說(shuō)只有在本函數(shù)內(nèi)才能使用它們,在此函數(shù)以外是不能使用這些變量的。這稱(chēng)為“局部變量”。
全局變量在函內(nèi)定義的變量是局部變量,而在函數(shù)外定義的變量稱(chēng)為外部變量,也稱(chēng)全局變量.靜態(tài)局部變量是函數(shù)中保持最近值不釋放的變量在函數(shù)中用下面方式定義:staticintc=7;
考察靜態(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第八章地址和指針的概念內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是“地址”。如果在程序中定義了一個(gè)變量,在對(duì)程序進(jìn)行編譯時(shí),系統(tǒng)就會(huì)給這個(gè)變量分配內(nèi)存單元。一個(gè)變量的地址稱(chēng)為該變量的“指針”。例如,地址2000是變量i的指針。如果有一個(gè)變量專(zhuān)門(mén)用來(lái)存放另一變量的地址(即指針),則它稱(chēng)為“指針變量”。指針和指針變量的定義:指針變量的引用
注意:指針變量中只能存放地址(指針),不要將一個(gè)整數(shù)(或任何其他非地址類(lèi)型的數(shù)據(jù))賦給一個(gè)指針變量。
例通過(guò)指針變量訪(fǎng)問(wèn)整型變量#include<stdio.h>voidmain(){inta;int*p;a=100;p=&a;/*把變量a的地址賦給p*/printf(“%d,%d\n”,a,*p);}對(duì)“&”和“*”運(yùn)算符說(shuō)明:如果已執(zhí)行了語(yǔ)句p=&a則:則a和*p是相同的值所以,如果a=3;Printf(“%d,%d”,a,*p);顯示是3,3所以,如果*p=6;Printf(“%d,%d”,a,*p);顯示是6,6指針變量作為函數(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);}voidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}下面的函數(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ù)中的變量定義一個(gè)指向數(shù)組元素的指針變量的方法例如:inta[10],*p;p=a;(a是數(shù)組的首地址,注意a前沒(méi)有地址符)或p=&a[0];雖然a和p都是地址,它們是不同的:a是數(shù)組的首地址,一旦由系統(tǒng)分配,就是一個(gè)固定的值;而p是指針變量,是可以改變的.所以a++是錯(cuò)誤的,而p++是正確的.指向數(shù)組元素的指針10.3.2通過(guò)指針引用數(shù)組元素如果inta[6],*p=a;引用一個(gè)數(shù)組元素,可以用:(1)下標(biāo)法,如a[i]形式;(2)地址或指針?lè)?,?(a+i)或*(p+i)注意:a[0]-a[5]合法,a[6]非法;*(a)-*(a+5)合法,*(a+6)非法;*(p)-*(p+5)合法,*(p+6)非法;字符串與指針字符串的表示形式
例定義一個(gè)字符數(shù)組,對(duì)它初始化,然后輸出該字符串
#include<stdio.h>voidmain(){char*s=″abcdefg″;printf(″%s\n″,s);}輸出abcdefg(1)用字符數(shù)組存放一個(gè)字符串,然后輸出該字符串。輸出cdefg的語(yǔ)句是:printf(″%s\n″,s+2);s+2是指針輸出efg的語(yǔ)句是:printf(″%s\n″,s+4);s+4是指針輸出字符f的語(yǔ)句是:printf(″%c\n″,*(s+5));*(s+5)是字符注意:輸出字符串用%s和指針;輸出字符用%c和*(指針)指針運(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沒(méi)有改變p的值;注意2++p,和p++的區(qū)別.調(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");}//用數(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;}}//或用指針: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);用選擇法實(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;}}}第九章問(wèn)題定義:
有時(shí)需要將不同類(lèi)型的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,以便于引用。如:一個(gè)學(xué)生有學(xué)號(hào)/姓名/性別/年齡/地址等intnum;charname[20]; charsex;intage;charaddr[30];
聲明一個(gè)結(jié)構(gòu)體類(lèi)型的一般形式為:
struct
結(jié)構(gòu)體名{成員表列};如:struct
student{
int
num;char
name[20];char
sex;
int
age;float
score;char
addr[30];}
結(jié)構(gòu)體名類(lèi)型名成員名
定義結(jié)構(gòu)體類(lèi)型變量的方法
可以采取以下3種方法定義結(jié)構(gòu)體類(lèi)型變量:先聲明結(jié)構(gòu)體類(lèi)型再定義變量名例如:structstudent
student1,student2;|||結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體變量名
定義了student1和student2為structstudent類(lèi)型的變量,即它們具有structstudent類(lèi)型的結(jié)構(gòu).
圖9-2student1100101ZhangXinM1990.5Shanghai100102WangLiF2098Beijingstudent2引用結(jié)構(gòu)體變量中成員的方式為結(jié)構(gòu)體變量名.成員名例如,student1.num表示student1變量中的num成員,即student1的num(學(xué)號(hào))項(xiàng)??梢詫?duì)變量的成員賦值和運(yùn)算student1.num=10010但不能用以下語(yǔ)句整體讀入結(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);
}
結(jié)構(gòu)體數(shù)組
一個(gè)結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù)(如一個(gè)學(xué)生的學(xué)號(hào)、姓名、成績(jī)等數(shù)據(jù))。如果有10個(gè)學(xué)生的數(shù)據(jù)需要參加運(yùn)算,顯然應(yīng)該用數(shù)組,這就是結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組與以前介紹過(guò)的數(shù)值型數(shù)組不同之處在于每個(gè)數(shù)組元素都是一個(gè)結(jié)構(gòu)體類(lèi)型的數(shù)據(jù),它們都分別包括各個(gè)成員項(xiàng)。定義結(jié)構(gòu)體數(shù)組
和定義結(jié)構(gòu)體變量的方法相仿,只需說(shuō)明其為數(shù)組即可。例如:structstudent{intnum;charname[20];ch
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/Z 45064-2024普通照明用設(shè)備頻閃效應(yīng)客觀(guān)試驗(yàn)方法
- MTX-PEG-Cy3-生命科學(xué)試劑-MCE-2911
- ABBV-706-生命科學(xué)試劑-MCE-4729
- 5-Fluoro-PB-22-N-4-fluoropentyl-isomer-生命科學(xué)試劑-MCE-3095
- 3-2-3-Dimethylphenyl-2-methylquinazolin-4-one-生命科學(xué)試劑-MCE-9046
- 二零二五年度租車(chē)平臺(tái)與車(chē)主合作服務(wù)協(xié)議
- 2025年度財(cái)務(wù)審核合同中的稅務(wù)合規(guī)審查標(biāo)準(zhǔn)
- 二零二五年度親子餐飲品牌區(qū)域加盟合作協(xié)議
- 二零二五年度新能源發(fā)電站電工維護(hù)服務(wù)合同
- 二零二五年度智慧城市建設(shè)聘用協(xié)議及勞務(wù)合同
- Unit 7 第3課時(shí) Section A (Grammar Focus -4c)(導(dǎo)學(xué)案)-【上好課】2022-2023學(xué)年八年級(jí)英語(yǔ)下冊(cè)同步備課系列(人教新目標(biāo)Go For It!)
- 2025年上半年長(zhǎng)沙市公安局招考警務(wù)輔助人員(500名)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 2025河北邯鄲世紀(jì)建設(shè)投資集團(tuán)招聘專(zhuān)業(yè)技術(shù)人才30人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 慈溪高一期末數(shù)學(xué)試卷
- 《基于新課程標(biāo)準(zhǔn)的初中數(shù)學(xué)課堂教學(xué)評(píng)價(jià)研究》
- 2025年中國(guó)東方航空招聘筆試參考題庫(kù)含答案解析
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件
- 2024年度節(jié)后復(fù)工建筑施工安全培訓(xùn)交底
- 電網(wǎng)基本知識(shí)
- 民法原理與實(shí)務(wù)課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論