資源描述:
《存儲類型宏定義數(shù)組.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第9講變量的存儲類型帶參數(shù)的宏定義數(shù)組請大家及時消化我課上講的內(nèi)容,并舉一反三,模仿未講過的例題多寫程序。如果說學(xué)習(xí)C語言有捷徑的話:那就是多讀程序,多寫程序作業(yè)答案-15.6doubleS(floatx,intn){if(n==1)returnx;elsereturnS(x,n-1)+x*x;}將#include改為windows.h將clrscr();改為system(“CLS”);clrscr()是TC中的清屏函數(shù),VC中沒有,但VC中一般不需要。2習(xí)題5.12問題的關(guān)鍵是如何將n的問題化解為n-1的問題(即反方向求解問題)。根據(jù)分析,寫出如下的
2、數(shù)學(xué)函數(shù):doubleS(floatx,intn){if(n==1)returnx;elsereturnS(x,n-1)+pow(x,n);}3#include#includedoubleS(floatx,intn);voidmain(){doublex,s;intn;printf(“pleaseinputx,n:”);scanf(“%lf,%d”,&x,&n);s=S(x,n);printf(“S(%lf,%d)=%lf”,x,n,s);}doubleS(doublex,intn){if(n==1)returnx;elseret
3、urnS(x,n-1)+pow(x,n);/*遞歸要通過函數(shù)的依次調(diào)用實現(xiàn)*/}習(xí)題5.12程序#include#includedoubleS(floatx,intn);voidmain(){doublex,s;intn;printf(“pleaseinputx,n:”);scanf(“%lf,%d”,&x,&n);s=S(x,n);printf(“S(%lf,%d)=%lf”,x,n,s);}doubleS(doublex,intn)/*用遞推求解*/{doublesum=0;inti;for(i=1;i<=n;i++)/*遞推
4、要用循環(huán)語句實現(xiàn)*/sum+=pow(x,i);returnsum;}切忌:將遞歸函數(shù)的內(nèi)容寫至主函數(shù)中;將遞歸中的語句放至循環(huán)中;在遞歸函數(shù)中寫s(x,n)=S(x,n-1)+pow(x,n);4另一個具有“記憶性”的變量類型:靜態(tài)變量(static)一般的內(nèi)部變量在函數(shù)退出后失效,再次進入函數(shù),變量值重新初始化靜態(tài)變量在變量類型前面用static修飾staticinti;變量存在靜態(tài)存儲區(qū),當(dāng)函數(shù)結(jié)束時,內(nèi)存空間不被釋放,因此,變量的值可以保存到下次進入函數(shù),即變量具有記憶功能5涉及的語法-變量的存儲類型編譯器為變量分配內(nèi)存的方式它決定變量的生存期程序存儲區(qū)靜態(tài)存儲區(qū)動態(tài)
5、存儲區(qū)形參、自動變量、函數(shù)調(diào)用的現(xiàn)場等全局變量、靜態(tài)變量動態(tài)存儲根據(jù)需要臨時分配存儲空間,離開即釋放靜態(tài)存儲在程序運行期間分配固定的存儲空間不釋放內(nèi)存分配6例-靜態(tài)變量#includevoidFunc(void);main(){inti;for(i=0;i<10;i++){Func();}}/*函數(shù)功能:打印被調(diào)用的次數(shù)函數(shù)入口參數(shù):無函數(shù)返回值:無*/voidFunc(void){staticinttimes=1;/*靜態(tài)局部變量函數(shù)結(jié)束時times變量仍然占據(jù)靜態(tài)存儲區(qū)的存儲空間,不釋放*/printf("Func()wascalled%dtime(s)
6、.",times++);}Func()wascalled1time(s).Func()wascalled2time(s).Func()wascalled3time(s).Func()wascalled4time(s).Func()wascalled5time(s).Func()wascalled6time(s).Func()wascalled7time(s).Func()wascalled8time(s).Func()wascalled9time(s).Func()wascalled10time(s).1times23107例-非靜態(tài)變量#include
7、voidFunc(void);main(){inti;for(i=0;i<10;i++){Func();}}/*函數(shù)功能:打印被調(diào)用的次數(shù)函數(shù)入口參數(shù):無函數(shù)返回值:無*/voidFunc(void){inttimes=1;printf("Func()wascalled%dtime(s).",times++);}Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s)