




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
高級語言程序設(shè)計(一)
(CProgramming)第二講:C程序設(shè)計基礎(chǔ)(二)高級語言程序設(shè)計(一)
(CProgramming)第二講本章目標掌握函數(shù)的定義及調(diào)用方式掌握函數(shù)參數(shù)傳遞方式掌握switch多路選擇掌握一維數(shù)組的定義和使用;掌握簡單的文件輸入/輸出本章目標掌握函數(shù)的定義及調(diào)用方式模塊化程序設(shè)計將復雜問題分解為簡單問題的程序設(shè)計方法稱為結(jié)構(gòu)化程序設(shè)計,其特點為:自頂向下(top-downdesign);逐步細化(stepwiserefinement);模塊化(modularprogramming);模塊化的好處:功能分解的需要;代碼重用;模塊化程序設(shè)計將復雜問題分解為簡單問題的程序設(shè)計方法稱為結(jié)構(gòu)#include<stdio.h>main(){ doubleradius,area,perimeter; scanf(“%lf”,&radius); area=3.1415929*radius*radius; perimeter=2*radius*3.1415926; printf(“%6.2f%6.2f”,area,perimeter);}C程序設(shè)計基礎(chǔ)4常量定義所有常量可以用#define來定義,即可以給一個常量命名。如:#definePI3.1415926使用常量定義的好處:可提高程序的可讀性程序的可移植性更好,可維護性更好#include<stdio.h>#definePI3.1415926main(){ doubleradius,area,perimeter; scanf(“%lf”,&radius); area=PI*radius*radius; perimeter=2*radius*PI; printf(“Perimeter=%6.2f”,,perimeter);}實驗#include<stdio.h>C程序設(shè)計基礎(chǔ)4常量定義C程序設(shè)計基礎(chǔ)5常量定義(續(xù))在ANSIC中,類型修飾符:const----其變量值在程序執(zhí)行中不可以通過賦值等方法對它進行修改(是定義常量的另一種方法,用#define定義的常量無類型,而用const定義的常量有類型)。如:constfloatPI=3.14159;#include<stdio.h>constfloatPI=3.14159;main(){ doubleradius,area,perimeter; scanf(“%lf”,&radius); area=PI*radius*radius; perimeter=2*radius*PI; printf(“Perimeter=%6.2f”,perimeter);}C程序設(shè)計基礎(chǔ)5常量定義(續(xù))在ANSIC中,類型修飾符:#include<stdio.h>main(){ inta,b,sum; scanf(“%d+%d”,&a,&b); sum=a+b; printf(“Sum=%d\n”,sum);}tmainmainmainscanfprintf標準輸入/輸出庫函數(shù)#include<stdio.h>tmainmainma標準(庫)函數(shù)標準I/O庫函數(shù)#include<stdio.h>(scanf,printf,getchar,putchar…)標準數(shù)學函數(shù)#include
<math.h>(sin,cos,sqrt…)…標準(庫)函數(shù)標準I/O庫函數(shù)問題2.1問題:已知一組三角形的三邊(如(2.0,2.0,2.0)、(3.0,4.0,5.0)、(2.5,3.1,3.8)),計算其面積。計算三角形面積的公式為:#include<stdio.h>#include<math.h>main(){ doubles; s=(2.0+2.0+2.0)/2; printf(“%f\n”,sqrt(s*(s-2.0)*(s-2.0)*(s-2.0))); s=(3.0+4.0+5.0)/2; printf(“%f\n”,sqrt(s*(s-3.0)*(s-4.0)*(s-5.0))); s=(2.5+3.1+3.8)/2; printf(“%f\n”,sqrt(s*(s-2.5)*(s-3.1)*(s-3.8)));}對于這樣的有規(guī)律的重復計算,可以用更好的方法:函數(shù)來解決doublesqrt(doublex)為標準數(shù)學庫中函數(shù),使用前應加上#include<math.h>問題2.1問題:已知一組三角形的三邊(如(2.0,2.0定義求三角形面積函數(shù)tri_area()doublea,doubleb,doublecdouble{
}
函數(shù)名需要傳遞給函數(shù)的數(shù)據(jù)(參數(shù)):數(shù)據(jù)類型、數(shù)據(jù)名稱函數(shù)計算結(jié)果(返回)類型
double函數(shù)是如何對數(shù)據(jù)進行計算(函數(shù)體)doublea,doubleb,doublectri_area定義求三角形面積函數(shù)tri_area(tri_area函數(shù)定義
doubletri_area(doublea,doubleb,doublec){doubles,area;
s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));returnarea;}函數(shù)定義頭部,其中double為函數(shù)類型tri_area為函數(shù)名a,b,c為函數(shù)參數(shù)函數(shù)體局部變量函數(shù)返回(return)語句,返回計算結(jié)果tri_area函數(shù)定義
doubletri_area(d函數(shù)定義在ANSIC標準中,函數(shù)定義形式為:類型函數(shù)名(參數(shù)說明){[局部變量定義或說明]
語句}0個、一個或多個參數(shù),多個參數(shù)以逗號,分隔稱為形參,格式:數(shù)據(jù)類型參數(shù)名函數(shù)定義在ANSIC標準中,函數(shù)定義形式為:0個、一個或多函數(shù)定義(續(xù))函數(shù)名一般是標識符,一個程序只有一個main函數(shù),其它函數(shù)名可隨意取,當然最好是有助于記憶的名字。局部變量定義或說明可有可無,在ANSIC標準中,局部變量定義或說明應放在函數(shù)體的最前面。在ANSIC標準中,函數(shù)(返回值)類型不允許省略,即使是返回整型值(int),當函數(shù)無返回值時,應其類型說明為void類型。若需要返回值:return表達式;若不需要返回值:return;或者沒有return語句函數(shù)定義(續(xù))函數(shù)名一般是標識符,一個程序只有一個main函函數(shù)定義(續(xù))*在C語言中,函數(shù)不能嵌套定義。如,下面定義在C語言中是不充許的:f(){g(){…}…}函數(shù)定義(續(xù))*在C語言中,函數(shù)不能嵌套定義。問題2.1:代碼實現(xiàn)#include<stdio.h>#include<math.h>doubletri_area(doublea,doubleb,doublec){doubles,area;
s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));return(area);}intmain(){doublearea;area=tri_area(2.0,2.0,2.0);printf(“%f\n”,area); area=tri_area(3.0,4.0,5.0);printf(“%f\n”,area); area=tri_area(2.5,3.1,3.8);printf(“%f\n”,area);return0;}函數(shù)調(diào)用實驗或者:intmain(){printf(“%f\n”,tri_area(2.0,2.0,2.0));printf(“%f\n”,tri_area(3.0,4.0,5.0));printf(“%f\n”,tri_area(2.5,3.1,3.8));return0;}問題2.1:代碼實現(xiàn)#include<stdio.h>函數(shù)函數(shù)調(diào)用函數(shù)調(diào)用形式:函數(shù)名([實參表])其中實參個數(shù)、類型、排列次序應和形參定義時一致。函數(shù)通過return語句將值返回給調(diào)用函數(shù)。它有兩種使用形式:1)returnexpr;2)return;注意:使用return語句只能返回一個值。函數(shù)調(diào)用可以作為單獨語句,也可以出現(xiàn)在表達式中函數(shù)調(diào)用函數(shù)調(diào)用形式:函數(shù)名([實參表])函數(shù)調(diào)用可以作函數(shù)定義與調(diào)用(續(xù))*注意:當一個函數(shù)帶有返回值時,應保證函數(shù)每個可能執(zhí)行路徑上應有返回值。如下面將大寫字母轉(zhuǎn)換為小寫字母函數(shù):chartoLower(charc){if(c>=‘A’&&c<=‘Z’)/*error!*/returnc+‘a(chǎn)’–‘A’;}正確寫法:chartoLower(charc){if(c>=‘A’&&c<=‘Z’)returnc+‘a(chǎn)’–‘A’;returnc;}函數(shù)定義與調(diào)用(續(xù))*注意:當一個函數(shù)帶有返回值時,應保證函問題2.1:代碼實現(xiàn)#include<stdio.h>#include<math.h>intmain(){
printf(“%f\n”,tri_area(2.0,2.0,2.0)); printf(“%f\n”,tri_area(3.0,4.0,5.0)); printf(“%f\n”,tri_area(2.5,3.1,3.8)); return0;}doubletri_area(doublea,doubleb,doublec){doubles,area;s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));return(area);}doubletri_area(doublea,doubleb,doublec);函數(shù)原型實驗問題2.1:代碼實現(xiàn)#include<stdio.h>do函數(shù)原型說明(prototype):在ANSIC標準中,所有函數(shù)調(diào)用之前必須要有函數(shù)定義或原型說明,函數(shù)原型用以說明函數(shù)的返回值類型、函數(shù)參數(shù)類型、個數(shù)及次序。函數(shù)原型說明有兩種形式:直接使用函數(shù)的頭部(函數(shù)頭部后加分號)。如,doubletri_area(doublea,doubleb,doublec);在原型說明中僅給出類型、個數(shù)及次序,無形參變量名。如,doubletri_area(double,double,double);
注意:函數(shù)原型說明的類型、參數(shù)類型、個數(shù)及次序必須與函數(shù)定義時一致,否則會產(chǎn)生錯誤。函數(shù)原型說明(prototype):在ANSIC標準中,所函數(shù)參數(shù)voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}int
main(){inta=2,b=3;swap(a,b);return0;}請問a和b是否交換?不能!調(diào)用swap后調(diào)用swap(a,b)如何通過函數(shù)調(diào)用改變參數(shù)的值將在后續(xù)章節(jié)中介紹。拷貝:傳值調(diào)用23ab23xy32xy實驗函數(shù)參數(shù)voidswap(intx,inty)請函數(shù)參數(shù)(續(xù))注意:C函數(shù)的參數(shù)傳遞全部采用傳值。傳值調(diào)用實際上重新拷貝了一個副本給形參。傳值的好處是傳值調(diào)用不會改變調(diào)用函數(shù)實參變量的內(nèi)容,因此,可避免不必要的副作用。函數(shù)參數(shù)(續(xù))注意:C函數(shù)的參數(shù)傳遞全部采用傳值。傳值調(diào)用實問題2.2:求素數(shù)讀入一個整數(shù),求該整數(shù)范圍內(nèi)的所有素數(shù)。解題步驟:讀入一個整數(shù)到n;for(m=2;m<=n;i++)if(m是素數(shù))輸出m;可定義一個函數(shù)intisprime(intn)來判斷一個整數(shù)是否為素數(shù),若是返回1,否則返回0。問題2.2:求素數(shù)讀入一個整數(shù),求該整數(shù)范圍內(nèi)的所有素數(shù)??蓡栴}2.2:代碼實現(xiàn)intisprime(intn){intm;if(n<=1)return0;for(m=2;m*m<=n;m++)if(n%m==0)/*存在因子,不是素數(shù)*/
return0;return1;}主函數(shù)#include<stdio.h>intisprime(intn);intmain(){intn,m;scanf(“%d”,&n);for(m=2;m<=n;m++)if(isprime(m))printf(“%d“,m);return0;}實驗問題2.2:代碼實現(xiàn)intisprime(intn)主函局部變量局部變量(localvariable),又稱自動變量:在函數(shù)(或塊結(jié)構(gòu))中定義的變量。使用范圍:只在定義它的函數(shù)或塊結(jié)構(gòu)內(nèi)有效。定義時可加auto關(guān)鍵字,也可省略:autointindex; 等同于: intindex;編譯程序不對局部(自動)變量給予隱含的初值,故其初值不確定。因此,每次使用前,必須明確地置初值。局部(自動)變量隨函數(shù)的調(diào)用而存在,函數(shù)返回后將消失,由一次調(diào)用到下一次調(diào)用之間不保持值,每次調(diào)用函數(shù)時都重新初始化。形參是自動變量,使用范圍僅限于相應函數(shù)內(nèi)。局部變量局部變量(localvariable),又稱自動變計算x的冪:#include<stdio.h>doublepower(doublex,intn);intmain(){intn,m,i;doublef;scanf(“%d”,&m);for(i=0;i<m;i++){scanf(“%lf%d”,&f,&n);printf(“%f\n”,power(f,n));}return0;}
doublepower(doublex,intn){ doublef; f=1; while(n>0) { f=f*x;
n--; } return(f);}doublef;doublef;f=1;實驗計算x的冪:doublepower(doublex,i如何劃分函數(shù)程序中可能有重復出現(xiàn)的相同或相似的計算片段,可以考慮從中抽取出共同的東西,定義為函數(shù)。這樣可以縮短程序代碼,提高程序的可讀性和易修改性。程序中具有邏輯獨立的片段定義為函數(shù)。這樣做主要用于分解程序的復雜性。如何劃分函數(shù)程序中可能有重復出現(xiàn)的相同或相似的計算片段,可以#include<stdio.h>doublepower(doublex,intn){inti;doublep;p=1;for(i=1;i<=n;++i)p=p*x;return(p);}intmain(){floatx;scanf(“%f”,&x);printf(“Xpower2=%f\n”,power(x,2));printf(“Xpower3=%f\n”,power(x,3));printf(“Xpower4=%f\n”,power(x,4));return0;}
#include<stdio.h>voidprintPower(doublex,intn){inti;doublep;
p=1;for(i=1;i<=n;++i)p=p*x;printf(“Xpower%d=%f\n”,n,p);}intmain(){floatx;scanf(“%f”,&x);
printPower(x,2);printPower(x,3);printPower(x,4);return0;}
實驗#include<stdio.h>#include<st27問題2.3:簡易計算器【問題描述】
編程實現(xiàn)簡單的交互式計算器,能進行整數(shù)的+-*/運算?!据斎胄问健繌逆I盤讀入如下形式的輸入行,數(shù)據(jù)與運算符之間可以用一個空格分隔:
120350+ 52/【輸出形式】若是/運算,
小數(shù)點后保留兩位有效數(shù)字4702.50 27問題2.3:簡易計算器【問題描述】28問題2.3:問題分析如何讀入數(shù)據(jù)及運算符? intdata1,data2; charop; scanf(“%d%d%c”,&data1,&data2,&op);28問題2.3:問題分析如何讀入數(shù)據(jù)及運算符?29問題2.3:算法設(shè)計intdata1,data2,result1;floatresult2;charop;從標準輸入中讀入整數(shù)data1,整數(shù)data2及運算符op判斷op:若為‘+’,則result1=data1+data2;若為‘-’,則result1=data1-data2;若為‘*’,則result1=data1*data2;若為‘/’,則result2=data1/data2;若op為‘+’,‘-’或’*’,輸出結(jié)果result1;若op為‘/’,輸出結(jié)果result2;op值加運算‘+’減運算乘運算除運算‘-’‘*’‘/’多路選擇注意:由于data1和data2為整數(shù),結(jié)果仍為整數(shù)。要用強制類型轉(zhuǎn)換才能得到小數(shù)位。result2=(float)data1/data2;多路選擇,可使用if-elseif語句實現(xiàn)。在此,更適合switch語句。29問題2.3:算法設(shè)計intdata1,data2,r第三講:程序設(shè)計方法-問題分析30多路選擇:switch語句基本形式:switch(表達式){case常量表達式1:語句1或空;case常量表達式2:語句2或空;…case常量表達式n:語句n或空;default:語句n+1或空;}語義動作為:先計算表達式的值;該值與每一個case后的常量進行比較;若匹配,則控制就轉(zhuǎn)向該常量后的語句;若不匹配,若有default,則轉(zhuǎn)向default后的語句,否則什么也不做;S1S2SnSn+1EC1C2…Cndefault因此,switch語句特別適合于依據(jù)一組常量值來進行判斷的多路選擇。第三講:程序設(shè)計方法-問題分析30多路選擇:switch語句第三講:程序設(shè)計方法-問題分析31多路選擇:switch語句(續(xù))注意:常量表達式必須是整型(if_elseif可能根據(jù)任意條件來進行多路選擇);在同一個switch中不應出現(xiàn)兩個具有同樣的常量;default語句如果有,只允許出現(xiàn)一次,default可出現(xiàn)在switch中的任何位置,通常放在最后;case和default本身不改變控制流(這與pascal中的case語句不同),中斷離開switch要用break;case后的語句可以是單個語句,也可以是復合語句(但不帶開頭和結(jié)尾的花括號)第三講:程序設(shè)計方法-問題分析31多路選擇:switch語句32#include<stdio.h>intmain(){ intdata1,data2,result1; floatresult2; charop; scanf(“%d%d%c”,&data1,&data2,&op); switch(op){ case'+':result1=data1+data2; case'-':result1=data1-data2; case'*':result1=data1*data2; case'/':result2=(float)data1/data2; default: printf("Inputerror!\n"); } if(op==‘+’||op==‘-’||op==‘*’) printf("%d“,result1); elseif(op==‘/’) printf(“%.2f\n“,result2); return0;}測試數(shù)據(jù):120350+1212-352*32/break;break;break;break;break;32測試數(shù)據(jù):break;break;break;break33問題2.3:常見問題在switch中遺漏break#include<stdio.h>intmain(){ intdata1,data2,result1;floatresult2; charop; scanf(“%d%c%d”,&data1,&op,&data2); switch(op){ case'+':result1=data1+data2;break; case'-':result1=data1-data2;break; case'*':result1=data1*data2;break; case'/':result2=(float)data1/data2;break; default: printf("Inputerror!\n");break; } if(op==‘+’||op==‘-’||op==‘*’) printf("%d%c%d=%d\n“,data1,op,data2,result1); elseif(op==‘/’) printf("%d%c%d=%.2f\n“,data1,op,data2,result2); return0;}測試數(shù)據(jù)為:120+350結(jié)果為:120+350=-230Why?33問題2.3:常見問題在switch中遺漏break測試數(shù)問題2.4問題:“在一行上輸入10個整數(shù),在下一行上反序輸出”。輸入樣例:233245556778910467323輸出樣例:233467109786754552332問題2.4問題:“在一行上輸入10個整數(shù),在下一行上反序輸問題2.4:問題分析首先遇到的問題是如何保存輸入的數(shù)據(jù)?以目前所學的知識,我們可以設(shè)置10個變量來存儲輸入如:intdata1,data2,…,data10;這樣做的缺點:程序處理數(shù)據(jù)非常煩瑣,如我們必須依次讀入每個數(shù)據(jù)(不能用循環(huán));程序不具擴展性,如果我們要處理100個、1000個甚至更多的數(shù)據(jù),怎么辦?如何存儲類型相同并且緊密相關(guān)的一組數(shù)據(jù)?使用數(shù)組問題2.4:問題分析首先遇到的問題是如何保存輸入的數(shù)據(jù)?使用數(shù)組的定義與初始化數(shù)組是變量的有序集合,數(shù)組的所有成員(數(shù)組元素)都具有相同的數(shù)據(jù)類型。數(shù)組定義一般采用如下格式:類型數(shù)組名[長度]; --長度為常量表達式
數(shù)組的定義與初始化數(shù)組是變量的有序集合,數(shù)組的所有成員(數(shù)組數(shù)組的定義與初始化(續(xù))例如: inta[50]; a[0]~a[49]…a[0]a[1]數(shù)組元素的下標是從0開始,即數(shù)組中第一個元素的下標為0數(shù)組的定義與初始化(續(xù))例如:…a[0]a[1]數(shù)組元數(shù)組的定義與初始化(續(xù))注意:C語言不支持動態(tài)數(shù)組,即數(shù)組的長度必須在編譯時確定下來,而不是在運行中根據(jù)需要臨時決定。但C語言提供了動態(tài)分配存貯函數(shù),利用它可實現(xiàn)動態(tài)申請空間。intlength;scanf(“%d”,&length);doubles[length];長度必須是常量表達式實驗數(shù)組的定義與初始化(續(xù))注意:C語言不支持動態(tài)數(shù)組,即數(shù)組的數(shù)組的定義與初始化(續(xù))數(shù)組初始化:可以在定義時初始化一個數(shù)組。下面是一些數(shù)組初始化實例:doublesales[5]={12.25,32.50,16.90,23,45.68};doublesales[]={12.25,32.50,16.90,23,45.68};intlist[5]={6,5,12};相當于:intlist[5]={6,5,12,0,0}以實際元素的個數(shù)決定數(shù)組的大小實驗數(shù)組的定義與初始化(續(xù))數(shù)組初始化:可以在定義時初始化一個數(shù)charstring[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘\0’}charstring[10]=“hello”;charstring[]=“hello”;注意:用字符串常量初始化一個字符數(shù)組時,其長度應至少比字符個數(shù)多1。數(shù)組的定義與初始化(續(xù))hlel\0o0124359實驗數(shù)組的定義與初始化(續(xù))hlel\0o0124359實驗數(shù)組元素的訪問初始化數(shù)組intarray[10],i;for(i=0;i<10;i++)
array[i]=1;讀入數(shù)組元素intarray[10],i;for(i=0;i<10;i++)scanf(“%d”,&array[i]);注意:不要將循環(huán)條件寫為i<=10。這是初學者常犯的錯誤。如果一個數(shù)組的長度為N,則遍歷數(shù)組的循環(huán)常寫為:for(i=0;i<N;i++)或for(i=0;i<=N-1;i++)編譯器不提供數(shù)組下標越界檢查,下標越界時可以通過編譯,但運行時會出錯格式:數(shù)組名[下標]實驗數(shù)組元素的訪問初始化數(shù)組注意:不要將循環(huán)條件寫為i<=10。數(shù)組元素的訪問(續(xù))求數(shù)組中最大元素maxIndex=0;/*maxIndex記錄最大元素的下標*/for(i=0;i<N;i++)if(array[maxIndex]<array[i])maxIndex=i;maxElement=array[maxIndex];實驗或者:maxElement=array[0];for(i=1;i<N;i++)if(maxElement<array[i])maxElement=array[i];數(shù)組元素的訪問(續(xù))求數(shù)組中最大元素實驗或者:數(shù)組處理的限制在C中不允許對數(shù)組進行整體操作。下面用法是錯誤的:intx[10],y[10];scanf(“%d”,x);y=x;if(x==y)…y={1,2,3,4,5};比較數(shù)組正確做法是:for(i=0;i<10;i++)if(x[i]!=y[i])…正確做法是:for(i=0;i<10;i++)scanf(“%d”,&x[i]);正確做法是:for(i=0;i<10;i++)y[i]=x[i];復制數(shù)組只能在定義數(shù)組時整體初始化,不能整體賦值。實驗數(shù)組處理的限制在C中不允許對數(shù)組進行整體操作。下面用法是錯誤問題2.4問題:“在一行上輸入10個整數(shù),在下一行上反序輸出”。輸入樣例:233245556778910467323輸出樣例:233467109786754552332問題2.4問題:“在一行上輸入10個整數(shù),在下一行上反序輸問題2.4:解題步驟1、定義保存數(shù)據(jù)的數(shù)組data[10]和下標變量index;2、index設(shè)為數(shù)組第一個元素的下標;3、Whileindex小于10 3.1、讀入數(shù)據(jù)并保存到下標為index的數(shù)組元素中;
3.2、index增1;4、index設(shè)為最后一個元素的下標;5、Whileindex大于等于0 5.1、打印下標為index的數(shù)組元素;
5.2、index減1;問題2.4:解題步驟1、定義保存數(shù)據(jù)的數(shù)組data[10]和問題2.4程序?qū)崿F(xiàn):#include<stdio.h>intmain(){ intdata[10]; intindex; for(index=0;index<10;index++) scanf("%d",&data[index]); printf("\n"); for(index=9;index>=0;index--) printf("%d",data[index]); return0;}實驗問題2.4程序?qū)崿F(xiàn):#include<stdio.h>實問題2.5問題:統(tǒng)計輸入中每個數(shù)字字符的出現(xiàn)次數(shù)分析:方法一:顯然可以使用10個int型變量來分別存儲每個數(shù)字字符的出現(xiàn)次數(shù)。然后在程序中,使用if_elseif來分別統(tǒng)計每個數(shù)字字符的出現(xiàn)次數(shù)。(該方法太笨拙)問題2.5問題:統(tǒng)計輸入中每個數(shù)字字符的出現(xiàn)次數(shù)問題2.5:分析(續(xù))方法二可以使用數(shù)組來存儲每個數(shù)字字符的出現(xiàn)次數(shù)。如:intdigit[10];如何將輸入的數(shù)字字符與相應數(shù)組下標對應?表達式:
c–‘0’可將數(shù)字字符c轉(zhuǎn)換為相應整數(shù)。因此,下面語句可統(tǒng)計每個數(shù)字字符的出現(xiàn)次數(shù):
digit[c-‘0’]++;
問題2.5:分析(續(xù))方法二問題2.5:代碼實現(xiàn)#include<stdio.h>intmain(){inti,c,digit[10]={0,0,0,0,0,0,0,0,0,0};while((c=getchar())!=EOF)if(c>=‘0’&&c<=‘9’)digit[c-‘0’]++;for(i=0;i<10;i++)printf(“Numberof%d:%d\n”,i,digit[i]);return0;}如何將打印整數(shù)數(shù)組封裝成一個函數(shù)?實驗問題2.5:代碼實現(xiàn)#include<stdio.h>如例:打印整數(shù)數(shù)組函數(shù)voidprint(inta[10]){ inti; for(i=0;i<10;i++) printf(“%d\n”,a[i]);}voidprint(inta[],intlength){ inti; for(i=0;i<length;i++) printf(“%d\n”,a[i]);}數(shù)組長度一般作為單獨參數(shù)傳遞給函數(shù)注意:1、數(shù)組長度一般不寫在一維數(shù)組形參內(nèi),因為編譯器不作檢查。2、該函數(shù)不能打印任意長度的整數(shù)數(shù)組。例:打印整數(shù)數(shù)組函數(shù)voidprint(inta[10]intmain(){inti,c,digit[10]={0,0,0,0,0,0,0,0,0,0};while((c=getchar())!=EOF)if(c>=‘0’&&c<=‘9’)digit[c-‘0’]++;
print(digit,10);
return0;}數(shù)組作為實參,只寫數(shù)組名,千萬不要寫成digit[10]#include<stdio.h>voidprint(inta[],intlength){ inti; for(i=0;i<length;i++) printf(“%d\n”,a[i]);}能否將統(tǒng)計功能也封裝成函數(shù)呢?實驗intmain()數(shù)組作為實參,只寫數(shù)組名,千萬不要寫成dvoidcount(inta[]){ intc; while((c=getchar())!=EOF) if(c>=‘0’&&c<=‘9’) a[c-‘0’]++;}intmain(){ intdigit[10]={0};
count(digit);
print(digit,10);
return0;}例:統(tǒng)計數(shù)字出現(xiàn)次數(shù)函數(shù)數(shù)組中的值能傳遞回來嗎?01……9digita實驗voidcount(inta[])例:統(tǒng)計數(shù)字出數(shù)組作為函數(shù)參數(shù)數(shù)組可以作為參數(shù)傳遞給函數(shù)。實際上傳遞的是數(shù)組的首地址(即數(shù)組第一個元素的地址,將在指針部分說明),我們可以這樣理解數(shù)組作為參數(shù)傳遞:形參數(shù)組與實參數(shù)組是一對共享同一數(shù)據(jù)區(qū)的數(shù)組,即它們是同一個數(shù)組,而不是對實參數(shù)組的拷貝。數(shù)組作為參數(shù)時,函數(shù)的定義形式:voidfun(intarray[],intsize){…}數(shù)組作為參數(shù)時,函數(shù)的調(diào)用形式:main(){inta[10];….fun(a,10);….}注意:定義數(shù)組形參時,數(shù)組長度可省略,同時,還應在形參中指定數(shù)組元素個數(shù)。注意:函數(shù)調(diào)用時,用數(shù)組名作實參。數(shù)組作為函數(shù)參數(shù)數(shù)組可以作為參數(shù)傳遞給函數(shù)。實際上傳遞的是數(shù)字符數(shù)組數(shù)組元素的類型是char。charmes[]=“CLanguage”;charline[100]=“Programming”;字符數(shù)組有如下特點:數(shù)組元素跟一般變量一樣可賦值、比較、計算等。數(shù)組下標也是從0~N-1(N為數(shù)組長度)。字符數(shù)組長度可以顯式給出,也可以隱式得到。由雙引號括起來的的字符串常量具有靜態(tài)字符串數(shù)組類型。對數(shù)組初始化時,編譯程序以\0作為結(jié)束符添加到字符串最后。因此,數(shù)組長度要比字符串長度多1。字符數(shù)組數(shù)組元素的類型是char。問題2.6:將數(shù)字字符串轉(zhuǎn)換成整數(shù)n=0whiles[i]為數(shù)字字符
n=10*n+s[i]–‘0’;“123”‘1’-‘0’=11*10+‘2’-‘0’=1212*10+‘3’-‘0’=123方法分析問題2.6:將數(shù)字字符串轉(zhuǎn)換成整數(shù)n=0“123”‘1’問題2.6:代碼實現(xiàn)intatoi(chars[]){inti,n,sign;for(i=0;s[i]==‘‘||s[i]==‘\n’||s[i]==‘\t’;i++); /*skipwhitespace*/sign=1;if(s[i]==‘+’||s[i]==‘-‘)sign=(s[i++]==‘+’)?1:-1;for(n=0;s[i]>=‘0’&&s[i]<=‘9’;i++)n=10*n+s[i]–‘0’;return(sign*n);}字符數(shù)組??照Z句條件運算符:
<表達式1>?<表達式2>:<表達式3>先計算表達式1,若其值為非零,則整個表達式結(jié)果為表達式2的值,否則就為表達式3的值。#include<stdio.h>intatoi(chars[]);main(){chars[20];scanf(“%s”,s);printf(“%d\n”,atoi(s));}實驗問題2.6:代碼實現(xiàn)intatoi(chars[])字問題2.7:將字符串顛倒“…………”方法分析交換問題2.7:將字符串顛倒“…………”方法分析交換問題2.7:代碼實現(xiàn)voidreverse(chars[]){intc,i,j;for(i=0,j=str_len(s)-1;i<j;i++,j--){c=s[i];s[i]=s[j];s[j]=c;}}
intstr_len(chars[]){inti=0;while(s[i]!=‘\0’)++i;return(i);}#include<stdio.h>intreverse(chars[]);intstr_len(chars[]);main(){chars[20];scanf(“%s”,s);
reverse(s);printf(“%s\n”,s);}當有多個循環(huán)變量時,要用逗號隔開。逗號表達式:如e1,e2順序求e1和e2,以e2值作為整個表達式結(jié)果的值。如,a=(t=3,t+2);結(jié)果為5字符數(shù)組作為函數(shù)參數(shù)傳遞時,不需要同時傳遞數(shù)組長度。因為字符數(shù)組中字符串是以’\0’結(jié)束的。實驗問題2.7:代碼實現(xiàn)voidreverse(chars問題2.8:將文件in.txt拷貝至新文件out.txt中。問題分析:
如何讀取、保存文件內(nèi)容?將標準輸入拷貝到標準輸出非常簡單:#include<stdio.h>intmain(){intc;while((c=getchar())!=EOF)putchar(c);return0;}問題2.8:將文件in.txt拷貝至新文件out.txt中。文件文件操作文件操作基本過程打開文件讀寫文件關(guān)閉文件首先在程序文件的頭部應有如下語句:#include<stdio.h>stream(流,讀寫通道)程序結(jié)束前應該關(guān)閉文件!程序文件文件文件操作文件操作基本過程打開文件讀寫文件關(guān)閉文件首先在程文件打開文件FILE*fp;fp=fopen(文件名,文件使用方式);FILE是<stdio.h>文件中定義的結(jié)構(gòu)數(shù)據(jù)類型,包含文件有關(guān)信息:讀或?qū)懝ぷ鞣绞?;當前讀/寫位置等等。一般用戶不必關(guān)心。若成功打開指定文件,則fopen返回指向該文件的FILE類型指針;若打開文件失敗,則返回NULL。文件指針:與打開的文件綁定在一起,以后將使用該指針實現(xiàn)對文件的所有操作文件打開文件FILE*fp;FILE是<stdio.h文件打開文件(續(xù))fp=fopen(文件名,文件使用方式);文件名:
字符串,可以只寫文件名,也可以包含路徑。只寫文件名時,表示文件在當前目錄下,當前目錄是指:從VC運行時,工程文件和源程序所在目錄。雙擊*.exe程序運行時,該*.exe程序所在目錄。包含路徑實例:“c:\temp\text.txt”“c:\\temp\\text.txt”文件打開文件(續(xù))fp=fopen(文件名,文件使用方文件打開文件(續(xù))fp=fopen(文件名,文件使用方式);
使用方式也是字符串,表示打開文件的方式,字符流方式包括:“r”: 表示讀;“w”: 表示寫;“a”: 表示添加;“r+”: 表示讀寫已有文件;“w+”: 表示讀寫新文件;“a+”: 表示讀及添加;文件打開文件(續(xù))fp=fopen(文件名,文件使用方式文件打開文件(續(xù))用“w”或“a”方式調(diào)用fopen打開一個不存在的文件,系統(tǒng)會首先自動創(chuàng)建該文件。然后再把它打開。用“w”方式打一個已存在的文件,則該文件原有內(nèi)容全部消失。用“a”方式打開一個已存在的文件,則原文件內(nèi)容保留不變,新添加的內(nèi)容將加到它的后面去。用“r”方式打開一個已存在的文件是正常的使用文件,若用“r”方式而打開一個尚未存在的文件,則會出錯,此時返回NULL。因此,一個好的程序設(shè)計風格,應判斷打開文件的返回值,并進行處理。一個打開文件的典型用法:…if((fp=fopen(filename,“r”))==NULL){printf(“Can’topenfile%s!\n”,filename);return-1;}…文件打開文件(續(xù))用“w”或“a”方式調(diào)用fopen打開一個文件“r+”是對一個已存在的文件進行讀和寫操作?!皐+”同樣對一個已存在的文件打開時,原數(shù)據(jù)消失,因此,修改一個已有文件的內(nèi)容時,必須以“r+”方式打開?!癮+”寫入的數(shù)據(jù)均在文件最后,而數(shù)據(jù)卻可由文件任何位置上讀取。
打開文件(續(xù))注意:文件必須打開后,才可進行讀寫。文件“r+”是對一個已存在的文件進行讀和寫操作。打開文件(續(xù)文件打開文件(續(xù))例如:以只讀方式打開一個文件“hello.c”。fp=fopen(“hello.c”,“r”);例如:以寫方式打開一個文件“output.dat”,該將文件位于C:盤根目錄下。fp=fopen(“c:\\output.dat”,“w”);文件打開文件(續(xù))例如:以只讀方式打開一個文件“hello.文件讀寫文件字符輸入函數(shù):
intfgetc(FILE*fp);
從fp所指向的文件中讀取一個字符并返回。若文件結(jié)束或調(diào)用失敗,返回EOF字符輸出函數(shù):
intfputc(intch,FILE*fp);
將字符ch寫入fp所指向的文件。若成功,則返回寫入的字符;若失敗,返回EOF文件讀寫文件字符輸入函數(shù):文件關(guān)閉文件關(guān)閉文件函數(shù):
intfclose(FILE*fp);關(guān)閉fp文件指針所指向的文件,并釋放fp文件指針。若成功關(guān)閉,返回0,否則返回EOF注意:fp必須是fopen返回的指針,并且調(diào)用關(guān)閉函數(shù)后,fp被釋放掉,不能再利用fp進行讀寫文件操作。若文件不再使用,應及時關(guān)閉文件。在程序結(jié)束前,應該關(guān)閉所有打開的文件(否則有可能丟失數(shù)據(jù))。文件關(guān)閉文件關(guān)閉文件函數(shù):注意:問題2.8:將文件in.txt拷貝至新文件out.txt中。算法分析:打開文件in.txt。打開文件out.txt。從文件in.txt讀取一個字符保存到ch中。是否到達文件尾部?4.1 將ch保存到out.txt中。4.2再從in.txt讀取一個字符保存到ch中。關(guān)閉文件。問題2.8:將文件in.txt拷貝至新文件out.txt中。文件#include<stdio.h>intmain(){ charch; FILE*in,*out; if((in=fopen("in.txt","r"))==NULL) { printf("Can'topenin.txt!"); return-1; } if((out=fopen("out.txt","w"))==NULL) { printf("Can'topenout.txt!"); return-1; } while((ch=fgetc(in))!=EOF) fputc(ch,out); fclose(in); fclose(out); return0;}文件#include<stdio.h>問題2.8:測試首先在該程序工程文件(即.dsp文件)目錄下準備一個包含一定內(nèi)容的input.txt文件。程序正確運行后,將在同一目錄下生成一個output.txt文件。檢查文件input.txt和output.txt內(nèi)容是否完全一樣。實驗問題2.8:測試首先在該程序工程文件(即.dsp文件)目錄下常見問題程序風格如何從循環(huán)嵌套中跳出continue與while、for循環(huán)數(shù)組元素未賦值就使用(通過調(diào)試解決)模塊化程序設(shè)計常見問題程序風格模塊化程序設(shè)計程序風格比較:#include<stdio.h>main(){inta[1000],b[1000];inti,j,m;for(i=0;i<1000;i++){scanf("%d",&a[i]);if(a[i]==-1)break;}for(j=0;j<1000;j++){scanf("%d",&b[j]);if(b[j]==-1)break;}for(i=0;i<1000;i++){for(j=0;j<1000;j++){m=0;if(a[i]==b[j]){m=1;break;}}if(m==0)printf("%d",a[i]);}}
#include<stdio.h>main(){inta[1000],b[1000];inti,j,m;for(i=0;i<1000;i++){scanf("%d",&a[i]);if(a[i]==-1)break;}for(j=0;j<1000;j++){scanf("%d",&b[j]);if(b[j]==-1)break;}for(i=0;i<1000;i++){for(j=0;j<1000;j++){m=0;if(a[i]==b[j]){m=1;break;}}if(m==0)printf("%d",a[i]);}}程序風格比較:#include<stdio.h>#inclu程序設(shè)計實踐:程序設(shè)計風格(StyleorConvention)(一)為什么要強調(diào)程序設(shè)計風格:可以改善軟件的可讀性,幫助程序員理解代碼。程序設(shè)計實踐:程序設(shè)計風格(StyleorConvent模塊化程序設(shè)計如何從嵌套循環(huán)中跳出輸入兩組正整數(shù)a、b,都以-1作為結(jié)束標志,從數(shù)組a中找到第一個與數(shù)組b相同的元素并輸出,若找不到則輸出Noanswer。輸入:34569102-1967567506-1輸出:56解題步驟:1、輸入兩組數(shù)分別存儲在數(shù)組a、b中;2、對于數(shù)組a中的每一個元素a[i],分別與數(shù)組b中的每一個元素b[j]進行比較
,若a[i]==b[j],則輸出a[i]3、若都找不到,輸出Noanswer。模塊化程序設(shè)計如何從嵌套循環(huán)中跳出輸入兩組正整數(shù)a、b,都以#include<stdio.h>main(){inta[100],b[100];inti,j;intfound=0;for(i=0;i<100;i++){scanf("%d",&a[i]);if(a[i]==-1)break;}for(j=0;j<100;j++){scanf("%d",&b[j]);if(b[j]==-1)break;}
for(i=0;a[i]!=-1;i++){for(j=0;j<b[j]!=-1;j++){ if(a[i]==b[j]){
found=1;printf(“%d”,a[i]);break;}}
if(found)break;}if(!found)printf(“Noanswer”);}如何從嵌套循環(huán)中跳出變量found表示是否找到相同元素通過再次判斷跳出兩重循環(huán)#include<stdio.h>for(i=0;a#include<stdio.h>
main()
{
inta,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20)
break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
printf("%d,%d\n",a,b);
}
continue與while、for循環(huán)#include<stdio.h>
main()
{
inta,b;
a=1,b=1;
while(a<=100)
{
if(b>=20)
break;
if(b%3==1)
{
b+=3;
a++;continue;
}
b-=5;
a++;
}
printf("%d,%d\n",a,b);
}
#include<stdio.h>
main()
{
如何調(diào)試函數(shù)?如何查看字符數(shù)據(jù)?如何查看數(shù)組中的數(shù)據(jù)?(問題2.5顛倒字符串程序為例)如何測試文件操作?(2.6拷貝文件為例)數(shù)組元素未賦值就使用(通過調(diào)試解決)程序設(shè)計實踐:調(diào)試程序(2)如何調(diào)試函數(shù)?程序設(shè)計實踐:調(diào)試程序(2)數(shù)組調(diào)試示例:#include<stdio.h>voidmain(){inta[1000],b[1000];inti,j,m;for(i=0;i<1000;i++){scanf("%d",&a[i]);if(a[i]==-1)break;}for(j=0;j<1000;j++){scanf("%d",&b[j]);if(b[j]==-1)break;}
for(i=0;i<1000;i++){for(j=0;j<1000;j++){m=0;if(a[i]==b[j]){m=1;break;}}if(m==0)printf("%d",a[i]);}}數(shù)組調(diào)試示例:#include<stdio.h>fo高級語言程序設(shè)計(一)
(CProgramming)第二講:C程序設(shè)計基礎(chǔ)(二)高級語言程序設(shè)計(一)
(CProgramming)第二講本章目標掌握函數(shù)的定義及調(diào)用方式掌握函數(shù)參數(shù)傳遞方式掌握switch多路選擇掌握一維數(shù)組的定義和使用;掌握簡單的文件輸入/輸出本章目標掌握函數(shù)的定義及調(diào)用方式模塊化程序設(shè)計將復雜問題分解為簡單問題的程序設(shè)計方法稱為結(jié)構(gòu)化程序設(shè)計,其特點為:自頂向下(top-downdesign);逐步細化(stepwiserefinement);模塊化(modularprogramming);模塊化的好處:功能分解的需要;代碼重用;模塊化程序設(shè)計將復雜問題分解為簡單問題的程序設(shè)計方法稱為結(jié)構(gòu)#include<stdio.h>main(){ doubleradius,area,perimeter; scanf(“%lf”,&radius); area=3.1415929*radius*radius; perimeter=2*radius*3.1415926; printf(“%6.2f%6.2f”,area,perimeter);}C程序設(shè)計基礎(chǔ)83常量定義所有常量可以用#define來定義,即可以給一個常量命名。如:#definePI3.1415926使用常量定義的好處:可提高程序的可讀性程序的可移植性更好,可維護性更好#include<stdio.h>#definePI3.1415926main(){ doubleradius,area,perimeter; scanf(“%lf”,&radius); area=PI*radius*radius; perimeter=2*radius*PI; printf(“Perimeter=%6.2f”,,perimeter);}實驗#include<stdio.h>C程序設(shè)計基礎(chǔ)4常量定義C程序設(shè)計基礎(chǔ)84常量定義(續(xù))在ANSIC中,類型修飾符:const----其變量值在程序執(zhí)行中不可以通過賦值等方法對它進行修改(是定義常量的另一種方法,用#define定義的常量無類型,而用const定義的常量有類型)。如:constfloatPI=3.14159;#include<stdio.h>constfloatPI=3.14159;main(){ doubleradius,area,perimeter; scanf(“%lf”,&radius); area=PI*radius*radius; perimeter=2*radius*PI; printf(“Perimeter=%6.2f”,perimeter);}C程序設(shè)計基礎(chǔ)5常量定義(續(xù))在ANSIC中,類型修飾符:#include<stdio.h>main(){ inta,b,sum; scanf(“%d+%d”,&a,&b); sum=a+b; printf(“Sum=%d\n”,sum);}tmainmainmainscanfprintf標準輸入/輸出庫函數(shù)#include<stdio.h>tmainmainma標準(庫)函數(shù)標準I/O庫函數(shù)#include<stdio.h>(scanf,printf,getchar,putchar…)標準數(shù)學函數(shù)#include
<math.h>(sin,cos,sqrt…)…標準(庫)函數(shù)標準I/O庫函數(shù)問題2.1問題:已知一組三角形的三邊(如(2.0,2.0,2.0)、(3.0,4.0,5.0)、(2.5,3.1,3.8)),計算其面積。計算三角形面積的公式為:#include<stdio.h>#include<math.h>main(){ doubles; s=(2.0+2.0+2.0)/2; printf(“%f\n”,sqrt(s*(s-2.0)*(s-2.0)*(s-2.0))); s=(3.0+4.0+5.0)/2; printf(“%f\n”,sqrt(s*(s-3.0)*(s-4.0)*(s-5.0))); s=(2.5+3.1+3.8)/2; printf(“%f\n”,sqrt(s*(s-2.5)*(s-3.1)*(s-3.8)));}對于這樣的有規(guī)律的重復計算,可以用更好的方法:函數(shù)來解決doublesqrt(doublex)為標準數(shù)學庫中函數(shù),使用前應加上#include<math.h>問題2.1問題:已知一組三角形的三邊(如(2.0,2.0定義求三角形面積函數(shù)tri_area()doublea,doubleb,doublecdouble{
}
函數(shù)名需要傳遞給函數(shù)的數(shù)據(jù)(參數(shù)):數(shù)據(jù)類型、數(shù)據(jù)名稱函數(shù)計算結(jié)果(返回)類型
double函數(shù)是如何對數(shù)據(jù)進行計算(函數(shù)體)doublea,doubleb,doublectri_area定義求三角形面積函數(shù)tri_area(tri_area函數(shù)定義
doubletri_area(doublea,doubleb,doublec){doubles,area;
s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));returnarea;}函數(shù)定義頭部,其中double為函數(shù)類型tri_area為函數(shù)名a,b,c為函數(shù)參數(shù)函數(shù)體局部變量函數(shù)返回(return)語句,返回計算結(jié)果tri_area函數(shù)定義
doubletri_area(d函數(shù)定義在ANSIC標準中,函數(shù)定義形式為:類型函數(shù)名(參數(shù)說明){[局部變量定義或說明]
語句}0個、一個或多個參數(shù),多個參數(shù)以逗號,分隔稱為形參,格式:數(shù)據(jù)類型參數(shù)名函數(shù)定義在ANSIC標準中,函數(shù)定義形式為:0個、一個或多函數(shù)定義(續(xù))函數(shù)名一般是標識符,一個程序只有一個main函數(shù),其它函數(shù)名可隨意取,當然最好是有助于記憶的名字。局部變量定義或說明可有可無,在ANSIC標準中,局部變量定義或說明應放在函數(shù)體的最前面。在ANSIC標準中,函數(shù)(返回值)類型不允許省略,即使是返回整型值(int),當函數(shù)無返回值時,應其類型說明為void類型。若需要返回值:return表達式;若不需要返回值:return;或者沒有return語句函數(shù)定義(續(xù))函數(shù)名一般是標識符,一個程序只有一個main函函數(shù)定義(續(xù))*在C語言中,函數(shù)不能嵌套定義。如,下面定義在C語言中是不充許的:f(){g(){…}…}函數(shù)定義(續(xù))*在C語言中,函數(shù)不能嵌套定義。問題2.1:代碼實現(xiàn)#include<stdio.h>#include<math.h>doubletri_area(doublea,doubleb,doublec){doubles,area;
s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));return(area);}intmain(){doublearea;area=tri_area(2.0,2.0,2.0);printf(“%f\n”,area); area=tri_area(3.0,4.0,5.0);printf(“%f\n”,area); area=tri_area(2.5,3.1,3.8);printf(“%f\n”,area);return0;}
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年海洋服務合作協(xié)議書
- 新型保安服務模式的探索與創(chuàng)新計劃
- 班級經(jīng)驗分享會的開展計劃
- 培養(yǎng)學生判斷力與批判性思維計劃
- 增強圖書館開放日活動效果計劃
- 如何應對財務恐懼癥計劃
- 經(jīng)理績效目標規(guī)劃計劃
- 美術(shù)欣賞與文化傳播課程大綱計劃
- 幼兒心理健康關(guān)懷計劃
- 2025年藝術(shù)表演場館服務項目建議書
- 特種設(shè)備及重要設(shè)備安全管理制度
- DB3502T052-2019 家政服務規(guī)范 家庭搬家
- 《自主神經(jīng)系統(tǒng)》課件
- 2025集團公司內(nèi)部借款合同范本
- 遼寧省名校聯(lián)盟2025屆高三上學期1月份聯(lián)合考試語文試題(含答案)
- 2025年山西地質(zhì)集團社會招聘高頻重點提升(共500題)附帶答案詳解
- 2024-2025學年遼寧省沈陽市沈河區(qū)七年級(上)期末英語試卷(含答案)
- 前牙即刻種植的臨床應用
- 2024-2025學年初中七年級上學期數(shù)學期末綜合卷(人教版)含答案
- 體育活動策劃與組織課件
- 公司違規(guī)違紀連帶處罰制度模版(2篇)
評論
0/150
提交評論