




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、華北電力大學(xué)信息網(wǎng)絡(luò)管理華北電力大學(xué)信息網(wǎng)絡(luò)管理中心計(jì)算機(jī)基礎(chǔ)教研室中心計(jì)算機(jī)基礎(chǔ)教研室辦公室電話(huà):辦公室電話(huà):2474 熟悉語(yǔ)法熟悉語(yǔ)法 掌握程序設(shè)計(jì)技巧掌握程序設(shè)計(jì)技巧 做好聽(tīng)課筆記做好聽(tīng)課筆記 程序規(guī)則程序規(guī)則 運(yùn)算規(guī)則運(yùn)算規(guī)則 語(yǔ)句規(guī)則等語(yǔ)句規(guī)則等第一章 C語(yǔ)言基礎(chǔ)1.1計(jì)算機(jī)語(yǔ)言計(jì)算機(jī)語(yǔ)言1.3 C程序的開(kāi)發(fā)及上機(jī)步驟程序的開(kāi)發(fā)及上機(jī)步驟1.2 C語(yǔ)言概述語(yǔ)言概述1.4基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型1.5 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式.機(jī)器語(yǔ)言.匯編語(yǔ)言.高級(jí)語(yǔ)言.用0、1組成,執(zhí)行速度快,難記、不通用.用助記符便于記憶、不通用.類(lèi)似自然語(yǔ)言和數(shù)學(xué)語(yǔ)言,通用性強(qiáng).例如:A=10,B=4 求
2、A+B的值001111010000101011000110000001001111001101110110LD A,0AH LD B,04H ADD A,B HALTA=10B=4C=A+BPRINT*,CEND只能識(shí)別機(jī)器語(yǔ)言程序1.1 計(jì)算機(jī)語(yǔ)言計(jì)算機(jī)語(yǔ)言語(yǔ)言處理程序001111010000101011000110000001001111001101110110LD A,0AH LD B,04H ADD A,B HALTA=10B=4C=A+BPRINT*,CEND匯編語(yǔ)言源程序高級(jí)語(yǔ)言源程序匯編程序?解釋編譯目的程序源程序源程序目的程序目的程序可執(zhí)行程序可執(zhí)行程序鏈接程序編譯程序源程序源
3、程序結(jié)果結(jié)果解釋程序不同的語(yǔ)言需不同的編譯程序機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言面向過(guò)程面向?qū)ο驝PU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:10000000 加 10010000 減用助記符號(hào)描述的指令系統(tǒng)如 ADD A, B面向機(jī)器的語(yǔ)言程序設(shè)計(jì)是數(shù)據(jù)被加工的過(guò)程客觀世界可以分類(lèi),對(duì)象是類(lèi)的實(shí)例對(duì)象是數(shù)據(jù)和方法的封裝對(duì)象間通過(guò)發(fā)送和接受消息發(fā)生聯(lián)系程序設(shè)計(jì)關(guān)鍵是定義類(lèi),并由類(lèi)派生對(duì)象BASIC VBFORTRAN VFPASCAL DelphiCTurbo C+Visual C+Borland C+C+ Builder常用高級(jí)程序設(shè)計(jì)語(yǔ)言52 54 56 58 60 62 64 66 68 70
4、72 74 76 78 80 82 84 86 88 90 92 94 96AdaALGOL60ALGOL68PascalModula-2CPLBCPL BCC+JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simula 67Smalltalk 80BASICANSI-BASICQBASIC VBFORTRAN9032個(gè)關(guān)鍵字:(由系統(tǒng)定義,不能重作其它定義)auto break case char constcontinue default do double elseenum extern float for gotoif int long register
5、 returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while9種控制語(yǔ)句:if( )elsefor( )while( )dowhile( )continuebreakswitchgotoreturn34種運(yùn)算符:算術(shù)運(yùn)算符: + - * / % + -關(guān)系運(yùn)算符: = !=邏輯運(yùn)算符: ! & |位運(yùn)算符 : | &賦值運(yùn)算符: = 及其擴(kuò)展條件運(yùn)算符: ?:逗號(hào)運(yùn)算符: ,指針運(yùn)算符: * &求字節(jié)數(shù) : sizeof強(qiáng)制類(lèi)型轉(zhuǎn)換:(類(lèi)型)分量運(yùn)算符: . -下標(biāo)運(yùn)算符: 其它
6、 : ( ) -C數(shù)據(jù)類(lèi)型基本類(lèi)型構(gòu)造類(lèi)型指針類(lèi)型空類(lèi)型void定義類(lèi)型typedef數(shù)值類(lèi)型字符類(lèi)型char枚舉類(lèi)型enum整 型浮點(diǎn)型單精度型float雙精度型double短整型short長(zhǎng)整型long整型int數(shù)組結(jié)構(gòu)體struct共用體union/* example1.1 The first C Program*/#include main() printf(“Hello,World!”);注釋編譯預(yù)處理函數(shù)語(yǔ)句輸出:Hello,World!/* example1.1 calculate the sum of a and b*/#include /* This is the main
7、program */main() int a,b,sum; a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum);/* This function calculates the sum of x and y */int add(int x,int y) int z; z=x+y; return(z);運(yùn)行結(jié)果:sum=34函數(shù)語(yǔ)句預(yù)處理命令注釋main( ) . . . . . . .main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;jb _above $123M.D.John3days#
8、33char$123ab1.4 基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型v字符串常量字符串常量如 #define PRICE 30例 符號(hào)常量舉例(ch2_1.c)#define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(total=%d,total);運(yùn)行結(jié)果:total=3001.4 基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型例 12 與 12L例 30000 為int型 65536 為long int 型問(wèn)題:0123 = ( )100 x123 = ( )100Xff = ( )1083291255問(wèn)題:0123 = ( )100 x12
9、3 = ( )100Xff = ( )101.4 基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型1.4 基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型 b ) & ( x y )( (! a )+b) | | ( a b )a b & x y! a+b | | a b1.5 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式 邏輯運(yùn)算的結(jié)果只可能為邏輯運(yùn)算的結(jié)果只可能為1或或0; 邏輯運(yùn)算的對(duì)象可以是任邏輯運(yùn)算的對(duì)象可以是任何類(lèi)型的數(shù)據(jù)何類(lèi)型的數(shù)據(jù), “非非0為為“真真”, “0為為“假假”。 a&b&c (與短路運(yùn)算(與短路運(yùn)算) (m=ab) &(n=cd) a|b|c (或短路或短路)main() int m,n=10; m=2&n+; printf(
10、m=%d,n=%dn,m,n); 條件運(yùn)算條件運(yùn)算1.5 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式順序結(jié)構(gòu)順序結(jié)構(gòu) 、選擇結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)開(kāi)開(kāi) 始始賦賦 值值處處 理理int a , b, c;a=10; b=4; c=a+b;main( )printf(“%d,%d,%d”,a,b,c);輸輸 出出終了終了賦賦 值值處處 理理輸輸 出出賦值表達(dá)式;賦值表達(dá)式;格式格式 printf(“ printf(“格式控制格式控制”, ,輸出項(xiàng)輸出項(xiàng)) ) 如如: printf(“%d,%d,%d”,a,b,a+b) 如如: printf(“ t= %f, sint= %f n ”,t,sin(t
11、)格格式式說(shuō)說(shuō)明明%d按十進(jìn)制輸出整數(shù)按十進(jìn)制輸出整數(shù)格式控制格式控制意意 義義%f按小數(shù)形式輸出實(shí)數(shù)按小數(shù)形式輸出實(shí)數(shù)n換行換行其它字符其它字符原樣輸出原樣輸出例例: :當(dāng)當(dāng)a=10,b=-5.3a=10,b=-5.3時(shí)時(shí), ,寫(xiě)出下面寫(xiě)出下面語(yǔ)句的輸出結(jié)果語(yǔ)句的輸出結(jié)果printf(“ 格式控制格式控制”,輸出項(xiàng)輸出項(xiàng));printf(“%d , %f”,a,b);10,-5.300000printf(“a=%d nb=%f”,a,b);a=10b=-5.300000輸出項(xiàng)輸出項(xiàng): :變量、表達(dá)式、函數(shù)變量、表達(dá)式、函數(shù)格式控制:格式控制: 為輸出項(xiàng)提供格式說(shuō)明為輸出項(xiàng)提供格式說(shuō)明提供需要
12、原樣輸出的文字或提供需要原樣輸出的文字或字符字符; ; ;格式說(shuō)明的個(gè)數(shù)格式說(shuō)明的個(gè)數(shù)= =輸出項(xiàng)個(gè)數(shù)輸出項(xiàng)個(gè)數(shù)格式說(shuō)明的類(lèi)型格式說(shuō)明的類(lèi)型= =輸出項(xiàng)類(lèi)型輸出項(xiàng)類(lèi)型格式說(shuō)明格式說(shuō)明意意 義義數(shù)據(jù)寬度數(shù)據(jù)寬度%d按十進(jìn)制輸出整數(shù)按十進(jìn)制輸出整數(shù)%f按小數(shù)形式輸出實(shí)數(shù)按小數(shù)形式輸出實(shí)數(shù)系統(tǒng)決定系統(tǒng)決定%md注:注:m、n為整型常數(shù)為整型常數(shù)按十進(jìn)制輸出整數(shù)按十進(jìn)制輸出整數(shù)占占m位位例例1 a=23,b=34,c=-55,寫(xiě)出下面語(yǔ)句寫(xiě)出下面語(yǔ)句的運(yùn)行結(jié)果的運(yùn)行結(jié)果printf(“a=%d,b=%5d,c=%2d”,a,b,c)a=23,b= 34, c=-55%m.nf按小數(shù)形式輸出實(shí)數(shù)按小數(shù)形
13、式輸出實(shí)數(shù)(小數(shù)占(小數(shù)占6 6位)位).(實(shí)際位數(shù))(實(shí)際位數(shù))系統(tǒng)決定系統(tǒng)決定.n位位m位位例例2 t=2.346寫(xiě)出下面語(yǔ)句的運(yùn)行寫(xiě)出下面語(yǔ)句的運(yùn)行結(jié)果結(jié)果printf(“t=%f,%5.2f,%3.2f”,t,t,t)t=2.346000, 2.35,2.35例例1 1 已知三邊長(zhǎng),求三角形面積已知三邊長(zhǎng),求三角形面積( (四舍五入保留兩位小數(shù)四舍五入保留兩位小數(shù)) )。輸輸 入入處處 理理輸輸 出出c)(s*b)(s*a)(s*sarea2cbas如何保留小數(shù)如何保留小數(shù)? ?13.45613.461移動(dòng)小數(shù)點(diǎn)移動(dòng)小數(shù)點(diǎn)13.456*1002加加0.51345.6+0.53取整取整4
14、小數(shù)點(diǎn)還原小數(shù)點(diǎn)還原1346/100area*100.0=1345.6=1346.11346=13.46(int)( )+0.5 /100用同一個(gè)程序計(jì)算邊長(zhǎng)為用同一個(gè)程序計(jì)算邊長(zhǎng)為任意值的三角形面積任意值的三角形面積設(shè)邊長(zhǎng)為設(shè)邊長(zhǎng)為a a、b b、c c,那,那么:么:?jiǎn)栴}問(wèn)題s=(a+b+c)/2;float a,b,c,s,area; a=3.0;b=4.0;c=6.0;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%fn”,area);area=(int)(area*100+0.5)/100.0;#include “math.h”main( )%
15、f%6.2fprintf(“a,b,c=%f,%f,%fn”,a,b,c);a,b,c=area=3.000000,4.0000005.336.004.00,6.0000005.330000a,b,c= 3.00area=scanf(“格式控制格式控制”,地址表地址表)如:如:scanf(“%d,%f”,&a,&b)地址表列:地址表列:&a:變量變量a的地址的地址&b:變量變量b的地址的地址scanf(“格式控制格式控制”,地址表地址表);;%d按十進(jìn)制輸入整數(shù)按十進(jìn)制輸入整數(shù)格式格式說(shuō)明說(shuō)明格式控制格式控制意意 義義%f按小數(shù)形式輸入實(shí)數(shù)按小數(shù)形式輸入實(shí)數(shù)其它字符其它字符原樣輸入原樣輸入&:
16、地址運(yùn)算符地址運(yùn)算符格式控制:格式控制:指定數(shù)據(jù)輸入的格式指定數(shù)據(jù)輸入的格式例如:設(shè)例如:設(shè)a=2,b=2.5,a=2,b=2.5,寫(xiě)出執(zhí)行下寫(xiě)出執(zhí)行下面的語(yǔ)句時(shí),數(shù)據(jù)輸入的形式。面的語(yǔ)句時(shí),數(shù)據(jù)輸入的形式。scanf(“%d%f”,&a,&b);scanf(“%d,%f”,&a,&b);scanf(“a=%d,b=%f”,&a,&b); :數(shù)據(jù)間的分隔數(shù)據(jù)間的分隔符符輸輸 入入緩沖區(qū)緩沖區(qū)ab內(nèi)存內(nèi)存單元單元P79P82程程序序運(yùn)運(yùn)行行時(shí)時(shí)例例2 2 將兩個(gè)變量中的值互換。將兩個(gè)變量中的值互換。分分析析ab211a2b方法一:方法一:ab21a=bb=a11方法二:方法二:醋醋2a=bb=c
17、c醋醋醬油醬油醬油醬油=acab2a1bc12輸輸 入入交交 換換輸輸 出出main( )int a,b,c;scanf(“%d,%d”,&a,&b);c=a;a=b;b=c;printf(“a=%d,b=%dn”,a,b);printf(“a=%d,b=%dn”,a,b);printf(“Please input a,b:”);中間變量的類(lèi)型要與原始變量一致中間變量的類(lèi)型要與原始變量一致Please input a,b:a=2, b=1a=1, b=2實(shí)際問(wèn)題實(shí)際問(wèn)題數(shù)學(xué)模型數(shù)學(xué)模型計(jì)算方法計(jì)算方法 編編 程程編輯程序編輯程序編譯查錯(cuò)編譯查錯(cuò) 銜接銜接錯(cuò)錯(cuò)? ?修改程序修改程序修改算法修改算
18、法修改模型修改模型錯(cuò)錯(cuò)? ?運(yùn)行程序運(yùn)行程序錯(cuò)錯(cuò)? ?小結(jié)小結(jié)main()() int x; scanf(“%d”,&x); if(x0) printf(“x=%d,YES”,x); else printf(“x=%d,NO”,x);x0真真YES假假NOP22P26條件條件根據(jù)條件是否為根據(jù)條件是否為真而選擇執(zhí)行不真而選擇執(zhí)行不同的程序塊同的程序塊同同 級(jí)級(jí)同同 級(jí)級(jí)得整數(shù)值:得整數(shù)值:0 0或或1 1b (a=4)+1得整數(shù)值:得整數(shù)值:0 0或或1 1a+bc&b=c!(x=a)&(y=b)if子句或子句或else子句包含多子句包含多個(gè)語(yǔ)句,就要用個(gè)語(yǔ)句,就要用、括起括起來(lái)來(lái)表達(dá)式為真?
19、表達(dá)式為真?真真If子句子句假假else子句子句x%3=0真真計(jì)算計(jì)算x3假假計(jì)算計(jì)算x2輸入輸入x輸出輸出輸出輸出終了終了表達(dá)式表達(dá)式為為 真?真?真真If子句子句假假ab?真真a、b交換交換假假輸入輸入a、b、c輸出輸出aac?真真a、c交換交換假假終了終了式式0 0為真?為真?A式式1 1為真?為真?式式2 2為真?為真?BCD A B C D式式0 0為真?為真?真真A假假式式1 1為真?為真?真真B假假式式2 2真?真?真真C假假D例例4 讀程序?qū)戇\(yùn)行結(jié)果讀程序?qū)戇\(yùn)行結(jié)果例例5 編寫(xiě)程序計(jì)算表達(dá)式的值:編寫(xiě)程序計(jì)算表達(dá)式的值:10)(x1x10)x(01x0)(xxyx0真真y=x假
20、假x=0)if(x0) y=1;else y=0;else y=-1;x 100-9 -1y=-1;if(x!=0)if(x0) y=1;else y=0;x 10 -1-9 0y=-1;if(x!=0)if(x0) y=1;else y=0; x 10 0-9 -1y40y 40y 40例例7 編寫(xiě)程序計(jì)算表達(dá)式的值:編寫(xiě)程序計(jì)算表達(dá)式的值:20)x(101x10)x(01x0)x(-5xy x-5&x-5&x20) if(x0) y=x;elseIf(x10)y=x-1;elsey=x+1; x10真真y=x-1y=x+1假假語(yǔ)語(yǔ)句句體體整型整型類(lèi)型相同類(lèi)型相同零個(gè)或一個(gè)以零個(gè)或一個(gè)以上的
21、語(yǔ)句上的語(yǔ)句計(jì)算表達(dá)式的值計(jì)算表達(dá)式的值 該值等于某常該值等于某常量表達(dá)式的值?量表達(dá)式的值?執(zhí)行該常執(zhí)行該常量表達(dá)式量表達(dá)式后各語(yǔ)句后各語(yǔ)句是是執(zhí)行執(zhí)行default后后各語(yǔ)句各語(yǔ)句不是不是退出退出例例8 寫(xiě)出下面程序的運(yùn)行結(jié)果。寫(xiě)出下面程序的運(yùn)行結(jié)果。main( )int g; scanf(“%d”,&g); switch(g/10) case 10:case 9: printf(“An”); case 8: printf(“Bn”); case 7: printf(“Cn”); case 6: printf(“Dn”); default: printf(“En”); main( )int
22、 g; scanf(“%d”,&g); printf(“g=%d”,g); switch(g/10) case 10:case 9: printf(“An”);break;case 8: printf(“Bn”);break; case 7: printf(“Cn”);break; default: printf(“En”); g=100BCDEg=45g=100g=78g=45AEA跳出跳出switch語(yǔ)句體語(yǔ)句體CE printf(“g=%d”,g);case 6: printf(“Dn”);break; goto 語(yǔ)句標(biāo)號(hào)語(yǔ)句標(biāo)號(hào)goto key;key: s+=x;語(yǔ)句標(biāo)號(hào):語(yǔ)句語(yǔ)句標(biāo)
23、號(hào):語(yǔ)句s+=x被被反反復(fù)復(fù)執(zhí)執(zhí)行行標(biāo)號(hào)標(biāo)號(hào):if(表達(dá)式表達(dá)式 )goto 標(biāo)號(hào)標(biāo)號(hào)循環(huán)體循環(huán)體表達(dá)式為真?表達(dá)式為真?真真假假退出退出當(dāng)表達(dá)式為真當(dāng)表達(dá)式為真循環(huán)體循環(huán)體例例1 編寫(xiě)程序計(jì)算表達(dá)式的值:編寫(xiě)程序計(jì)算表達(dá)式的值:x0真真y=x假假x10真真y=x-1假假y=x+120)x(101x10)x(01x0)x(-5xy 當(dāng)當(dāng)x=20輸入輸入x真真假假當(dāng)表達(dá)式為真時(shí)當(dāng)表達(dá)式為真時(shí) 循環(huán)體循環(huán)體i=i+1;循環(huán)前:循環(huán)前: i=1i第一次第一次循環(huán)次數(shù)循環(huán)次數(shù)i511,第二次第二次22,第三次第三次33,第四次第四次44,退出循環(huán):退出循環(huán): i=5關(guān)注循環(huán)前、循環(huán)中、關(guān)注循環(huán)前、循環(huán)
24、中、循環(huán)后控制變量的值循環(huán)后控制變量的值例例2 編程序,計(jì)算編程序,計(jì)算 s=1+2+3+100(1) 如何得到加數(shù)?如何得到加數(shù)?i:(2) 如何實(shí)現(xiàn)累加?如何實(shí)現(xiàn)累加? s為被加數(shù)為被加數(shù)初始:初始:s=0i=1: s+i ss=s+i;i=2:i=100:s+=i;1、2、100s=0;i=1,s=0當(dāng)當(dāng) i=100時(shí)時(shí)s+=ii+輸輸 出出s+=i;s+i ss+i smain ( ) int i,s; i=1; s=0; while(i=100) s+=i; i+; printf(“s=%d”,s); 1 1+2 1+2+.+100i=3: ss+i 1+2+3真真假假當(dāng)表達(dá)式為真當(dāng)
25、表達(dá)式為真循環(huán)體循環(huán)體循環(huán)前:循環(huán)前:i=1i第一次第一次循環(huán)次數(shù)循環(huán)次數(shù)11,第二次第二次22,第三次第三次33,第四次第四次44,退出循環(huán):退出循環(huán):i=5例例2 輸入任意輸入任意n個(gè)數(shù)個(gè)數(shù),計(jì)算其中奇數(shù)和及偶數(shù)和,并統(tǒng)計(jì)奇數(shù)個(gè)數(shù)。計(jì)算其中奇數(shù)和及偶數(shù)和,并統(tǒng)計(jì)奇數(shù)個(gè)數(shù)。i=n(2) 如何統(tǒng)計(jì)個(gè)數(shù)?如何統(tǒng)計(jì)個(gè)數(shù)?i=1,jh=0,oh=0,tj=0輸入輸入nx%2=0輸入輸入x真真oh+=x假假jh+=x,tj+i+當(dāng)當(dāng)i=n時(shí)時(shí)輸出輸出(1) 如何得到如何得到n個(gè)數(shù)?個(gè)數(shù)?main( ) int i=1,jh=0,oh=0,tj=0,n,x; printf(“Please input n
26、:”); scanf(“%d”,&n); do scanf(“%d”,&x);if(x%2=0)oh+=x;elsejh+=x,tj+;i+;while(i=n);printf(“The result:”);printf(“oh=%d”,oh);printf(“jh=%d,tj=%d”,jh,tj);真真假假例例2 計(jì)算計(jì)算n的階乘。的階乘。n!=12 3 (n-1)n遞歸定義:遞歸定義:n!=(n-1)! n (n-1)!=(n-2)! (n-1)結(jié)論:結(jié)論: 已知已知0!,求,求n!p:存放階乘:存放階乘i:計(jì)數(shù):計(jì)數(shù)過(guò)程:過(guò)程:p=0!=11!p*12!p*2(n-1)! p*(n-1)
27、n!p*n 確定確定n p=1 for i=1to np*=i 輸出輸出 main( ) scanf(“%d”,&n);p=1;for(i=1;i=n;i+) p*=i;ppppp*=i; int p,n,i; printf(“%d!=%d”,n,p);內(nèi)內(nèi)循循環(huán)環(huán)表達(dá)式為真?表達(dá)式為真?執(zhí)行內(nèi)循環(huán)執(zhí)行內(nèi)循環(huán)退出退出例例1 寫(xiě)出程序的運(yùn)行結(jié)果寫(xiě)出程序的運(yùn)行結(jié)果 main( ) m=0; for(j=k ; j=1 ; k - -) int k,j,m; kjm505254441335056522694771178381586m=86 問(wèn)題:語(yǔ)句問(wèn)題:語(yǔ)句m=0;放在內(nèi)放在內(nèi)外層循環(huán)之間,結(jié)果?
28、外層循環(huán)之間,結(jié)果?m= 9kjm例例2 寫(xiě)出程序的運(yùn)行結(jié)果寫(xiě)出程序的運(yùn)行結(jié)果 main( ) for(j=9-i;j=1;j- -) printf(“”); for( i= 1 ; i=5 ; i+) int i,j,k; for(k=1;k=2*i-1;k+) printf(“*”); printf(“n”); ijk1181 2 7113 36115 45117 54119 條件為真條件為真 退出循環(huán)退出循環(huán)算算ai 算算p 算算q 例例1 計(jì)算:計(jì)算:s=1+x 2!x2+x33!n!+ (1)n+1xn通項(xiàng)通項(xiàng) ai=i!(1)i+1pmq=i=1,2,,n算算m s+= ai n次
29、次for i=1 to np=1,輸入輸入x,n 輸出輸出s q=1,m= -1,s=1ximain( ) int i,m,n; p=1,q=1,m= - 1,s=1;for(i=1;i=n;i+) m= - m;q*=x;p*=i; ai=m*q/p; s+=ai; printf(“s=%.4f”,s); float x,p,q,s,ai; scanf(“%f,%d”,&x,&n);例例2 判斷一個(gè)數(shù)判斷一個(gè)數(shù)n是否是素?cái)?shù)。是否是素?cái)?shù)。只能被只能被1 1和它本身整除的數(shù)。和它本身整除的數(shù)。2,3,n-1之中的數(shù)都之中的數(shù)都不是不是n的因子的因子n 1,nn是素?cái)?shù)是素?cái)?shù)驗(yàn)證驗(yàn)證:輸入輸入n當(dāng)當(dāng)
30、j=k時(shí)時(shí)n%j!=0真真j+假假break j=2 k=sqrt(n)j=k+1真真yes假假no#include int n,j,k; while(j=k) if(n%j!=0) j+; else break; if(j=k+1) printf(“%d yes”,n); elseprintf(“%d no”,n); printf(“nInput n:”); scanf(“%d”,&n);sqrt(n) j=2,k=sqrt(n);j=k+1 break退出退出j=kyesnomain( ) 正常退出正常退出例例3 找出所有的水仙花數(shù)。找出所有的水仙花數(shù)。若若m是水仙花數(shù)是水仙花數(shù),那么那么
31、:(2) b:m的百位數(shù)的百位數(shù)(1) 是三位數(shù)是三位數(shù) s:m的十位數(shù)的十位數(shù) g:m的個(gè)位數(shù)的個(gè)位數(shù) m=b3+s3+g3 如何分解數(shù)如何分解數(shù)? 設(shè)設(shè) m =2 7 3 b= m/100 s= m/10-b*10 g= m%10 main( )int m,b,s,g;for(m=100;mmax真真max=afor i=2 to n讀入讀入n輸出輸出假假大數(shù)大數(shù)max大數(shù)大數(shù) max大數(shù)大數(shù) max讀數(shù)讀數(shù)比較比較main( ) int a,max,i,n;max=a;for(i=2;imax?a:max; printf(“max=%d”,max); printf(“nInput n,a
32、:”);scanf(“%d,%d”,&n,&a);#include “stdio.h”main( ) char c;while(c=getchar( )!=n)putchar(c);Its a holiday!例例5 讀程序?qū)戇\(yùn)行結(jié)果。讀程序?qū)戇\(yùn)行結(jié)果。#include “stdio.h”main( ) char c;while(c=getchar( )!=n) if(c=a&cZ&c=Z+2)c - =26; printf(“%c”,c); 例例6 讀程序?qū)戇\(yùn)行結(jié)果。讀程序?qū)戇\(yùn)行結(jié)果。aCbDxZyAzB小寫(xiě)字母變化,其他字符不變小寫(xiě)字母變化,其他字符不變C Y02+ABM例例7 輸入一行字
33、符,統(tǒng)計(jì)出其中英文字母、空格、其它字符輸入一行字符,統(tǒng)計(jì)出其中英文字母、空格、其它字符的個(gè)數(shù)。的個(gè)數(shù)。#include main( ) char c; int zm,kg,qt; zm=kg=qt=0; while(c=getchar( )!=n) if(c=a&c=A&c=Z)zm+;else if(c= )kg+;else qt+; printf(“zm=%d,kg=%d,qt=%d”,zm,kg,qt); 是具有一定順序的一組相同類(lèi)型是具有一定順序的一組相同類(lèi)型變量的集合體變量的集合體組成數(shù)組的變量稱(chēng)為該數(shù)組的元素組成數(shù)組的變量稱(chēng)為該數(shù)組的元素如如 數(shù)組數(shù)組a中有十個(gè)整型變量,中有十個(gè)整
34、型變量, 分別是:分別是:a0 ,a1,a2,a3 a9一維數(shù)組:一維數(shù)組:數(shù)組元素只有一個(gè)下標(biāo)數(shù)組元素只有一個(gè)下標(biāo)二維數(shù)組:二維數(shù)組:數(shù)組元素有兩個(gè)下標(biāo)數(shù)組元素有兩個(gè)下標(biāo) 例如:例如:b數(shù)組數(shù)組,實(shí)型實(shí)型, 12個(gè)變量個(gè)變量:b00,b01,b02, b03,b10,b23類(lèi)型說(shuō)明符類(lèi)型說(shuō)明符 數(shù)組名數(shù)組名常量常量 ;例如:例如: int a10;整型數(shù)組整型數(shù)組 名字為名字為a十個(gè)變量十個(gè)變量 a0 a1a9float b5=1,2,3,4,5;a0a1.a9數(shù)組數(shù)組ab0b1.b4數(shù)組數(shù)組b1.02.05.0 1 1 數(shù)組元素在數(shù)組元素在內(nèi)存中順次存放內(nèi)存中順次存放 2 2 數(shù)組元素的數(shù)
35、組元素的地址是連續(xù)的地址是連續(xù)的float b5=1;float b =1,2 ,3,4,5;b0b1b4數(shù)組數(shù)組b1.00.0.0.0例例1 將十個(gè)數(shù)據(jù)輸入到數(shù)組中,并按逆序輸出。將十個(gè)數(shù)據(jù)輸入到數(shù)組中,并按逆序輸出。main( ) int a10,i;for(i=0;i=0;i-)printf(“%5d”,ai); printf(“nResult:”);printf(“nInput data:”);ai i=09a0a1.a9數(shù)組數(shù)組a將數(shù)據(jù)輸入到各將數(shù)據(jù)輸入到各個(gè)數(shù)據(jù)元素中個(gè)數(shù)據(jù)元素中例例2 數(shù)組數(shù)組a有五個(gè)元素,其值分別為:有五個(gè)元素,其值分別為:1、2、3、4、5,移動(dòng)該,移動(dòng)該數(shù)組
36、的數(shù),使其變成數(shù)組的數(shù),使其變成2、3、4、5、1。a0a1a2a3a412345 m m=a0a1a0a2a1a3a2a4a3for i=1,4ai-1=ai a4= m 1a0mma4main( ) int a5=1,2,3,4,5;m=a0;for (i=1;i=4;i+)ai-1=ai;a4=m;int i,m;for(i=0;imax真真max=afor i=2 to n讀入讀入n輸出輸出假假給數(shù)組給數(shù)組a 賦值賦值aiaw真真for i=1 to n-1讀入讀入n 假假例例3 從從n個(gè)數(shù)中找出最大的數(shù),并與第一個(gè)數(shù)互換。個(gè)數(shù)中找出最大的數(shù),并與第一個(gè)數(shù)互換。關(guān)鍵:關(guān)鍵:w=0w=i
37、w!=0真真aw與與a0互換互換假假aw: 最大數(shù)最大數(shù)w:最大數(shù)的最大數(shù)的位置位置main( ) int a50,i,n,w; scanf(“%d”,&n); scanf(“%d”,&ai); for(i=0;in;i+) printf(“%2d”,ai); for(i=0;in;i+)w=0;1204W:120412041204找到最大的數(shù)及其所處的位置找到最大的數(shù)及其所處的位置 if(w!=0) i=a0;a0=aw;aw=i; for(i=1;iaw) w=i;例例4 將任意將任意n個(gè)數(shù)按降序排序。個(gè)數(shù)按降序排序。設(shè)第設(shè)第0個(gè)數(shù)最大個(gè)數(shù)最大,與第與第1n-1個(gè)數(shù)依次比較個(gè)數(shù)依次比較設(shè)第
38、設(shè)第1個(gè)數(shù)最大個(gè)數(shù)最大,與第與第2n-1個(gè)數(shù)依次比較個(gè)數(shù)依次比較設(shè)第設(shè)第2個(gè)數(shù)最大個(gè)數(shù)最大,與第與第3n-1個(gè)數(shù)依次比較個(gè)數(shù)依次比較設(shè)第設(shè)第n-2個(gè)數(shù)最大個(gè)數(shù)最大,與第與第n-1個(gè)數(shù)比較個(gè)數(shù)比較設(shè)第設(shè)第k個(gè)數(shù)最大個(gè)數(shù)最大, 與第與第k+1n-1個(gè)數(shù)依次比較個(gè)數(shù)依次比較 int a50,w,k,i,n;randomize( );for(i=0;in;i+)scanf(“%d”,&n);ai=random(100);for(k=0;k=n-2;k+) w=k;for(i=k+1;iaw)w=i; if(w!=k) i=ak,ak=aw,aw=i; for(k=0;k=n-1;k+) printf(
39、“%5d”,ak); #include #include main( )aiaw真真for i=1 to n-1 假假 w= 0w=iw!=0真真aw與與a0互換互換假假k:0n-2for k=0 to n-2共進(jìn)行共進(jìn)行k次找最大數(shù)次找最大數(shù)的操作的操作例例5 查找一個(gè)數(shù)是否在某數(shù)組中出現(xiàn)。查找一個(gè)數(shù)是否在某數(shù)組中出現(xiàn)。輸入輸入n,a,x flag=0flag:標(biāo)志:標(biāo)志1:查到:查到0:沒(méi)查到:沒(méi)查到 i=0 in & flag=0 x=ai真真flag=1假假i+main() int n,x,i,flag,a50; scanf(“%d,%d”,&n,%x); flag=0,i=0; wh
40、ile(iai真真break假假 向后移動(dòng)數(shù)據(jù)向后移動(dòng)數(shù)據(jù) 插入插入7數(shù)組數(shù)組aa0a1a2a3a4a5a6a7a81085210-1-7數(shù)組數(shù)組a插入前插入前插入后插入后輸入數(shù)據(jù)輸入數(shù)據(jù)找插入點(diǎn)找插入點(diǎn)插入數(shù)據(jù)插入數(shù)據(jù)輸出結(jié)果輸出結(jié)果4i位置:位置:a7 a8ai=x108510-1-72位置位置0 xa0?操作操作真真 插入點(diǎn)是插入點(diǎn)是01xa1? 真真 插入點(diǎn)是插入點(diǎn)是1ixai? 是是 插入點(diǎn)是插入點(diǎn)是i7xa7? 真真 插入點(diǎn)是插入點(diǎn)是7假假 插入點(diǎn)是插入點(diǎn)是8操作結(jié)果操作結(jié)果2a6 a7forj=7toist-1aj+1=aj4ajaj+1例例6 在一個(gè)降序排列的數(shù)列中插入一個(gè)數(shù),
41、使新數(shù)列保持原序。在一個(gè)降序排列的數(shù)列中插入一個(gè)數(shù),使新數(shù)列保持原序。main( ) int a9,i,j,x;scanf(“%d”,&x);for(i=0;iai) break;for(j=7;j=i;j- -)aj+1=aj;ai=x;for(i=0;i=8;i+)printf(“%3d”,ai); for(i=0;iai真真break假假forj=7toist-1aj+1=aj輸入數(shù)據(jù)輸入數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)類(lèi)型說(shuō)明符類(lèi)型說(shuō)明符 數(shù)組名數(shù)組名常量常量 常量常量 ;例如:例如: int a34;整型二維數(shù)組整型二維數(shù)組 名字為名字為aa00 a01a00數(shù)組數(shù)組a共共12個(gè)變量個(gè)變量 a0
42、2 a03 a10 a11 a12 a13 a20 a21 a22 a23是一個(gè)矩陣或一張表格是一個(gè)矩陣或一張表格第第0行行第第1行行第第2行行第第0列列 第第1列列 第第2列列 第第3列列a01a02a03a10a11a12a13a20a21a22a23 1 0 9 7 4 6 8 312 3 3 5二維數(shù)組二維數(shù)組a 3行行4列列a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a230行行0列列1列列 2列列 3列列1行行2行行main( ) int a34,i,j;輸入輸入aijfor j=0 to 3for i=0 to 2j=03i=02for
43、(i=0;i=2;i+)for(j=0;j=3;j+)scanf(“%d”,&aij);for(i=0;i=2;i+) for(j=0;j=3;j+) printf(“%3d”,aij); printf(“n”); a00數(shù)組數(shù)組aa01a02a03a10a11a12a13a20a21a22a231097 46 83 12 3 3 5 例例1 將一個(gè)將一個(gè)34矩陣輸入到數(shù)組中并按行輸出。矩陣輸入到數(shù)組中并按行輸出。例例3 從矩陣中找出這樣的元素,該元素在行上最大,列上最小。從矩陣中找出這樣的元素,該元素在行上最大,列上最小。16 15 4 2 101.找到該行的最大數(shù)找到該行的最大數(shù),記錄列號(hào)
44、記錄列號(hào)2.驗(yàn)證其在所處的列上是否是最小驗(yàn)證其在所處的列上是否是最小 for k=1 to 4 ai,pak,p真真t=00 4 2 3 65 6 7 9 8t=1真真aip yes假假假假假假找最大數(shù)的列號(hào)找最大數(shù)的列號(hào)驗(yàn)證列上是否最小驗(yàn)證列上是否最小for i=0 to 2第第i行最大數(shù)的列號(hào)行最大數(shù)的列號(hào)驗(yàn)證結(jié)果標(biāo)志驗(yàn)證結(jié)果標(biāo)志t=1yest=0no第第i i行的最大數(shù)行的最大數(shù)例例2 打印楊輝三角形。打印楊輝三角形。 第第1列元素為列元素為1 其他:其他:main( ) int yh2020,i,j,n;scanf(“%d”,&n);for(i=0;in;i+)for(j=1;ji;j
45、+)yhij=yhi-1j-1+yhi-1j; yhi0=1;yhii=1; 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1yhi0=1yhii=1for(i=0;in;i+) printf(“n”); for(j=0;j=i;j+) printf(“%5d”,yhij); 對(duì)角線元素為對(duì)角線元素為1yhij=yhi-1j-1+yhi-1j 1=1jimain( ) int a35,i,k,p,t;for(i=0;i3;i+)for(k=0;k5;k+)scanf(“%d”,&aik);for(i=0;i3;i+) printf(“n”);for(k=0;k5;k+) printf
46、(“%4d”,aik); for(i=0;i=2;i+) p=0; for(k=1;k=4;k+) if(aipaik)p=k; t=1; for(k=0;kakp)t=0;break; if(t) printf(“a%d%d=%d”,i,p,aip); for k=1 to 4 ai,pak,p真真t=0t=1真真aip yes假假假假假假for i=0 to 2例例4 打印魔方陣打印魔方陣.由由1n2構(gòu)成的矩陣構(gòu)成的矩陣816357492放數(shù)的原則放數(shù)的原則1 1放在第一行中間一列放在第一行中間一列2 第第 i*n+1個(gè)數(shù)個(gè)數(shù):放在第放在第i*n個(gè)數(shù)的下一行個(gè)數(shù)的下一行,同一列同一列3 其
47、他其他:行行-1 列列+1若行若行=0 行行=n若列若列=n+1 列列=1main( ) int a1111,i,h,l,n;scanf(“%d”,&n);h=1;l=n/2+1;ahl=1;for(i=2;i=n*n;i+) if(i%n=1) h+; else h-;l+; if(h=0)h=n; if(l=n+1)l=1; for(h=1;h=n;h+)for(l=1;l=n;l+) printf(“n”);printf(“%4d”,ahl); ahl=i; “8” “Boy”“ ”“ ”“8”8“thank you!”例例7 從下面的數(shù)據(jù)中分別找從下面的數(shù)據(jù)中分別找出字符串常量與字符常
48、數(shù)。出字符串常量與字符常數(shù)。1231 1 字符常量用單引號(hào)括起來(lái)字符常量用單引號(hào)括起來(lái)2 2 字符常量是單個(gè)字符字符常量是單個(gè)字符 字符串常量用雙引號(hào)括起來(lái)字符串常量用雙引號(hào)括起來(lái)字符串常量可有若干個(gè)字符字符串常量可有若干個(gè)字符3 3 字符串常量有結(jié)束符字符串常量有結(jié)束符“A”AA字符串結(jié)字符串結(jié)束標(biāo)志束標(biāo)志A例例8 改錯(cuò)改錯(cuò)main( ) char c;c=“yes”;printf(“%c”,c);char 數(shù)組名數(shù)組名常量常量;例例: char c10;c0 c1c9每個(gè)數(shù)組元素占一個(gè)字節(jié)每個(gè)數(shù)組元素占一個(gè)字節(jié)1 逐個(gè)數(shù)組元素賦初值逐個(gè)數(shù)組元素賦初值char c6=P,a,r,t,y,0;
49、Party02 應(yīng)用字符串常量賦初值應(yīng)用字符串常量賦初值char c6 =“party”;char c =P,a,r,t,y,0;char c = “party”;例例9 確定數(shù)組的值及長(zhǎng)度確定數(shù)組的值及長(zhǎng)度main( )char t1 =“student ”; char t2 =s,t,u,d,e,n,t ; t1 studentt2 student#include “stdio.h”for(i=0;si!=0;i+)printf(“%c”,si); char s20;int i; for(i=0;(si=getchar( )!=n;i+);main( )si=0; scanf(“%s” ,
50、 s ); printf(“%s”,s);例例10 寫(xiě)結(jié)果寫(xiě)結(jié)果main( ) char str20;scanf(“%s”,str); printf(“%s”,str); str0str19beistr0str19函數(shù)原型在函數(shù)原型在stdio.h中中例例11 寫(xiě)結(jié)果寫(xiě)結(jié)果main( ) char str20;gets(str); puts(str); bei#include “stdio.h”例例12 將兩個(gè)字符串首尾相接后輸出。將兩個(gè)字符串首尾相接后輸出。str1:str2:str1:H o wryHstr1str2l=0當(dāng)當(dāng)str1l!=0l+i=0當(dāng)當(dāng)str2i!=0str1l=str
51、2il+,i+strl=0#include main()char str140,str220;int i=0,l=0;while(str1l!=0)l+;while(str2i!=0)str1l+=str2i+;str1l=0;gets(str1);gets(str2);puts(str1); strcat字符串連接字符串連接strcpy函數(shù)原型在函數(shù)原型在 string.h中中字符串復(fù)制字符串復(fù)制strcmp字符串比較字符串比較strlen字符串長(zhǎng)度字符串長(zhǎng)度strlwr將字符串中的大寫(xiě)字符轉(zhuǎn)換為小寫(xiě)字符將字符串中的大寫(xiě)字符轉(zhuǎn)換為小寫(xiě)字符strupr將字符串中的小寫(xiě)字符轉(zhuǎn)換為大寫(xiě)字符將字符串
52、中的小寫(xiě)字符轉(zhuǎn)換為大寫(xiě)字符例例13 把輸入的字符串逆序排列,并打印出來(lái)。把輸入的字符串逆序排列,并打印出來(lái)。sw w wn c e p usl=strlen(s)b=0,e=l-1be當(dāng)當(dāng)be時(shí)時(shí)sb與與se互換互換#include #include main()char s40,c; int b,e,l; gets(s); l=strlen(s); b=0,e=l-1 while(by)z=x; int max(int,int); 例如:例如:return或或 int max(int x,int y)例例1 讀程序?qū)懡Y(jié)果讀程序?qū)懡Y(jié)果void ps( ) printf(“n*”); void
53、pm( ) printf(“nWelcome”); main( ) ps( ); pm( ); main( )ps( )ps( )pm( )結(jié)結(jié) 束束子函數(shù)作用:把復(fù)雜功能分解成若子函數(shù)作用:把復(fù)雜功能分解成若干簡(jiǎn)單功能,減少重復(fù)代碼的編寫(xiě)干簡(jiǎn)單功能,減少重復(fù)代碼的編寫(xiě)ps( ); 本章主要學(xué)習(xí)如何本章主要學(xué)習(xí)如何定義調(diào)用子函數(shù),定義調(diào)用子函數(shù),函數(shù)間數(shù)據(jù)的聯(lián)系函數(shù)間數(shù)據(jù)的聯(lián)系 int max(int x,int y) int z; if(xy) z=x; esle z=y; return( z); 函數(shù)返回值的類(lèi)型函數(shù)返回值的類(lèi)型無(wú)返回值的函數(shù),類(lèi)型為無(wú)返回值的函數(shù),類(lèi)型為void省略的函數(shù)
54、類(lèi)型為省略的函數(shù)類(lèi)型為int函數(shù)函數(shù)首部首部函數(shù)體函數(shù)體 定義函數(shù)參數(shù)定義函數(shù)參數(shù)每個(gè)參數(shù)都包含類(lèi)型說(shuō)明每個(gè)參數(shù)都包含類(lèi)型說(shuō)明稱(chēng)為形式參數(shù)稱(chēng)為形式參數(shù)以以開(kāi)場(chǎng),以開(kāi)場(chǎng),以終了終了void型函數(shù)沒(méi)有函數(shù)值型函數(shù)沒(méi)有函數(shù)值非非void型函數(shù),用型函數(shù),用return語(yǔ)句返回函數(shù)值語(yǔ)句返回函數(shù)值非非void型函數(shù),如果函數(shù)體中無(wú)型函數(shù),如果函數(shù)體中無(wú)return語(yǔ)句,則返回語(yǔ)句,則返回函數(shù)值為不確定的隨機(jī)數(shù)。函數(shù)值為不確定的隨機(jī)數(shù)。如果定義的函數(shù)值的類(lèi)型和如果定義的函數(shù)值的類(lèi)型和return語(yǔ)句中表達(dá)式的值語(yǔ)句中表達(dá)式的值的類(lèi)型不一致,則以函數(shù)值的類(lèi)型為準(zhǔn)。的類(lèi)型不一致,則以函數(shù)值的類(lèi)型為準(zhǔn)。例例2
55、 判斷函數(shù)值的類(lèi)型。判斷函數(shù)值的類(lèi)型。 max(int x,int y) int z; if(xy)z=x; esle z=y; return( z); max(float x,float y) float z; if(xy)z=x; else z=y; return (z); 定義的類(lèi)型:定義的類(lèi)型:整型整型表達(dá)式類(lèi)型:表達(dá)式類(lèi)型:整型整型函數(shù)值的類(lèi)型:函數(shù)值的類(lèi)型:整型整型整型整型實(shí)型實(shí)型 整型整型例例3 寫(xiě)一個(gè)求兩個(gè)實(shí)型數(shù)之和的寫(xiě)一個(gè)求兩個(gè)實(shí)型數(shù)之和的函數(shù)。函數(shù)。float sum(float a,float b) sum實(shí)型實(shí)型兩個(gè)兩個(gè) 實(shí)型實(shí)型 float s; s=a+b; ret
56、urn s; 例例4 寫(xiě)一個(gè)函數(shù),打印寫(xiě)一個(gè)函數(shù),打印“Hello”。dyvoid無(wú)無(wú)void dy( ) printf(“nHello”); 參數(shù)表中的參數(shù)稱(chēng)為實(shí)參參數(shù)表中的參數(shù)稱(chēng)為實(shí)參如:如:pow(x , max( a, b ) )函數(shù)有確定的返回值函數(shù)有確定的返回值main( ) int a=1,b=3,c; c=max(a,b); printf(“max=%d”,c); int max(int,int);main( ) ps( ); 函數(shù)無(wú)確定的返回值函數(shù)無(wú)確定的返回值或無(wú)返回值或無(wú)返回值 如:如:c= max( a, b );如:如:ps();實(shí)參個(gè)數(shù)和對(duì)應(yīng)形參個(gè)數(shù)相實(shí)參個(gè)數(shù)和對(duì)應(yīng)
57、形參個(gè)數(shù)相等。等。實(shí)參的類(lèi)型要和對(duì)應(yīng)形參的實(shí)參的類(lèi)型要和對(duì)應(yīng)形參的類(lèi)型一致。類(lèi)型一致。被調(diào)用函數(shù)無(wú)形參,實(shí)參表被調(diào)用函數(shù)無(wú)形參,實(shí)參表是空的,但括號(hào)不能省略。是空的,但括號(hào)不能省略。main( ) int a=1,b=3,c; c=max(a,b); printf(“max=%d”,c); int max(int,int);對(duì)被調(diào)函數(shù)的申明放在主調(diào)對(duì)被調(diào)函數(shù)的申明放在主調(diào)函數(shù)的說(shuō)明部分。函數(shù)的說(shuō)明部分。如果函數(shù)的返回值是整型或字符型,如果函數(shù)的返回值是整型或字符型,可以省略被調(diào)函數(shù)申明??梢允÷员徽{(diào)函數(shù)申明。如果被調(diào)函數(shù)在主調(diào)函數(shù)之前,可以如果被調(diào)函數(shù)在主調(diào)函數(shù)之前,可以省略被調(diào)函數(shù)申明。省略
58、被調(diào)函數(shù)申明。如果已在所有函數(shù)定義之前對(duì)被調(diào)函如果已在所有函數(shù)定義之前對(duì)被調(diào)函數(shù)進(jìn)行了申明,那么,在主調(diào)函數(shù)中數(shù)進(jìn)行了申明,那么,在主調(diào)函數(shù)中可以省略被調(diào)函數(shù)申明??梢允÷员徽{(diào)函數(shù)申明。 例例5 編寫(xiě)程序調(diào)用函數(shù)求兩個(gè)實(shí)數(shù)之和。編寫(xiě)程序調(diào)用函數(shù)求兩個(gè)實(shí)數(shù)之和。float sum(float a,float b) float s; s=a+b; return s; main( ) float x,y; scanf(“%f,%f”,&x,&y); printf(“sum=%f”,sum(x,y); sum實(shí)型實(shí)型兩個(gè)兩個(gè) 實(shí)型實(shí)型 main( ) float x,y; scanf(“%f,%f”,
59、&x,&y); printf(“sum=%f”,sum(x,y); float sum(float a,float b) float s; s=a+b; return s; void ps( ) printf(“n*”); void pm( ) void ps( );main( ) pm( ); printf(“nHow are you?”); main()pm()ps()終了終了主函數(shù)能調(diào)用子函數(shù)主函數(shù)能調(diào)用子函數(shù)子函數(shù)能調(diào)用子函數(shù)子函數(shù)能調(diào)用子函數(shù)子函數(shù)不能調(diào)用主函數(shù)子函數(shù)不能調(diào)用主函數(shù) 為形參和內(nèi)部變量分配單元為形參和內(nèi)部變量分配單元 實(shí)參和形參進(jìn)行參數(shù)傳遞形實(shí)參和形參進(jìn)行參數(shù)傳遞形參數(shù)
60、據(jù)類(lèi)型不同,傳遞的方式也不參數(shù)據(jù)類(lèi)型不同,傳遞的方式也不同。)同。) 執(zhí)行子函數(shù)執(zhí)行子函數(shù) 前往,形參釋放所前往,形參釋放所占用的單元占用的單元 被調(diào)用前不占用存儲(chǔ)單元被調(diào)用前不占用存儲(chǔ)單元被調(diào)用時(shí)分配存儲(chǔ)單元被調(diào)用時(shí)分配存儲(chǔ)單元返回時(shí)釋放存儲(chǔ)單元返回時(shí)釋放存儲(chǔ)單元 調(diào)用時(shí)的參數(shù)調(diào)用時(shí)的參數(shù)定義函數(shù)時(shí)指定的參數(shù)定義函數(shù)時(shí)指定的參數(shù)x例例6 寫(xiě)結(jié)果寫(xiě)結(jié)果 (1) 為為x、y、z分配單元分配單元 (2) 參數(shù)傳遞參數(shù)傳遞yz a x b y 1 3 (3) 執(zhí)行被調(diào)函數(shù)執(zhí)行被調(diào)函數(shù) 3 (4) 返返 回回 函數(shù)值帶回主調(diào)函數(shù)函數(shù)值帶回主調(diào)函數(shù) 變量釋放單元變量釋放單元abc 1 3 3main(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人支出月度計(jì)劃表
- 大健康產(chǎn)業(yè)創(chuàng)新發(fā)展模式研究與實(shí)踐
- 鋼平臺(tái)安全施工方案
- 跨部門(mén)協(xié)作事務(wù)處理指南與文書(shū)流程
- 汽車(chē)后市場(chǎng)智能化服務(wù)解決方案
- 三農(nóng)村電子商務(wù)發(fā)展模式研究方案
- 初級(jí)母嬰護(hù)理師考試復(fù)習(xí)測(cè)試卷
- 婦產(chǎn)科護(hù)理練習(xí)試題及答案(一)
- 法律實(shí)務(wù)案例解析知識(shí)題
- 城市綠化與生態(tài)保護(hù)方案
- 基于單片機(jī)的電子廣告牌設(shè)計(jì)
- 應(yīng)用PDCA管理工具提高病案歸檔率
- 果蔬自發(fā)氣調(diào)包裝原理與應(yīng)用演示文稿
- DB43T 2428-2022 水利工程管理與保護(hù)范圍劃定技術(shù)規(guī)范
- SB/T 11016-2013足部保健按摩服務(wù)規(guī)范
- GB/T 4062-2013三氧化二銻
- 神經(jīng)系統(tǒng)的結(jié)構(gòu)與神經(jīng)調(diào)節(jié)的基本方式 【知識(shí)精講+高效備課】 高考生物一輪復(fù)習(xí) (新教材)
- GB/T 15328-2019普通V帶疲勞試驗(yàn)方法無(wú)扭矩法
- 馬克思主義基本原理(完整版)
- 涉密人員脫密期管理制度
- 企業(yè)風(fēng)險(xiǎn)管理-戰(zhàn)略與績(jī)效整合(中文版)
評(píng)論
0/150
提交評(píng)論