版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 白水縣消防施工方案
- 2024年勘探設(shè)備項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 2024年瑪麗珍鞋項(xiàng)目提案報(bào)告
- 2024年磁粉探傷機(jī)項(xiàng)目申請(qǐng)報(bào)告
- 玻璃廠污染防治方案
- 玻璃產(chǎn)業(yè)設(shè)計(jì)研究報(bào)告
- 瀕危物種生態(tài)仿真研究報(bào)告
- 濱州公園古建施工方案
- 泵站清淤施工方案
- 2021年至2023年廣東省公務(wù)員遴選筆試真題、面試真題及答案解析(各地市、省直共12套)
- ZJ40J鉆機(jī)技術(shù)參數(shù)
- 提高冠脈介入手術(shù)術(shù)前準(zhǔn)備的合格率
- 《學(xué)習(xí)態(tài)度與習(xí)慣》主題班會(huì)課件
- 創(chuàng)建國家級(jí)旅游度假區(qū)自評(píng)報(bào)告
- 英語1-基礎(chǔ)模塊-unit3-Shopping-教案
- 水池防腐涂層施工方案范本
- 路面水穩(wěn)層施工方案(完整版)
- 沉井下沉監(jiān)測(cè)方案
- 2023年醫(yī)養(yǎng)結(jié)合工作情況匯報(bào)范文(4篇)
- 壓力容器風(fēng)險(xiǎn)評(píng)估報(bào)告樣板
評(píng)論
0/150
提交評(píng)論