版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢任務描述學生成績信息管理系統(tǒng)是一款高效、便捷的教育管理工具,其核心功能在于全面管理學生的成績信息。該系統(tǒng)允許教育工作者錄入、存儲每位學生的多科成績,并支持成績的增、刪、改、查、打印、排序功能,能夠幫助教師及時了解班級學生的學習狀況,便于學校管理層進行教學質(zhì)量評估和學生評優(yōu)評先工作,促進了教育管理的現(xiàn)代化與科學化。相比于順序?qū)崿F(xiàn)程序的全部功能,利用函數(shù)實現(xiàn)模塊化的程序設計更有利于程序的規(guī)范化,本章將帶領大家學習如何在C語言中使用函數(shù)實現(xiàn)模塊化編程,進而實現(xiàn)學生成績管理系統(tǒng)的基礎系統(tǒng)功能設計。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢知識儲備函數(shù)就像是一個個精心設計的工具箱,里面裝滿了解決特定任務所需的代碼片段。當我們需要執(zhí)行某個任務時,只需調(diào)用相應的函數(shù),就像從工具箱中取出所需的工具一樣,無需關心函數(shù)內(nèi)部是如何實現(xiàn)的,只需關注它能為我們完成什么。通過函數(shù),我們可以提高代碼的復用性,使得程序更加模塊化、易于理解和維護。簡而言之,函數(shù)是編程中一種強大的抽象機制,它讓我們的代碼更加高效、清晰和可重用。本章將學習C語言中函數(shù)相關知識。5.1 初識函數(shù)HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.1 初識函數(shù)1 #include<stdio.h>2 intmain(){3 intscores[3][3];//3組學生,每組3門成績
4 inti,j;5 floataverage;6 //從鍵盤獲取成績
7 printf("請輸入3組學生的成績(每組3門):\n");8 for(i=0;i<3;i++){9 for(j=0;j<3;j++){10 printf("學生%d的第%d門成績:",i+1,j+1);11 scanf("%d",&scores[i][j]);12 }13 }
14 //計算并輸出每個學生的平均成績
15 for(i=0;i<3;i++){16 average=0;17 for(j=0;j<3;j++){18 average+=scores[i][j];19 }20 average/=3;21 printf("學生%d的平均成績是:%.2f\n",i+1,average);22 }23 return0;24 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.1 初識函數(shù)1 #include<stdio.h>2 //函數(shù)聲明
3 voidreadScores(intscores[][3],intstudents,intsubjects);4 voidcal_Print_Average(intscores[][3],intstudents);5 intmain()6 {7 intscores[3][3];//3組學生,每組3門成績
8 //從鍵盤獲取成績
9 readScores(scores,3,3);10 //計算并輸出每個學生的平均成績
11 cal_Print_Average(scores,3);12 return0;13 }
14 //函數(shù)定義:讀取學生的成績
15 voidreadScores(intscores[][3],intstudents,intsubjects)16 {17 inti,j;18 printf("請輸入%d組學生的成績(每組%d門):\n",students,subjects);19 for(i=0;i<students;i++){20 for(j=0;j<subjects;j++){21 printf("學生%d的第%d門成績:",i+1,j+1);22 scanf("%d",&scores[i][j]);23 }24 }25 }函數(shù)定義HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.1 初識函數(shù)1 #include<stdio.h>2 //函數(shù)聲明
3 voidreadScores(intscores[][3],intstudents,intsubjects);4 voidcal_Print_Average(intscores[][3],intstudents);5 intmain()6 {7 intscores[3][3];//3組學生,每組3門成績
8 //從鍵盤獲取成績
9 readScores(scores,3,3);10 //計算并輸出每個學生的平均成績
11 cal_Print_Average(scores,3);12 return0;13 }
26 //函數(shù)定義:計算并打印學生的平均成績
27 voidcal_Print_Average(intscores[][3],intstudents)28 {29 inti,j;30 floataverage;31 for(i=0;i<students;i++){32 average=0;33 for(j=0;j<3;j++){//假設每組學生都有3門成績
34 average+=scores[i][j];35 }36 average/=3;37 printf("學生%d的平均成績是:%.2f\n",i+1,average);38 }39 }函數(shù)定義HTML5的優(yōu)勢5.1 初識函數(shù)C語言中的函數(shù)是完成特定任務或計算的一組獨立、可重用的代碼塊,每個C程序往往都包含一個main函數(shù)和若干個函數(shù)。一段程序從main函數(shù)開始執(zhí)行,main函數(shù)可以調(diào)用其他函數(shù),其他函數(shù)之前可以相互調(diào)用。使用函數(shù)來組織程序代碼確實帶來了許多優(yōu)勢,包括代碼重用、提高可讀性、易于維護以及降低復雜度等。代碼重用性模塊化可讀性可維護性易于測試支持團隊協(xié)作5.2 函數(shù)的定義HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢學習內(nèi)容5.2.1無參函數(shù)5.2.2有參函數(shù)5.2.1無參函數(shù)1HTML5的優(yōu)勢5.2.1無參函數(shù)顧名思義,無參函數(shù)既參數(shù)列表為空的函數(shù),它不接受任何參數(shù)。無參函數(shù)的定義和調(diào)用相對簡單,因為它們不涉及參數(shù)傳遞的復雜性。1 #include<stdio.h>2 //無參函數(shù)的定義
3 voidprintMessage(){4 printf("Hello,World!\n");5 }6 intmain(){7 //函數(shù)調(diào)用
8 printMessage();9 return0;10 }HTML5的優(yōu)勢5.2.1無參函數(shù)使用無參函數(shù)時需要注意:無參函數(shù)在定義時,參數(shù)列表必須為空,即使用一對空的圓括號()。調(diào)用無參函數(shù)時,也需要在函數(shù)名后加上一對圓括號,即使圓括號內(nèi)沒有參數(shù)。無參函數(shù)可以有返回值,也可以沒有(即返回類型為void)。如果無參函數(shù)有返回值,那么在函數(shù)體內(nèi)部需要使用return語句返回相應的值;若沒有返回值,return語句可以省略。HTML5的優(yōu)勢5.2.1無參函數(shù)C語言中也可以定義包含返回值的無參函數(shù)。1 #include<stdio.h>2 //有返回值的無參函數(shù)
3 intgetCount(){4 //假設這里有一個復雜的計算過程,但為了示例簡單,直接返回一個固定值
5 return42;6 }7 intmain(){8 intresult=getCount();//調(diào)用函數(shù)并接收返回值
9 printf("計算結(jié)果:%d\n",result);10 return0;11 }5.2.2有參函數(shù)2HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.2.2有參函數(shù)intadd(inta,intb){returna+b;}有參函數(shù)定義示例:有參函數(shù)的調(diào)用需要在函數(shù)名后加上一對圓括號,并在圓括號內(nèi)按照函數(shù)定義時指定的順序和類型提供參數(shù)。intmain(){intresult=add(5,3); //調(diào)用函數(shù)add,并傳入?yún)?shù)5和3printf("計算結(jié)果:%d\n",add); //輸出結(jié)果
return0;}參數(shù)列表5.2.2有參函數(shù)1 #include<stdio.h>2 //函數(shù)定義
3 intadd(inta,intb)4 {5 returna+b; //返回兩個整數(shù)的和
6 }7 intmain()8 {9 intresult;10 result=add(5,3); //調(diào)用函數(shù)add,并將返回值賦給變量result11 printf("計算結(jié)果:%d\n",result);//輸出結(jié)果
12 return0;13 }HTML5的優(yōu)勢5.2.2有參函數(shù)需要注意:在調(diào)用有參函數(shù)時,必須按照函數(shù)定義中指定的順序和類型提供參數(shù)。如果函數(shù)有多個參數(shù),它們之間用逗號分隔。調(diào)用函數(shù)時,實際提供的參數(shù)(也稱為實參)的類型和數(shù)量必須與函數(shù)定義中的形式參數(shù)(也稱為形參)相匹配。函數(shù)可以返回一個值給調(diào)用者,也可以不返回任何值(即返回類型為void)。如果函數(shù)有返回值,那么它應該使用return語句來返回該值。HTML5的優(yōu)勢5.2.2有參函數(shù)函數(shù)必須先定義(或至少先聲明)才能被調(diào)用。1 #include<stdio.h>2 //函數(shù)定義
3 intadd(inta,intb)4 {5 returna+b;//返回兩個整數(shù)的和
6 }7 intmain()8 {9 intresult;10 result=add(5,3); //調(diào)用函數(shù)add11 printf("計算結(jié)果:%d\n",result);//輸出結(jié)果
12 return0;13 }1 #include<stdio.h>2 //函數(shù)聲明
3 intadd(inta,intb);4 intmain()5 {6 intresult;7 result=add(5,3); //調(diào)用函數(shù)add8 printf("計算結(jié)果:%d\n",result);//輸出
9 return0;10 }11 //函數(shù)定義
12 intadd(inta,intb)13 {14 returna+b; //返回兩個整數(shù)的和
15 }5.3 函數(shù)的參數(shù)和返回值HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢學習內(nèi)容5.3.1函數(shù)的參數(shù)5.3.2函數(shù)的返回值5.3.1函數(shù)的參數(shù)1HTML5的優(yōu)勢5.3.1函數(shù)的參數(shù)1.形式參數(shù)(形參)形參的聲明在函數(shù)定義中進行,包括參數(shù)的類型和名稱。intadd(inta,intb){returna+b;}2.實際參數(shù)(實參)實際參數(shù)是調(diào)用函數(shù)時傳遞給函數(shù)的參數(shù)。intresult=add(5,3);HTML5的優(yōu)勢5.3.1函數(shù)的參數(shù)注意:形參和實參在函數(shù)調(diào)用時發(fā)生數(shù)據(jù)傳遞,但它們是獨立的變量。對形參的修改不會影響到實參(除非通過指針或引用傳遞)。在C語言中,函數(shù)參數(shù)的傳遞默認是按值傳遞的。這意味著如果實參是變量,那么傳遞的是變量的值的一個副本給形參,而不是變量的地址。如果需要函數(shù)能夠修改實參的值,那么可以使用指針作為參數(shù)。這樣,函數(shù)就可以通過指針來訪問和修改實參所指向的內(nèi)存位置。將在后續(xù)章節(jié)介紹如何通過指針訪問和修改參數(shù)。5.3.2函數(shù)的返回值2HTML5的優(yōu)勢5.3.2函數(shù)的返回值1.定義和使用函數(shù)的返回值在C語言中,函數(shù)的返回值是指函數(shù)執(zhí)行后所返回給調(diào)用者的結(jié)果。這個返回值可以是任意數(shù)據(jù)類型,包括但不限于整數(shù)(int)、字符(char)、浮點數(shù)(float或double)、指針等。函數(shù)的返回值是函數(shù)調(diào)用結(jié)束后返回給調(diào)用者的一個特殊值,類似于一個輸出參數(shù)。voidfunc1(){ ... [return;] //返回值為空,此行代碼可省略}intfunc2(){ ... returnint型值或表達式; //返回值為int型}HTML5的優(yōu)勢5.3.2函數(shù)的返回值1.定義和使用函數(shù)的返回值在C語言中,函數(shù)的返回值是指函數(shù)執(zhí)行后所返回給調(diào)用者的結(jié)果。這個返回值可以是任意數(shù)據(jù)類型,包括但不限于整數(shù)(int)、字符(char)、浮點數(shù)(float或double)、指針等。函數(shù)的返回值是函數(shù)調(diào)用結(jié)束后返回給調(diào)用者的一個特殊值,類似于一個輸出參數(shù)。floatfunc3(){ ... returnfloat型值或表達式; //返回值為float型}charfunc4(){ ... returnchar型值或表達式; //返回值為cahr型}HTML5的優(yōu)勢5.3.2函數(shù)的返回值2.返回值的具體使用在函數(shù)調(diào)用時,可以將函數(shù)的返回值賦值給變量。這時,變量的類型必須與函數(shù)返回值的類型相匹配。例如以上定義的函數(shù)func1~func4,使用其返回值,inta=func2();floatb=func3();charc=func4();函數(shù)的返回值也可以作為表達式的一部分,進行進一步的計算或操作。intsum1=func2()+5;floatsum2=fumc3()+8.2;HTML5的優(yōu)勢5.3.2函數(shù)的返回值使用返回值時需要注意:返回值的類型匹配:函數(shù)的返回值類型必須與函數(shù)聲明的返回值類型一致。局部變量的地址:函數(shù)不應該返回指向局部變量的指針或地址,因為局部變量在函數(shù)執(zhí)行完畢后會被銷毀,返回的地址將指向無效的內(nèi)存區(qū)域。多個返回值:C語言標準不支持函數(shù)直接返回多個值。如果需要返回多個值,可以通過結(jié)構(gòu)體、指針參數(shù)或全局變量等方式實現(xiàn)。void函數(shù):如果函數(shù)不需要返回值,可以將其聲明為void類型。此時,return語句后面不需要跟任何表達式,或者可以省略return語句(但出于良好的編程習慣,建議在void函數(shù)的末尾顯式地寫出return;語句)。5.4 函數(shù)的調(diào)用HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢學習內(nèi)容5.4.1函數(shù)的嵌套調(diào)用5.4.2函數(shù)的遞歸調(diào)用5.4.1函數(shù)的嵌套調(diào)用1HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用如同俄羅斯套娃一般,一個函數(shù)在執(zhí)行過程中可以調(diào)用另一個函數(shù),而被調(diào)用的函數(shù)又可以繼續(xù)調(diào)用其他函數(shù),如此層層嵌套,直至完成所有任務。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用C語言中常見的函數(shù)嵌套調(diào)用有在main函數(shù)中調(diào)用一般函數(shù)(即非main函數(shù));在一般函數(shù)中嵌套調(diào)用其他一般函數(shù)。1.main函數(shù)嵌套一般函數(shù)假設我們正在編寫一個程序,該程序需要計算并輸出一個整數(shù)數(shù)組中所有元素的總和以及平均值。這個任務可以自然地分解成兩個子任務:(1)任務1:計算總和。(2)任務2:根據(jù)總和計算數(shù)組長度計算平均值。這兩個子任務可以分別由兩個函數(shù)來實現(xiàn),然后在主函數(shù)中通過嵌套調(diào)用來完成整個任務。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用1 #include<stdio.h>2 //函數(shù)聲明
3 intsumArray(intarr[],intsize);4 doubleaverage(intsum,intsize);5 intmain(){6 intnumbers[]={1,2,3,4,5};7 intsize=sizeof(numbers)/sizeof(numbers[0]);8 //嵌套調(diào)用函數(shù)
9 inttotalSum=sumArray(numbers,size);10 doubleavg=average(totalSum,size);11 //輸出結(jié)果
12 printf("總和:%d\n",totalSum);13 printf("平均值:%.2f\n",avg);14 return0;15 }
16 //計算數(shù)組總和的函數(shù)
17 intsumArray(intarr[],intsize){18 intsum=0,i;19 for(i=0;i<size;i++){20 sum+=arr[i];21 }22 returnsum;23 }
24 //計算平均值的函數(shù)
25 doubleaverage(intsum,intsize){26 if(size==0){27 //避免除以零的錯誤
28 return0.0;29 }30 return(double)sum/size;31 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用1 #include<stdio.h>2 //函數(shù)聲明
3 intsumArray(intarr[],intsize);4 doubleaverage(intsum,intsize);5 intmain(){6 intnumbers[]={1,2,3,4,5};7 intsize=sizeof(numbers)/sizeof(numbers[0]);8 //嵌套調(diào)用函數(shù)
9 inttotalSum=sumArray(numbers,size);10 doubleavg=average(totalSum,size);11 //輸出結(jié)果
12 printf("總和:%d\n",totalSum);13 printf("平均值:%.2f\n",avg);14 return0;15 }
16 //計算數(shù)組總和的函數(shù)
17 intsumArray(intarr[],intsize){18 intsum=0,i;19 for(i=0;i<size;i++){20 sum+=arr[i];21 }22 returnsum;23 }
24 //計算平均值的函數(shù)
25 doubleaverage(intsum,intsize){26 if(size==0){27 //避免除以零的錯誤
28 return0.0;29 }30 return(double)sum/size;31 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用1 #include<stdio.h>2 //函數(shù)聲明
3 intsumArray(intarr[],intsize);4 doubleaverage(intsum,intsize);5 intmain(){6 intnumbers[]={1,2,3,4,5};7 intsize=sizeof(numbers)/sizeof(numbers[0]);8 //嵌套調(diào)用函數(shù)
9 inttotalSum=sumArray(numbers,size);10 doubleavg=average(totalSum,size);11 //輸出結(jié)果
12 printf("總和:%d\n",totalSum);13 printf("平均值:%.2f\n",avg);14 return0;15 }
16 //計算數(shù)組總和的函數(shù)
17 intsumArray(intarr[],intsize){18 intsum=0,i;19 for(i=0;i<size;i++){20 sum+=arr[i];21 }22 returnsum;23 }
24 //計算平均值的函數(shù)
25 doubleaverage(intsum,intsize){26 if(size==0){27 //避免除以零的錯誤
28 return0.0;29 }30 return(double)sum/size;31 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用2.一般函數(shù)嵌套假設需要編寫程序,計算某班級學生平均分,此任務可以分解為兩個子任務:(1)任務1:計算全班學生總成績。(2)任務2:計算班級學生平均分。這兩個子任務可以分別通過函數(shù)實現(xiàn),并且在求平均分的函數(shù)中調(diào)用求總成績的函數(shù)。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用
17 //計算總分的函數(shù)
18 intcalcTSco(intscores[],intnumStudents)19 {20 inttotal=0,i;21 for(i=0;i<numStudents;i++){22 total+=scores[i];23 }24 returntotal;25 }
26 //計算平均分的函數(shù)
27 doublecalcASco(inttotalScore,intnumStudents)28 {29 if(numStudents==0){30 //避免除以零的錯誤
31 return0.0;32 }33 return(double)totalScore/numStudents;34 }1 #include<stdio.h>2 //函數(shù)聲明
3 intcalcTSco(intscores[],intnumStudents);4 doublecalcASco(inttotalScore,intnumStudents);5 intmain()6 {7 //假設這是某個班級學生的成績數(shù)組
8 intscores[]={85,92,78,88,95};9 intnumStudents=sizeof(scores)/sizeof(scores[0]);10 //嵌套調(diào)用函數(shù)來計算總分和平均分
11 doubleaverageScore=calcASco(12 calcTSco(scores,numStudents),numStudents);13 //輸出結(jié)果
14 printf("平均分:%.2f\n",averageScore);15 return0;16 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用
17 //計算總分的函數(shù)
18 intcalcTSco(intscores[],intnumStudents)19 {20 inttotal=0,i;21 for(i=0;i<numStudents;i++){22 total+=scores[i];23 }24 returntotal;25 }
26 //計算平均分的函數(shù)
27 doublecalcASco(inttotalScore,intnumStudents)28 {29 if(numStudents==0){30 //避免除以零的錯誤
31 return0.0;32 }33 return(double)totalScore/numStudents;34 }1 #include<stdio.h>2 //函數(shù)聲明
3 intcalcTSco(intscores[],intnumStudents);4 doublecalcASco(inttotalScore,intnumStudents);5 intmain()6 {7 //假設這是某個班級學生的成績數(shù)組
8 intscores[]={85,92,78,88,95};9 intnumStudents=sizeof(scores)/sizeof(scores[0]);10 //嵌套調(diào)用函數(shù)來計算總分和平均分
11 doubleaverageScore=calcASco(12 calcTSco(scores,numStudents),numStudents);13 //輸出結(jié)果
14 printf("平均分:%.2f\n",averageScore);15 return0;16 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.1函數(shù)的嵌套調(diào)用
17 //計算總分的函數(shù)
18 intcalcTSco(intscores[],intnumStudents)19 {20 inttotal=0,i;21 for(i=0;i<numStudents;i++){22 total+=scores[i];23 }24 returntotal;25 }
26 //計算平均分的函數(shù)
27 doublecalcASco(inttotalScore,intnumStudents)28 {29 if(numStudents==0){30 //避免除以零的錯誤
31 return0.0;32 }33 return(double)totalScore/numStudents;34 }1 #include<stdio.h>2 //函數(shù)聲明
3 intcalcTSco(intscores[],intnumStudents);4 doublecalcASco(inttotalScore,intnumStudents);5 intmain()6 {7 //假設這是某個班級學生的成績數(shù)組
8 intscores[]={85,92,78,88,95};9 intnumStudents=sizeof(scores)/sizeof(scores[0]);10 //嵌套調(diào)用函數(shù)來計算總分和平均分
11 doubleaverageScore=calcASco(12 calcTSco(scores,numStudents),numStudents);13 //輸出結(jié)果
14 printf("平均分:%.2f\n",averageScore);15 return0;16 }5.4.2函數(shù)的遞歸調(diào)用2HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用遞歸調(diào)用是一種更為精妙且強大的函數(shù)調(diào)用方式。它允許一個函數(shù)在其執(zhí)行過程中直接或間接地調(diào)用自身。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1.階乘求解階乘(Factorial)是所有小于及等于該數(shù)的正整數(shù)的積,并且0的階乘為1。通常,我們用符號n!來表示正整數(shù)n的階乘。階乘的定義可以遞歸地給出,也可以通過公式直接給出。對于非負整數(shù)n,階乘n!遞歸地定義為:(1)如果n=0,則n!=1。(2)如果n>0,則n!=n*(n-1)!。這個定義意味著n的階乘是n乘以n-1的階乘,直到0的階乘為止,而0!被定義為1。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 //遞歸函數(shù)聲明
3 longfactorial(intn);4 intmain()5 {6 intnumber;7 printf("輸入一個整數(shù):");8 scanf("%d",&number);9 if(number<0){10 printf("負數(shù)的階乘不存在.\n");11 }else{12 printf("%d!=%ld\n",number,factorial(number));13 }14 return0;15 }
16 //遞歸函數(shù)定義
17 longfactorial(intn)18 {19 if(n==0){20 //遞歸結(jié)束條件
21 return1;22 }else{23 //遞歸調(diào)用自身
24 returnn*factorial(n-1);25 }26 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 //遞歸函數(shù)聲明
3 longfactorial(intn);4 intmain()5 {6 intnumber;7 printf("輸入一個整數(shù):");8 scanf("%d",&number);9 if(number<0){10 printf("負數(shù)的階乘不存在.\n");11 }else{12 printf("%d!=%ld\n",number,factorial(number));13 }14 return0;15 }
16 //遞歸函數(shù)定義
17 longfactorial(intn)18 {19 if(n==0){20 //遞歸結(jié)束條件
21 return1;22 }else{23 //遞歸調(diào)用自身
24 returnn*factorial(n-1);25 }26 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用2.漢諾塔問題求解漢諾塔問題最早由法國數(shù)學家愛德華·盧卡斯(EdouardLucas)于19世紀提出,但據(jù)傳其靈感來源于古印度的一個古老傳說。在印度的賈爾邁瓦王宮中,有一座金剛塔,塔內(nèi)有三根金剛柱,在一根柱子上共有64個由大到小依次套在一起的圓盤。根據(jù)古老傳說,僧侶們需要將這些金盤從一根針上搬運到另一根針上,并按照原來的順序疊放,這就是著名的漢諾塔問題。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用對于漢諾塔問題,具體步驟如下:(1)將A柱上的n-1個圓盤通過C柱移到B柱。(2)將A柱上剩下的最大圓盤直接移到C柱。(3)將B柱上的n-1個圓盤通過A柱移到C柱。這個過程可以看作是一個遞歸的過程,即不斷地將大問題分解為更小的子問題,直到問題簡化為只需直接移動一個圓盤的情況。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 voidhanoi(intn,charfrom,charto,chartemp);3 intmain()4 {5 intn;//假設有n個圓盤
6 printf("請輸入圓盤數(shù)量:");7 scanf("%d",&n);8 hanoi(n,'A','C','B');
9 return0;10 }11 voidhanoi(intn,charfrom,charto,chartemp)12 {13 if(n==1){14 printf("從%c柱移動圓盤1到%c柱\n",from,to);15 return;16 }17 hanoi(n-1,from,temp,to);//將n-1個圓盤從from移到temp18 //將第n個圓盤從from移到to19 printf("從%c柱移動圓盤%d到%c柱\n",from,n,to);20 hanoi(n-1,temp,to,from);//將n-1個圓盤從temp移到to21 }A為起始柱,C為目標柱,B為輔助柱HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 voidhanoi(intn,charfrom,charto,chartemp);3 intmain()4 {5 intn;//假設有n個圓盤
6 printf("請輸入圓盤數(shù)量:");7 scanf("%d",&n);8 hanoi(n,'A','C','B');
9 return0;10 }11 voidhanoi(intn,charfrom,charto,chartemp)12 {13 if(n==1){14 printf("從%c柱移動圓盤1到%c柱\n",from,to);15 return;16 }17 hanoi(n-1,from,temp,to);//將n-1個圓盤從from移到temp18 //將第n個圓盤從from移到to19 printf("從%c柱移動圓盤%d到%c柱\n",from,n,to);20 hanoi(n-1,temp,to,from);//將n-1個圓盤從temp移到to21 }A為起始柱,C為目標柱,B為輔助柱程序從main函數(shù)開始執(zhí)行,main首先提示用戶輸入圓盤的數(shù)量n,并讀取這個值;然后調(diào)用hanoi函數(shù),指定起始柱子為'A',目標柱子為'C',輔助柱子為'B’。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 voidhanoi(intn,charfrom,charto,chartemp);3 intmain()4 {5 intn;//假設有n個圓盤
6 printf("請輸入圓盤數(shù)量:");7 scanf("%d",&n);8 hanoi(n,'A','C','B');
9 return0;10 }11 voidhanoi(intn,charfrom,charto,chartemp)12 {13 if(n==1){14 printf("從%c柱移動圓盤1到%c柱\n",from,to);15 return;16 }17 hanoi(n-1,from,temp,to);//將n-1個圓盤從from移到temp18 //將第n個圓盤從from移到to19 printf("從%c柱移動圓盤%d到%c柱\n",from,n,to);20 hanoi(n-1,temp,to,from);//將n-1個圓盤從temp移到to21 }A為起始柱,C為目標柱,B為輔助柱hanoi函數(shù)通過遞歸求解漢諾塔問題,它接受四個參數(shù):圓盤的數(shù)量n,起始柱子from,目標柱子to,以及輔助柱子temp。當輸入的圓盤數(shù)量n為1時,直接將這個圓盤從起始柱子from移動到目標柱子to,函數(shù)結(jié)束;否則進入遞歸:HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 voidhanoi(intn,charfrom,charto,chartemp);3 intmain()4 {5 intn;//假設有n個圓盤
6 printf("請輸入圓盤數(shù)量:");7 scanf("%d",&n);8 hanoi(n,'A','C','B');
9 return0;10 }11 voidhanoi(intn,charfrom,charto,chartemp)12 {13 if(n==1){14 printf("從%c柱移動圓盤1到%c柱\n",from,to);15 return;16 }17 hanoi(n-1,from,temp,to);//將n-1個圓盤從from移到temp18 //將第n個圓盤從from移到to19 printf("從%c柱移動圓盤%d到%c柱\n",from,n,to);20 hanoi(n-1,temp,to,from);//將n-1個圓盤從temp移到to21 }A為起始柱,C為目標柱,B為輔助柱(1)首先,將n-1個圓盤從起始柱子from通過目標柱子to移動到輔助柱子temp。注意這里的遞歸調(diào)用,它利用了目標柱子to作為中間步驟的一部分,因為n-1個圓盤不能直接從from移動到temp而不違反規(guī)則。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 voidhanoi(intn,charfrom,charto,chartemp);3 intmain()4 {5 intn;//假設有n個圓盤
6 printf("請輸入圓盤數(shù)量:");7 scanf("%d",&n);8 hanoi(n,'A','C','B');
9 return0;10 }11 voidhanoi(intn,charfrom,charto,chartemp)12 {13 if(n==1){14 printf("從%c柱移動圓盤1到%c柱\n",from,to);15 return;16 }17 hanoi(n-1,from,temp,to);//將n-1個圓盤從from移到temp18 //將第n個圓盤從from移到to19 printf("從%c柱移動圓盤%d到%c柱\n",from,n,to);20 hanoi(n-1,temp,to,from);//將n-1個圓盤從temp移到to21 }A為起始柱,C為目標柱,B為輔助柱(2)然后,將剩下的第n個(也就是最大的)圓盤從起始柱子from直接移動到目標柱子to。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 voidhanoi(intn,charfrom,charto,chartemp);3 intmain()4 {5 intn;//假設有n個圓盤
6 printf("請輸入圓盤數(shù)量:");7 scanf("%d",&n);8 hanoi(n,'A','C','B');
9 return0;10 }11 voidhanoi(intn,charfrom,charto,chartemp)12 {13 if(n==1){14 printf("從%c柱移動圓盤1到%c柱\n",from,to);15 return;16 }17 hanoi(n-1,from,temp,to);//將n-1個圓盤從from移到temp18 //將第n個圓盤從from移到to19 printf("從%c柱移動圓盤%d到%c柱\n",from,n,to);20 hanoi(n-1,temp,to,from);//將n-1個圓盤從temp移到to21 }A為起始柱,C為目標柱,B為輔助柱(3)最后,將先前移動到輔助柱子temp的n-1個圓盤通過起始柱子from移動到目標柱子to。這里的第二個遞歸調(diào)用再次利用了起始柱子from作為中間步驟的一部分。HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.4.2函數(shù)的遞歸調(diào)用1 #include<stdio.h>2 voidhanoi(intn,charfrom,charto,chartemp);3 intmain()4 {5 intn;//假設有n個圓盤
6 printf("請輸入圓盤數(shù)量:");7 scanf("%d",&n);8 hanoi(n,'A','C','B');
9 return0;10 }11 voidhanoi(intn,charfrom,charto,chartemp)12 {13 if(n==1){14 printf("從%c柱移動圓盤1到%c柱\n",from,to);15 return;16 }17 hanoi(n-1,from,temp,to);//將n-1個圓盤從from移到temp18 //將第n個圓盤從from移到to19 printf("從%c柱移動圓盤%d到%c柱\n",from,n,to);20 hanoi(n-1,temp,to,from);//將n-1個圓盤從temp移到to21 }A為起始柱,C為目標柱,B為輔助柱5.5 變量的作用域HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢學習內(nèi)容5.5.1局部變量5.5.2全局變量5.5.1局部變量1HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.5.1局部變量1 #include<stdio.h>2 //聲明函數(shù),該函數(shù)使用局部變量
3 voidprintSquare(intnumber);4 intmain()5 {6 //main函數(shù)中的變量是另一個作用域
7 inta=5;8 //調(diào)用函數(shù),并傳遞變量a作為參數(shù)
9 printSquare(a);10 //嘗試訪問square變量會導致編譯錯誤,因為它在printSquare函數(shù)的作用域內(nèi)
11 //printf("%d\n",square);//這行代碼是錯誤的,因為square在這里不可見
12 return0;13 }
14 //定義一個函數(shù),該函數(shù)使用局部變量
15 voidprintSquare(intnumber)16 {17 //定義一個局部變量來存儲平方結(jié)果
18 intsquare=number*number;19 //使用printf函數(shù)打印結(jié)果
20 printf("%d的平方是%d\n",number,square);21 //square變量的作用域在這里結(jié)束,當函數(shù)返回時,它會被銷毀
22 }HTML5的優(yōu)勢
解決了跨瀏覽器的問題
新增多個新特性
(語義化標簽、多媒體標簽、canvas元素、本地存儲等)
用戶優(yōu)先原則
化繁為簡的優(yōu)勢5.5.1局部變量1 #include<stdio.h>2 //聲明函數(shù),該函數(shù)使用局部變量
3 voidprintSquare(intnumber);4 intmain()5 {6 //main函數(shù)中的變量是另一個作用域
7 inta=5;8 //調(diào)用函數(shù),并傳遞變量a作為參數(shù)
9 printSquare(a);10 //嘗試訪問square變量會導致編譯錯誤,因為它在printSquare函數(shù)的作用域內(nèi)
11 //printf("%d\n",square);//這行代碼是錯誤的,因為square在這里不可見
12 return0;13 }
14 //定義一個函數(shù),該函數(shù)使用局部變量
15 voidprintSquare(intnumber)16 {17 //定義一個局部變量來存儲平方結(jié)果
18 intsquare=number*number;19 //
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地質(zhì)調(diào)查員安全防護考核試卷含答案
- 鋰鹽田工安全文化能力考核試卷含答案
- 鋼琴共鳴盤制作工崗前溝通協(xié)調(diào)考核試卷含答案
- 電動工具定轉(zhuǎn)子制造工崗前技術(shù)水平考核試卷含答案
- 環(huán)境地質(zhì)調(diào)查員安全素養(yǎng)模擬考核試卷含答案
- 藥物制劑工操作能力模擬考核試卷含答案
- 2025年云南現(xiàn)代職業(yè)技術(shù)學院單招(計算機)測試備考題庫附答案
- 2024年阜陽幼兒師范高等??茖W校輔導員招聘考試真題匯編附答案
- 2024年那坡縣選聘縣直事業(yè)單位工作人員真題匯編附答案
- 2024年重慶工信職業(yè)學院輔導員招聘備考題庫附答案
- 醫(yī)療衛(wèi)生機構(gòu)6S常態(tài)化管理打分表
- 幾種常用潛流人工濕地剖面圖
- vpap iv st說明總體操作界面
- 2023人事年度工作計劃七篇
- LY/T 1692-2007轉(zhuǎn)基因森林植物及其產(chǎn)品安全性評價技術(shù)規(guī)程
- GB/T 20145-2006燈和燈系統(tǒng)的光生物安全性
- 長興中學提前招生試卷
- 安全事故案例-圖片課件
- 螺紋的基礎知識
- 蜂窩煤成型機課程設計說明書
- 生物統(tǒng)計學(課堂PPT)
評論
0/150
提交評論