c語言教學(xué)課程課件_第1頁
c語言教學(xué)課程課件_第2頁
c語言教學(xué)課程課件_第3頁
c語言教學(xué)課程課件_第4頁
c語言教學(xué)課程課件_第5頁
已閱讀5頁,還剩101頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言課件教程1C語言的結(jié)構(gòu)1、main()

{函數(shù)體}2、數(shù)據(jù)類型整型:int%d實(shí)型:float%f字符型:char%c3、變量的定義:先定義后使用結(jié)構(gòu):數(shù)據(jù)類型變量名1,變量名2······;24、輸出函數(shù)(printf)結(jié)構(gòu)1:printf

(“常量”);功能:原樣輸出常量的內(nèi)容結(jié)構(gòu)2、printf(“格式符”,變量名);功能:輸出變量的值5、輸入函數(shù)(scanf)結(jié)構(gòu):scanf(“格式符表列”,地址列表);功能:從鍵盤輸入變量的值6、c語言編程的基本結(jié)構(gòu):(1)main()(2)定義變量(3)賦值(4)處理(5)輸出3一、字符集1、小寫字母:a~z97~1222、大寫字母:A~Z65~903、數(shù)字與數(shù)字字符數(shù)字字符‘0’~數(shù)字字符‘9’:48~57數(shù)字0~數(shù)字9:0~94大小寫的轉(zhuǎn)化大寫=小寫-32大寫=小寫+‘A’-‘a(chǎn)’

小寫=大寫+32小寫=大寫-‘A‘+’a’數(shù)字與數(shù)字字符間的轉(zhuǎn)換數(shù)字=數(shù)字字符-48數(shù)字字符=數(shù)字+48字符集:(1)大小寫英文字母52個(gè)(2)數(shù)字(0~9)(3)鍵盤符號(33個(gè))

5轉(zhuǎn)義字符(重點(diǎn))定義:是由反斜杠\開頭的后跟一個(gè)或若干個(gè)字符組成常用的轉(zhuǎn)義字符:\n回車換行符\a響鈴符\r回車不換行\(zhòng)o17八進(jìn)制數(shù)\t制表符\x12,\xac

\b左退一格符合法的16進(jìn)制數(shù)\\反斜杠\’單引號\’’雙引號\0字符串結(jié)束標(biāo)志6轉(zhuǎn)義字符例題:

1、printf(”\“abc\””);輸出”abc“2、printf(”d:\\turboc2\\tc”);輸出d:\turboc2\tc3、main(){printf(“abc\nde\r123\b**”);}輸出結(jié)果:abc12**7

Auto自動Extern外部Sizeof計(jì)算字節(jié)數(shù)

Break中止Float浮點(diǎn)Static靜態(tài)Case情況For對于Struct

結(jié)構(gòu)Char字符Goto

轉(zhuǎn)向Switch開關(guān)Continue繼續(xù)Int

整型Typedef

類型定義Const常量If如果Union共用Default缺省Long長整型Unsigned無符號Do做Register寄存器Void空Double雙精度Return返回Volatile可變的Else否則Short短While當(dāng)Enum

枚舉Signed帶符號C語言中的關(guān)鍵字(也稱保留字)8標(biāo)識符定義:c語言規(guī)定標(biāo)識符是由字母或下劃線開頭的字母、數(shù)字、下劃線組成的一串字符。注意事項(xiàng):(1)c語言有大小寫的區(qū)別(2)c語言規(guī)定關(guān)鍵字不允許做標(biāo)識符清屏語句:clrscr

注意事項(xiàng):(1)c程序由函數(shù)組成:至少包含一個(gè)主函數(shù)main()和若干個(gè)子函數(shù)(2)一個(gè)函數(shù)由函數(shù)說明和函數(shù)體構(gòu)成(3);分號是語句結(jié)束標(biāo)志(4)一行可以寫多條語句也可以將一條語句寫在多行9(5)/*``````*/稱為注釋行,注釋可出現(xiàn)在程序的任何位置,注釋不參加編譯也不出現(xiàn)在目標(biāo)程序里(6)c語言本事沒有輸入輸出語句,輸入輸出操作由庫函數(shù)scanf和printf完成(7)程序的執(zhí)行總是從主函數(shù)開始并在主函數(shù)中結(jié)束,主函數(shù)的位置是任意的C語言的基本單位是函數(shù)Scanf

可輸入多種值,運(yùn)行一次可輸入一組值,而’=’只有一個(gè)固定的輸出值10練習(xí):(1)輸入三個(gè)數(shù)求這三個(gè)數(shù)的平均值(2)在屏幕上顯示*****************

verygood!*****************(3)用*組成‘大’

提示:整數(shù)除整數(shù)還為整數(shù),除數(shù)和被除數(shù)中至少有一個(gè)為小數(shù)時(shí)其結(jié)果為小數(shù)11第二章數(shù)據(jù)類型和運(yùn)算符12C語言的數(shù)據(jù)類型數(shù)據(jù)是操作的對象,類型是數(shù)據(jù)的內(nèi)在表現(xiàn)形式C的數(shù)據(jù)類型如下:數(shù)據(jù)類型指針類型構(gòu)造類型基本類型空類型void整型int(含枚舉類型)實(shí)型(浮點(diǎn)型)字符型char數(shù)組結(jié)構(gòu)體共用體單精度float雙精度double13常量1、整型常量(-32768~+32767)十進(jìn)制常量%d0~9八進(jìn)制常量%o0~7十六進(jìn)制常量%x0~9a~f注:(1)一般的整型常量數(shù)值范圍是-32768~+32767

長整型是-2147483648~+2147483647(2)長整型的標(biāo)志:‘l’或‘L’例如:10和10L是不同的整型常量142實(shí)型常量1)一般形式的實(shí)數(shù):是由整數(shù),小數(shù)點(diǎn),小數(shù)三部分組成其中整數(shù)部分或小數(shù)部分可以省略例:112.354-1.234565-.12345.2)指數(shù)形式的實(shí)數(shù):是由尾數(shù),小寫字母或大寫字母,指數(shù)三部分組成。尾數(shù)部分看可以是十進(jìn)制的整數(shù)或一般形式的實(shí)數(shù)。指數(shù)部分是十進(jìn)制的整數(shù)常量。例:12.34e-2-1.2345e3=-1.2345e+3注:(1)實(shí)型常量只使用十進(jìn)制數(shù)(2)e的前后不可省略153、字符常量定義:是用兩個(gè)單引號前后括住的單個(gè)字符來表示例:‘a(chǎn)’‘,’‘%’‘s’都是單個(gè)字符‘\o17’是合法的注:(1)單個(gè)字符只占用一個(gè)字節(jié)(2)轉(zhuǎn)義字符只占用一個(gè)字節(jié)(3)字符常量的標(biāo)志是單引號(‘’)‘\o72’只占用一個(gè)字節(jié)164、字符串常量1)定義:字符串就是用雙引號前后括住若干個(gè)字符例:”abc“”123456“”aAg“注:

(1)雙引號是字符串的標(biāo)志(2)在字符串中轉(zhuǎn)義字符只占用一個(gè)字節(jié)(3)字符串中默認(rèn)有一個(gè)結(jié)束標(biāo)志(”\0“)只要是字符串系統(tǒng)就會在其末尾加一個(gè)結(jié)束標(biāo)志2)字符串中的兩個(gè)概念長度:雙引號中有效字符的個(gè)數(shù)字節(jié):字符串在計(jì)算機(jī)中所占的字節(jié)數(shù)(字節(jié)=長度+1)注意:字節(jié)數(shù)中包括字符串的結(jié)束標(biāo)志17基本數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型符所占字節(jié)數(shù)格式符所表示的范圍整型Int2%d-32768~+32767短整型Short2%d-32768~+32767長整型Long4%Ld-2147483648~+2147483647單精度Float4%f雙精度Double8%Lf字符型Char1%c-128~+12718變量定義的結(jié)構(gòu)存儲類型數(shù)據(jù)類型變量名1,變量名2·····;

自動型auto靜態(tài)型Static寄存器型Register外部型extern常用數(shù)據(jù)存儲類型:191、自動型:若省略了變量的存儲類型符,系統(tǒng)將默認(rèn)為自動型,若不給變量賦初值,系統(tǒng)將默認(rèn)為隨機(jī)數(shù)2、靜態(tài)型:若不給變量賦初值系統(tǒng)將默認(rèn)初值為0、變量的賦值和初始化中:變量的初始化中不能連等20基本運(yùn)算符1、取整取余運(yùn)算符

a/b:(1)取整運(yùn)算符:a、b都為整數(shù)

(2)除號:只要有一邊為實(shí)型即變?yōu)槌?/p>

a%b:取余運(yùn)算符:a與b都必須是整數(shù)2、自增自減運(yùn)算符1、自增運(yùn)算符(++)i++:表示先使用后自增++i:表示先自增后使用例:1、inti=8,j;j=i++;

2、inti=8,j;j=++i;

3、inti=8,j;j=++i,j=i++;21自減運(yùn)算符(--)i--:先使用后自減--i:先自減后使用例:1、inti=8,j;j=i--;

2、inti=8,j;j=--i;

3、inti=8,j;j=--i,j=i--;3、關(guān)系運(yùn)算符關(guān)系運(yùn)算符包括:關(guān)系運(yùn)算只有真和假,真1,假0>:a>b<:a<b練習(xí):輸入兩個(gè)數(shù)求最小值22(1)大小寫條件:大寫字母的判斷條件(A~Z):

if(x>=‘A’&&x<=‘z’)if(x>=65&&x<=90)小寫字母的判斷條件(a~z):

if(x>=‘a(chǎn)’&&x<=‘z’)if(x>=97&&x<=122)(2)數(shù)字字符和數(shù)字的判斷條件數(shù)字字符的判斷條件:

if(x>=‘0’&&x<=‘9’)if(x>=48&&x<=57)數(shù)字的判斷條件:

if(x>=0&&x<=9)數(shù)字字符和數(shù)字的轉(zhuǎn)換:數(shù)字字符=數(shù)字+‘0’數(shù)字=數(shù)字字符-‘0’(3)閏年條件:

if(x%4==0&&x%100!==0||x%400)

23作業(yè):

1、輸入兩個(gè)數(shù)求最大值2、輸入一個(gè)字符若是大寫則將其轉(zhuǎn)化成小寫3、輸入一個(gè)數(shù)判斷是否是偶數(shù)若是則輸出‘Y’否則輸出’N’4、輸入一個(gè)數(shù)若是5或者9的倍數(shù)則輸出24邏輯運(yùn)算符

邏輯運(yùn)算只有真和假,真:1,假:0

非0就是真,0就是假

ab!a!ba&&ba||b001100011001100101110011注意事項(xiàng):1、對于邏輯與來說,若第一個(gè)表達(dá)式為0,則第二個(gè)表達(dá)式不參加運(yùn)算。2、對于邏輯或來說,若第一個(gè)表達(dá)式為1,則第二個(gè)表達(dá)式不參加運(yùn)算25賦值運(yùn)算符(=)格式:(1)變量名=常量(2)變量名=表達(dá)式(3)變量名=變量名自反賦值運(yùn)算符1、自反賦值運(yùn)算符包括:+=:a+=ba=a+b-=:a-=ba=a-b*=:a*=ba=a*b/=:a/=ba=a/b%=:a%=ba=a%b例1a=5;a+=a-=a*a;例2a=5;a+=a-=a;例3a=6;a+=a*=a-=3例4a-=b+c26逗號表達(dá)式1、格式:表達(dá)式1,表達(dá)式2,表達(dá)式3········2、規(guī)則:結(jié)合方向從左向右,結(jié)果由最后一個(gè)表達(dá)式?jīng)Q定例1:a=3,a*6,a+5結(jié)果a=?表達(dá)式=?例2:a=4,b=a*2,b*5,e=b+2,f=b

結(jié)果a=?b=?e=?f=?條件運(yùn)算符1、結(jié)構(gòu):e1?e2:e32、功能:判斷e1的值,若為真則結(jié)果為e2若為假則結(jié)果為e3例:c=3>4?3:6>5?1:0

結(jié)果?27長度測試運(yùn)算符1、結(jié)構(gòu):sizeof

(變量名或數(shù)據(jù)類型)2、功能:測試變量或數(shù)據(jù)類型所占的字節(jié)數(shù)例:intx;

printf(“%d”,sizeof(x));

printf(“%d”,sizeof(int));結(jié)果為?位運(yùn)算符1、包括:位與&:只有兩個(gè)數(shù)都為1時(shí)其結(jié)果才為1

位或|:只要有一個(gè)為1其結(jié)果就為1

位非~:~0=1,~1=0

位加^:相同為0,不同為1注意:位運(yùn)算是針對二進(jìn)制的運(yùn)算符例:3&4?3|4?3^4?28位移運(yùn)算符包括:左移:<<a<<b:a向左移b位(左移一位擴(kuò)大2倍)右移:>>a>>b:a向右移b位(右移一位和取整)例:(1)a=3;a<<1;(2)a=3;a>>1;(3)a=2;a<<1;(4)a=2;a>>1運(yùn)算符的優(yōu)先級別強(qiáng)制:()算術(shù):+,-,*,/,%下標(biāo):[]位運(yùn)算:>>,<<成員:,.關(guān)系:>=,<=,<,>,==,!=邏輯:!位邏輯:&,|,^位非:~邏輯:&&,||自增自減:++,--條件:?:指針:&,*賦值:=取正負(fù):+,-自反賦值:+=,-=,%=,/=······長度測試:sizeof

逗號:,

29第三章結(jié)構(gòu)化程序設(shè)計(jì)30一、順序結(jié)構(gòu)1、格式化輸入函數(shù)(1)格式化輸入函數(shù)(scanf)結(jié)構(gòu):scanf(“格式符”,地址表列);功能:從鍵盤對變量賦值。注意事項(xiàng):1、scanf后一定為地址

2、輸入的形式和輸入的格式要一一對應(yīng)

3、scanf的格式符中不可出現(xiàn)小數(shù)(2)輸入寬度的限制格式:scanf(“%md”,&a);功能:代表接受的寬度說明:若實(shí)際寬度>m則只接收m位,若不足m位,則全部接收312、格式化輸出函數(shù)(1)格式化輸出函數(shù)(printf)結(jié)構(gòu)1:printf(“格式符”,變量名);功能:輸出變量所對應(yīng)的值結(jié)構(gòu)2:printf(“常量”);功能:原樣輸出常量的值(2)輸出寬度的限制格式1:printf(“%-md”,a);說明:1、若實(shí)際寬度大于m,則原樣輸出

2、若實(shí)際寬度小于m,有-左對齊,右補(bǔ)空格無-右對齊,左補(bǔ)空格32格式2:printf(“%-m.nf”,a);說明:1、m代表總寬度

2、n代表小數(shù)位數(shù)練習(xí):1、輸入3個(gè)數(shù)求最大值2、編寫程序,功能是:四舍五入并保留兩位小數(shù)3、當(dāng)a=45,b=12,執(zhí)行c=51424、輸入一個(gè)字母,若是大寫字母則變?yōu)樾戄敵?,若是小寫則變?yōu)榇髮戄敵?3單個(gè)字符的輸入輸出函數(shù)單個(gè)字符的輸入輸出函數(shù)在使用時(shí)必須加頭函數(shù)#include“stdio.h”1、單個(gè)字符的輸入函數(shù)(getchar)格式:變量名=getchar();功能:從鍵盤輸入單個(gè)字符賦于變量說明:a.只可接受單個(gè)字符

b.只適合于字符型變量

c.若要對多個(gè)變量賦值,必須多次調(diào)用函數(shù)342、單個(gè)字符的輸出函數(shù)(putchar)格式:putchar(變量名);功能:輸出變量所對應(yīng)的字符

putchar(‘字符’);功能:原樣輸出單引號中的字符說明:a.只可輸出單個(gè)字符

b.輸出常量時(shí)必須帶單引號35二、選擇結(jié)構(gòu)單分支選擇結(jié)構(gòu)(if)雙分支選擇結(jié)構(gòu)(if···else)多分支選擇結(jié)構(gòu)(switch)

1、單分支選擇結(jié)構(gòu)(if語句)結(jié)構(gòu):if(表達(dá)式)語句1;功能:判斷表達(dá)式的真與假,如果為真則執(zhí)行語句1,再順序執(zhí)行其后的語句,否則跳過語句1去執(zhí)行其后的語句注意事項(xiàng):a.if后的表達(dá)式要用括號括起來

b.if只默認(rèn)控制其后的第一個(gè);語句,如果要控制多條語句必須用{}括起來36例:#include“stdio.h”main(){chara;a=getchar();

if(a>=65&&a<=90)printf(“%d”,a+32);

if(a>=97&&a<=122)printf(“%d”,a-32);}if語句的使用:1、并列結(jié)構(gòu):一條一條順序的執(zhí)行,if();if();2、嵌套結(jié)構(gòu):大小層次執(zhí)行,if()if();372、雙分支選擇結(jié)構(gòu)格式:if(表達(dá)式)語句1;

else語句2;功能:判斷表達(dá)式的真與假,如果為真則執(zhí)行語句1,否則執(zhí)行語句2.說明:a.If與else的配對原則采取就近原則

b.If與else默認(rèn)只控制其后一條語句,如果控制多條要用{}括起來

c.else子句(可選)是if語句的一部分,必須與if配對使用,不能單獨(dú)使用if()~else語句的使用1、并列結(jié)構(gòu):一條一條順序的執(zhí)行

if();else;if();else;··382、嵌套結(jié)構(gòu):大小層次的執(zhí)行

if()if();

if();elseelse;if();

else;練習(xí):1、編寫程序求y值2、輸入3個(gè)數(shù)從小到大排序3、輸入兩個(gè)數(shù),逆序存儲4、輸入一個(gè)三位是分別輸出個(gè)位,十位,百位5、輸入一個(gè)不超過四位的數(shù),判斷是幾位數(shù)393、多分支選擇結(jié)構(gòu)結(jié)構(gòu):switch(表達(dá)式)

{case常量表達(dá)式1:語句1;break;

case常量表達(dá)式2:語句2;break;

······················case常量表達(dá)式n:語句n;break;

default:語句n+1;

}功能:先計(jì)算switch表達(dá)式的值,若和某個(gè)case的值相同,則計(jì)算其后的語句,若和所有的case的值都不相同,則執(zhí)行default其后的語句。注意事項(xiàng):1、switch后沒有;2、case不可出現(xiàn)變量和實(shí)型表達(dá)式3、case后用:404、若case后有break則執(zhí)行完相應(yīng)的case語句后結(jié)束switch語句,若某個(gè)case后無break語句,則執(zhí)行完相應(yīng)的case語句后順序無條件的執(zhí)行其后的case語句,直到下一個(gè)break或switch語句的結(jié)束5、switch后可有無數(shù)個(gè)case,但case后的常量不可重復(fù),若干case之間無先后順序例1:

main()

{floatx,y;

switch(x>=0){case1:y=102+2*x;break;case0:y=3.0+3*x;}

printf(“%f”,y);

}41例2:

main(){floata,b,y;charc;

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

switch(c){case‘+’:y=a+b;break;case‘-’:y=a-b;break;case‘*’:y=a*b;break;case‘/’:y=a/b;break;}

printf(“%f”,y);}42練習(xí):1、輸入月份輸出每個(gè)月份的天數(shù)(大月31天,小月30天,閏年2月29天,平年28天)要求用三種方法:if,if···else,switch2、a的取值范圍0~100a<60m=160<=a<70m=270<=a<80m=380<=a<90m=490<=a<100m=5

43三、循環(huán)結(jié)構(gòu)1、while語句結(jié)構(gòu):while(表達(dá)式)

{循環(huán)體}功能:判斷表達(dá)式的真與假,如果為真則執(zhí)行循環(huán)體,執(zhí)行完再判斷表達(dá)式的真與假,直到表達(dá)式的值為假時(shí)結(jié)束循環(huán)說明:a.while語句先判斷后執(zhí)行,如果第一次就不成立則不執(zhí)行循環(huán)體。

b.while語句默認(rèn)只控制其后的第一個(gè);語句,若控制多條必須帶{},若只有一條循環(huán)語句,也可省略{}c.while的表達(dá)式后不帶;44例1:求1~10之間的和

main()

{inti=1,sum=0;

while(i<=10)

{sum=sum+i;i++}

printf(“%d”,sum);

}例2:求1~100之間偶數(shù)之和

main(){inti=2,sum=0;while(i<=100){sum=sum+i;i=i+2;}

printf(“%d”,sum);}45(1)1+2+·····+nsum=sum+i(2)1+1/2+1/3+``````+1/nsum=sum+1.0/i(3)1/2+2/3+3/4+```````+n/n+1sum=sum+i/(i+1)(4)2/3+4/5+6/7+``````(a=2,b=3,a=a+2,b=b+2)sum=sum+a/b(5)s=1+(1+2)+(1+2+3)+```````t=t+i,s=s+t462、do-while語句結(jié)構(gòu):do{循環(huán)體}while(表達(dá)式);功能:先執(zhí)行循環(huán)體在判斷表達(dá)式的真與假,如果為真則繼續(xù)執(zhí)行循環(huán)體,直到表達(dá)式的值為假時(shí)結(jié)束循環(huán)。While與do-while的區(qū)別:

a.while先判斷后執(zhí)行

b.do–while先執(zhí)行后判斷

c.do–while的while后要帶;,while語句的while后不帶;3、for語句結(jié)構(gòu):for(語句1;語句2;語句3)

{循環(huán)體}47說明:語句1:用來對循環(huán)變量賦初值語句2:用來表示循環(huán)判斷條件語句3:用來指定循環(huán)變量的自增自減功能:先執(zhí)行1,再判斷2,如果為真則執(zhí)行循環(huán)體再執(zhí)行3,再次判斷2直到條件為假時(shí)結(jié)束循環(huán)注意事項(xiàng):

a。在for語句中各表達(dá)式之間必須用;隔開,第三個(gè)語句后無b。如果省略語句1,再循環(huán)前必須要給循環(huán)變量賦初值,但其后的;不可省略c。如果省略語句2,默認(rèn)循環(huán)條件永遠(yuǎn)為真(即死循環(huán))d。如果省略語句3,必須在循環(huán)體內(nèi)出現(xiàn)循環(huán)變量的自增自減e。For語句默認(rèn)控制其后的一個(gè);語句,如控制多條必須用{}break:結(jié)束本層循環(huán)

continue:結(jié)束本次循環(huán)48例:循環(huán)的嵌套與并列1、并列結(jié)構(gòu):for();

for();2、循環(huán)結(jié)構(gòu)(大的走一次,小的走一圈):

for()

for();例1:輸入一個(gè)數(shù)判斷是否是素?cái)?shù)

例2:判斷100~200之間的素?cái)?shù)49數(shù)組501、一維數(shù)組的定義格式:數(shù)據(jù)類型數(shù)組名[常量表達(dá)式]例:inta[10];floata[10];功能:定義一個(gè)a數(shù)組,數(shù)組中含有10個(gè)元素注意事項(xiàng):

a.數(shù)字長度一般為一個(gè)整型常量,不可為變量

b.引用數(shù)字時(shí),其元素默認(rèn)是從a[0]到a[n-1]c.數(shù)組名后面必須使用[]2、一維數(shù)組的初始化方式(1)對全部元素賦初值,如:inta[5]={1,2,3,4,5};(2)只對部分元素賦初值,此時(shí)默認(rèn)其余元素為0

如:inta[5]={1,2,3};(3)當(dāng)對全部元素賦初值,可以省略數(shù)字長度如:inta[]={1,2,3,4,5};51注意:引用數(shù)組元素時(shí),下標(biāo)即可為常量也可為變量,還可為表達(dá)式如:x=3,a[3]=a[1+2]=a[x]1、一維數(shù)組的輸入如:inta[10],i;

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

scanf(“%d”,&a[i]);2、一維數(shù)組的輸出如:inta[10],i;

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

printf(“%d”,a[i]);3、一維數(shù)組的存儲一維數(shù)組的存儲為順序存儲52例:將a數(shù)組中小于平均值的數(shù)賦給b數(shù)組

main(){inta[9]={10,20,30,40,50,60,70,80,90},b[9],i,j=0;floatsum=0,ave;

for(i=0;i<9;i++)sum=sum+a[i];

ave=sum/9;

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

if(a[i]<ave)b[j++]=a[i];

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

printf(“%d”,b[i]);}

53例:求出1到1000之內(nèi)能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù)并將其放在a數(shù)組中

main(){inta[1000],i,j=0;

for(i=1;i<=1000;i++)if((i%7==0||i%11==0)&&i%77!=0)

a[j++]=i;

for(i=0;i<j;i++)printf(“%d”,a[i]);}54例:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)放入xx數(shù)組中,若輸入17,5則結(jié)果為19,23,29,31,37main(){intm,k,a[50],i,j=0,x;

scanf(“%d,%d”,&m,&k);

for(x=m+1;;x++){for(i=2;i<x;i++)

if(x%i==0)break;

if(x==i){a[j++]=x;if(j==k)break;}}

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

printf(“%d”,a[i]);}55作業(yè):1、輸入一個(gè)整數(shù),求出小于或等于這個(gè)整數(shù)的所有素?cái)?shù)并放在aa數(shù)組中。2、求出1到m之內(nèi)(包括m)能被7或11整除的所有整數(shù)放在aa數(shù)組中3、將所有大于1小于整數(shù)m的非素?cái)?shù)放入xx數(shù)組中4、計(jì)算并輸出給定整數(shù)n的所有因子(不包括1和自身)之和,要求n的值不大于10005、計(jì)算并輸出3到n之間所有素?cái)?shù)的平方根之和如:輸入n=100時(shí),結(jié)果為sum=148.87427056二維數(shù)組1、二維數(shù)組的定義結(jié)構(gòu):數(shù)據(jù)類型數(shù)組名[長度1][長度2];如:inta[3][4];3表示行數(shù),4表示列數(shù)注意:(1)在二維數(shù)組的定義中要先寫行再寫列(2)數(shù)組長度都不可采用變量或表達(dá)式,只可用整型常量(3)數(shù)組的引用,下標(biāo)都從0開始,不可超過數(shù)組長度2、數(shù)組的引用:數(shù)組名[行下標(biāo)][列下標(biāo)]3、二維數(shù)組的存儲:按行存儲57二維數(shù)組的初始化1、直接對所有元素賦值如:inta[2][3]={1,2,3,4,5,6};2、按行賦值

如:inta[2][3]={{1,2,3},{4,5,6}};3、對部分元素賦值,其余元素默認(rèn)為0

如:inta[2][3]={{1},{4}};

inta[2][3]={1,2,3};4、對全部元素賦值時(shí),可省略第一維的大小,但不可省略第二維的大小如:inta[][3]={1,2,3,4,5,6};581、二維數(shù)組的輸入如:inta[2][3],i,j;

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

for(j=0;j<3;j++)

scanf(“%d”,&a[i][j]);2、二維數(shù)組的輸出如:inta[2][3],i,j;

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

for(j=0;j<3;j++)

printf(“%d”,a[i][j]);

printf(“\n”);以4行4列的二維數(shù)組為例,周邊元素的條件:

if(i==0||i==3||j==0||j==3)59中間元素的條件:if(i==0||i==3||j==0||j==3);

else正對角線的條件:i==j左下半角三角形:for(i=0;i<3;i++)

for(j=0;j<=i;j++)右上半角三角形:for(i=0;i<3;i++)

for(j=i;j<=2;j++)反對角線條件:i+j=最大下標(biāo)左上半角三角形:for(i=0;i<3;i++)

for(j=0;j<=2-i;j++)右下半角三角形:for(i=0;i<3;i++)

for(j=2-i;j<=2;j++)60例:定義一個(gè)n*n的二維數(shù)組,使數(shù)組左下半角元素的值全部置為0main(){inta[3][3]={1,9,7,2,3,8,4,5,6},i,j;

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

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

a[i][j]=0;

for(i=0;i<3;i++){for(j=0;j<3;j++)

printf(“%d”,&a[i][j]);

printf(“\n”);}}

61例:定義一個(gè)n*n的二維數(shù)組,求出數(shù)組周邊元素的平均值

main(){inta[5][5],i,j,t=0;floatsum=0,ave;

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

for(j=0;j<5;j++)

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

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

for(j=0;j<5;j++)

if(i==0||i==4||j==0||j==4){sum=sum+a[i][j];t++;}

ave=sum/t;

printf(“%f”,ave);}62例:實(shí)現(xiàn)矩陣(3行列)的轉(zhuǎn)置

main(){inta[3][3]={100,200,300,400,500,600,700,800,900},i,j,b[3][3];

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

for(j=0;j<3;j++)

b[j][i]=a[i][j];

for(i=0;i<3;i++){for(j=0;j<3;j++)

printf(“%d”,&a[i][j]);

printf(“\n”);}}

63作業(yè):1、有一個(gè)4行5列的二維數(shù)組,求出其周邊元素之和2、定義一個(gè)n*n的二維數(shù)組,使數(shù)組右上半角元素中的值都乘以m3、實(shí)現(xiàn)B=A+A’(即把矩陣A加上A的轉(zhuǎn)置,存放到矩陣B中)4、將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次存放到一維數(shù)組中5、將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次存放到一維數(shù)組中6、定義一個(gè)n*n的二維數(shù)組,使數(shù)組左下半角元素中的值都乘以n64字符數(shù)組與字符串?dāng)?shù)組1、字符數(shù)組的定義結(jié)構(gòu):數(shù)據(jù)類型數(shù)組名[數(shù)組長度];如:chara[10];2、字符數(shù)組的初始化(1)逐個(gè)元素賦值如:

chara[5]={‘a(chǎn)’,’b’,’c’,’d’,’e’};注意:字符數(shù)組賦值時(shí),各元素必須用單引號(2)對部分元素賦值時(shí),其余元素默認(rèn)為空(’\0’)

如:chara[5]={‘a(chǎn)’,’b’,’c’};(3)對全部元素賦值時(shí),可以省略數(shù)組的長度如:chara[]={‘a(chǎn)’,’b’,’c’};651、字符串?dāng)?shù)組的賦值(1)按單個(gè)字符的方式賦初值如:chara[5]={‘a(chǎn)’,’b’,’c’,’d’};chara[5]={‘a(chǎn)’,’b’,’c’,’\0’};注意:必須留有一個(gè)字符的空間,作為字符串的結(jié)束標(biāo)志(2)直接賦字符串如:chara[50]={“abcd”};chara[50]=“abcd”;注意:只要數(shù)組中有‘\0’,即為字符串?dāng)?shù)組1、對于字符串可用%s整體輸入格式:scanf(“%s”,數(shù)組名);如:chara[80];scanf(“%s”,a);注意:用%s輸入時(shí),將空格和回車都視為結(jié)束標(biāo)志如:123454568回車結(jié)果為:1234512345回車結(jié)果為:12345

662、格式化輸出格式:printf(“%s”,數(shù)組名);例:chara[80]=“abcd”;

printf(“%s”,a);結(jié)果為:abcdchara[80]={‘a(chǎn)’,’b’,’\0’,’c’};

printf(“%s”,a);結(jié)果為:ab注意:%s輸出時(shí),只輸出到第一個(gè)’\0’處所有字符串處理函數(shù),都必須掛頭函數(shù)

#include“string.h”1、字符串的輸入函數(shù)(gets)結(jié)構(gòu):gets(數(shù)組名);如:chara[80];gets(a);說明:gets輸入字符串時(shí),允許包括空格,而scanf函數(shù)不允許接受空格672、字符串的輸出函數(shù)(puts)結(jié)構(gòu):puts(數(shù)組名);如:chara[80]=“abcd”;puts(a);說明:(1)只輸出到第一個(gè)‘\0’處(字符串的結(jié)束標(biāo)志)(2)輸出多個(gè)字符串時(shí),可自動換行,不要求另加換行符Strcmp

字符串比較大小函數(shù)假設(shè)a,b都為數(shù)組格式:strcmp(a,b);功能:比較兩個(gè)字符串的大小如果a=b,函數(shù)返回值為0a<b,函數(shù)返回值為負(fù)整數(shù)

a>b,函數(shù)返回值為正整數(shù)68比較數(shù)組a和數(shù)組b#include“string.h”main(){chara[80],b[80],i;

gets(a);gets(b);

for(i=0;a[i]==b[i];i++);

if(a[i]>b[i])puts(a);elseputs(b);}69Strcpy字符串拷貝函數(shù)假設(shè)a和b都為數(shù)組格式:strcpy(a,b);功能:將b拷貝到a中,同時(shí)將’\0’一起拷貝說明:(1)a數(shù)組必須定義的足夠大,至少大于等于b數(shù)組的長度(2)復(fù)制時(shí),連同結(jié)束標(biāo)志’\0’一起復(fù)制(3)不能用賦值運(yùn)算符”=“將一個(gè)字符串直接賦值給一個(gè)字符數(shù)組,只能用strcpy()函數(shù)處理可能出現(xiàn)亂碼的原因:字符數(shù)組中沒有’\0’例:將b數(shù)組中的值賦給a數(shù)組

main(){chara[80],b[80],i,j=0;for(i=0;b[i]!=0;i++)

gets(b);a[j++]=b[i];a[j]=0;puts(a);}70Strcat字符串連接函數(shù)假設(shè)a,b都為數(shù)組格式:strcat(a,b);功能:將b數(shù)組連接到a數(shù)組的最后說明:(1)a數(shù)組的長度要求足夠大,至少為a+b的和(2)刪除a數(shù)組原來的’\0’并在連接的最后賦一個(gè)’\0’(3)a數(shù)組不可為空例:將b數(shù)組連接到a數(shù)組中

main(){chara[80],b[80],i,j;a[i++]=b[j];

gets(a);gets(b);a[i]=0;

for(i=0;a[i]!=0;i++);puts(a);}

for(j=0;b[j]!=0;j++)71測試字符串長度---strlen()(功能:返回字符串中的實(shí)際長度等于’\0’的下標(biāo)。(’\0‘的下標(biāo)就是字符串的長度)將字符串中大寫轉(zhuǎn)換成小寫-----strlwr()函數(shù)將字符串中小寫轉(zhuǎn)換成大寫-----strupr()函數(shù)例:比較兩個(gè)字符串的長度

main(){chara[80],b[80],i,j;

gets(a);gets(b);

for(i=0;a[i]!=0;i++);

for(j=0;b[j]!=0;j++);

if(i>j)puts(a);elseputs(b);}72字符串的循環(huán)(1)for(i=0;a[i];i++)(2)for(i=0;a[i]!=0;i++)(3)for(i=0;a[i]!=’\0‘;i++)(4)for(i=0;i<strlen(a);i++)練習(xí):1、刪除字符串a(chǎn)數(shù)組中指定的字符,將剩余字符串存放到b數(shù)組中,要求:輸入指定字符的下標(biāo)2、從字符串中刪除指定的字符,同一字母的大小寫,按不同字符處理,若輸入的字符在字符串中不存在,則原樣輸出73作業(yè):1、將a數(shù)組中字符串中除了下標(biāo)為偶數(shù),同時(shí)asc碼也為偶數(shù)的字符外,其余全部刪除,剩余的字符串存入一個(gè)新的b數(shù)組中2、定義一個(gè)字符串,將字符串中所有的空格刪除3、求出ss所指的字符串中指定字符的個(gè)數(shù),如輸入字符串為:123412132,指定字符為1,則結(jié)果為34、將a數(shù)組中字符串中除了下標(biāo)為偶數(shù),同時(shí)asc碼也為奇數(shù)的字符刪除,剩余的字符串存入一個(gè)新的b數(shù)組中74函數(shù)751、函數(shù)的定義函數(shù)定義的3種方式(1)無參函數(shù)的定義形式結(jié)構(gòu):函數(shù)類型函數(shù)名()

{函數(shù)體}如:p1(){printf(“******”);}(2)有參函數(shù)的定義結(jié)構(gòu)1:函數(shù)類型函數(shù)名(形式參數(shù)說明表列){函數(shù)體}如:int

max(int

x,inty){if(x>y)returnx;elsereturny;}76結(jié)構(gòu)2:函數(shù)類型函數(shù)名(形式表列)形參說明;

{函數(shù)體}如:int

max(x,y)

int

x,y;{if(x<y)returnx;elsereturny;}注意事項(xiàng):1、在定義函數(shù)時(shí),若省略函數(shù)的數(shù)據(jù)類型默認(rèn)為整型,與返回值的類型無關(guān)2、形參的數(shù)據(jù)類型必須分開定義3、函數(shù)名后不可帶;4、各參數(shù)之間必須用,隔開77(3)空函數(shù)的定義結(jié)構(gòu):函數(shù)類型函數(shù)名()

{}如:voidmain()

{}注意:void代表無返回值78函數(shù)的聲明函數(shù)必須要先定義后調(diào)用,除(整型和字符型),其余函數(shù)如果定義在主函數(shù)的后面都必須聲明聲明的常用格式為:1、doublefun(double,double);2、doublefun(doublex,doubley);3、doublefun();函數(shù)聲明的位置:主函數(shù)的上面或函數(shù)體內(nèi),定義變量的前面函數(shù)參數(shù)與函數(shù)的值形參:定義函數(shù)時(shí)函數(shù)后面括號中的變量稱為形參實(shí)參:在主函數(shù)中調(diào)用函數(shù)時(shí),函數(shù)名括號中的參數(shù)為實(shí)參79返回值:通過return完成1、return;(無返回值)2、return3;(返回3)3、return(3);(返回3)4、return表達(dá)式;(返回表達(dá)式的最終結(jié)果)5、return變量名;(返回變量的值)注意:函數(shù)返回值的類型由函數(shù)類型決定80函數(shù)的調(diào)用1、函數(shù)調(diào)用的一般形式:函數(shù)名(實(shí)參表);2、調(diào)用方式:(1)函數(shù)語句調(diào)用如:p1();注意:此時(shí)不要求函數(shù)帶有返回值,只要求完成一定的功能(2)函數(shù)表達(dá)式調(diào)用

c=2*max(a,b);注意:要求必須有返回值(3)函數(shù)參數(shù)調(diào)用

m=max(a,max(b,c));注意:要求必須有返回值811、數(shù)組名做函數(shù)參數(shù)函數(shù)說明的常用結(jié)構(gòu):(1)intsort(inta[10])(2)intsort(inta[])(3)intsort(inta[10],intn)2、數(shù)組名做函數(shù)參數(shù)的調(diào)用方式結(jié)構(gòu):函數(shù)名(數(shù)組名);注意事項(xiàng):(1)要求實(shí)參與形參都必須是數(shù)組.(2)數(shù)組傳遞屬于雙向傳遞,無返回值3、用多維數(shù)組做函數(shù)參數(shù)(二維數(shù)組)定義格式:函數(shù)類型函數(shù)名(inta[2][3])

(inta[][3])注意:可省略數(shù)組的第一維大小,不可省略第二維824、函數(shù)的遞歸調(diào)用定義:在調(diào)用一個(gè)函數(shù)時(shí),又出現(xiàn)直接或間接的調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用特點(diǎn):先進(jìn)后出例:求n的階乘

main(){printf(“%d”,fun(5));}

fun(intn){ints;

if(n==0||n==1)s=1;elses=fun(n-1)*n;returns;}83例:斐波那契數(shù)列,函數(shù)的遞歸調(diào)用

fun(intn){ints;

if(n==0)s=0;elseif(n==1)s=1;elses=fun(n-1)+fun(n-2);returns;}main(){printf(“%d”,fun(7));}845、函數(shù)的嵌套調(diào)用定義:調(diào)用一個(gè)函數(shù)時(shí),又調(diào)用其他函數(shù),稱為函數(shù)的嵌套調(diào)用注意:函數(shù)只可嵌套調(diào)用,不可嵌套定義函數(shù)調(diào)用中的數(shù)據(jù)傳遞方法1、常用的數(shù)據(jù)傳遞值傳遞方式(單向)地址傳遞方式(雙向)返回值方式全局變量傳遞方式(1)值傳遞方式:是一種實(shí)參與形參之間進(jìn)行數(shù)據(jù)傳遞的方式,一般變量,常量,表達(dá)式都采用這種傳遞方式特點(diǎn):參數(shù)值的單向傳遞由實(shí)參--》形參,但形參的結(jié)果并不返回到實(shí)參中(2)地址傳遞方式(雙向)定義:地址傳遞的為地址特點(diǎn):雙向的地址傳遞85(3)返回值方式定義:返回值方式不是實(shí)參與形參之間的傳遞數(shù)據(jù),而是通過return語句返回一個(gè)確切的值到主函數(shù)中注意:a.返回值的數(shù)據(jù)類型由函數(shù)的數(shù)據(jù)類型所決定

b.return一次只可返回一個(gè)結(jié)果

c.任意時(shí)刻執(zhí)行到return語句,即結(jié)束自定義函數(shù)的執(zhí)行(4)全局變量方式局部變量:在函數(shù)體內(nèi)部定義的變量叫局部變量有效范圍:本函數(shù)體內(nèi)形參屬于局部變量全局變量:在函數(shù)體外定義的變量叫全局變量有效范圍:從定義處到本源程序結(jié)束當(dāng)全局變量與局部變量重名時(shí),局部變量優(yōu)先86變量的存儲類型1、分類:

auto:1)不賦初值時(shí),系統(tǒng)默認(rèn)為隨即數(shù)

2)多次調(diào)用都從初值開始重新運(yùn)算Static:1)不賦初值時(shí),系統(tǒng)默認(rèn)為02)多次調(diào)用都從上一次的結(jié)果開始累加

register:已取消

extern:用于聲明外部變量,將變量寫在主函數(shù)的下面的時(shí)候,必須用extern聲明例:main()

{p1();p1();p1();}p1()1)、{intx=0;x+=1;printf(“%d”,x);}2)、{staticintx=0;x+=1;printf(“%d”,x);}注意:省略變量的存儲類型默認(rèn)為auto872、函數(shù)的存儲類型:

static:內(nèi)部函數(shù)

extern:外部函數(shù)注意:若省略函數(shù)的存儲類別默認(rèn)為extern88編譯預(yù)處理命令891、定義:以#開頭的命令叫編譯預(yù)處理命令注意:編譯預(yù)處理命令只占用編譯時(shí)間,不占用運(yùn)行時(shí)間2、預(yù)處理包括:宏定義文件包含條件編譯1、宏定義:是以#開頭的編譯預(yù)處理命令,分為無參宏和有參宏。無參宏的定義和引用格式:#define宏名一串字符說明:(1)宏名通常是由大寫字母組成的標(biāo)識符(2)一串符號是由任意字符組成的一串符號功能:定義宏名對應(yīng)于一串符號90注意:(1)編譯時(shí)先將宏名替換為一串符號,然后運(yùn)算(2)宏名的前后應(yīng)有空格,以便準(zhǔn)確的辨認(rèn)宏名(3)在一串符號中如果出現(xiàn)運(yùn)算符,要在適當(dāng)?shù)奈恢眉永ㄌ柸纾?defineP(2+1.45)s=p*2*2;(4)宏定義也有定義域,它的定義域從定義處到文件尾或

#under(5)c語言規(guī)定,宏名出現(xiàn)在字符串中,將不作為宏名替換(6)在宏定義的過程中,可以出現(xiàn)另一個(gè)宏名,稱為嵌套的宏定義注意:宏定義屬于常量91帶參宏的定義和引用格式:#define宏名(形參表)一串符號說明:形參使用逗號隔開的若干個(gè)變量名文件包含中include“”范圍大于include<>宏運(yùn)算的規(guī)則:先替換后運(yùn)算92指針93指針變量:存放地址的變量叫指針變量指針的定義和初始化1、格式:數(shù)據(jù)類型*指針變量名;如:int*p;float*p;char*p;2、功能:定義一個(gè)指針變量(說明:*是指針標(biāo)志,p才是指針變量)3、說明事項(xiàng):(1)指針變量的數(shù)據(jù)類型和其指向變量的數(shù)據(jù)類型必須一致,(2)指針變量必須先賦值(地址)才可使用94指針的兩個(gè)運(yùn)算符1、*:取值運(yùn)算符

&:取地址運(yùn)算符2、指針變量的賦初值和初始化(1)賦初值:int*p,a;p=&a;(2)初始化:int*p=&a,a;(錯(cuò))

inta,*p=&a;(對)帶數(shù)據(jù)類型時(shí),*是指針標(biāo)志例:(1)inta=30,*p;p=&a;a=?*p=?(2)inta=100,*p=&a;*p=200;a=300;a=?*p=?95指針作形參接收普通變量1、結(jié)構(gòu):數(shù)據(jù)類型函數(shù)名(數(shù)據(jù)類型*指針變量)

{函數(shù)體}2、功能:定義一個(gè)指針用來接收實(shí)參的地址。注意:1)指針只可接收變量的地址

2)指針做形參時(shí),實(shí)參必須傳遞地址

3)雙向?qū)儆趯?shí)參與形參的雙向傳遞,雙向地址傳遞實(shí)現(xiàn)兩數(shù)的交換1、普通變量交換:

int

fun(int

a,intb)scanf(“%d%d”,&a,&b);{intt;fun();t=a;a=b;b=t;}printf(“%d%d”,a,b);main()}{int

a,b;962、指針變量交換

fun(int*a,int*b){intt;

t=*a;*a=*b;*b=t;}main(){int

a,b;

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論