




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章程序的控制結(jié)構(gòu)湖南師范大學(xué)工程與設(shè)計(jì)學(xué)院倪芳英C語言大學(xué)實(shí)用教程1內(nèi)容提要算法的描述方法順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)流程轉(zhuǎn)移控制語句程序的調(diào)試與排錯(cuò)4.1算法及描述方法
數(shù)據(jù)結(jié)構(gòu)+算法=程序算法:為解決一個(gè)具體問題而采取的確定的有限的操作步驟,這里僅指計(jì)算機(jī)能執(zhí)行的算法算法特性:有窮性確定性
有效性
沒有輸入或有多個(gè)輸入
有一個(gè)或多個(gè)輸出
4.1.1算法的概念算法的分類
數(shù)值運(yùn)算算法:解決的是求數(shù)值解的問題,例如用輾轉(zhuǎn)相除法求兩個(gè)數(shù)的最大公約數(shù)等非數(shù)值運(yùn)算算法:主要用于解決需要用分析推理、邏輯推理才能解決的問題,例如人工智能中的許多問題,查找、分類等問題4.1.2算法的表示方法自然語言表示傳統(tǒng)的流程圖表示N-S結(jié)構(gòu)化流程圖表示
偽代碼表示1用自然語言表示算法
自然語言就是人們?nèi)粘J褂玫恼Z言,可以是漢語或英語或其它語言。用自然語言表示通俗易懂,但文字冗長,容易出現(xiàn)“歧義性”。自然語言表示的含義往往不大嚴(yán)格,要根據(jù)上下文才能判斷其正確含義,描述包含分支和循環(huán)的算法時(shí)也不很方便。因此,除了那些很簡單的問題外,一般不用自然語言描述算法。
例如:求n!2用流程圖表示算法美國國家標(biāo)準(zhǔn)化協(xié)會ANSI(AmericanNationalStandardInstitute)規(guī)定了一些常用的流程圖符號:起止框判斷框處理框輸入/輸出框注釋框流向線連接點(diǎn)將求5!的算法用流程圖表示如果需要將最后結(jié)果打印出來,可在菱形框的下面加一個(gè)輸出框。
流程圖是表示算法的較好的工具。一個(gè)流程圖包括以下幾部分:(1)表示相應(yīng)操作的框;(2)帶箭頭的流程線;(3)框內(nèi)外必要的文字說明。用N-S流程圖表示算法
1973年美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個(gè)矩形框內(nèi),在該框內(nèi)還可以包含其它的從屬于它的框,或者說,由一些基本的框組成一個(gè)大的框。這種流程圖又稱N--S結(jié)構(gòu)化流程圖。求5!算法用N-S圖表示4.2順序結(jié)構(gòu)
C程序結(jié)構(gòu)C程序源程序文件1源程序文件2源程序文件3編譯預(yù)處理命令全局變量聲明函數(shù)1函數(shù)n…函數(shù)首部函數(shù)體局部變量聲明執(zhí)行語句程序是解決某種問題的一組指令的有序集合。著名計(jì)算機(jī)科學(xué)家沃思(NikiklausWirth)提出一個(gè)公式:程序=數(shù)據(jù)結(jié)構(gòu)+算法
程序是什么?對數(shù)據(jù)的描述。在C語言中,體現(xiàn)為數(shù)據(jù)類型的描述!對數(shù)據(jù)處理的描述。是為解決一個(gè)問題而采取的方法和步驟,是程序的靈魂!
<<數(shù)據(jù)結(jié)構(gòu)>><<算法設(shè)計(jì)與分析>>結(jié)論:學(xué)好C語言首先就必須十分了解C語言的數(shù)據(jù)類型、運(yùn)算符與表達(dá)式。12構(gòu)成程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)已經(jīng)證明,任何程序均可只用這三種結(jié)構(gòu)綜合描述只用這三種結(jié)構(gòu)編制的程序,叫結(jié)構(gòu)化程序程序必須符合結(jié)構(gòu)化規(guī)則結(jié)構(gòu)化程序設(shè)計(jì)的核心思想
采用順序、選擇和循環(huán)三種基本結(jié)構(gòu)作為程序設(shè)計(jì)的基本單元
只有一個(gè)入口;只有一個(gè)出口;無死語句,即不存在永遠(yuǎn)都執(zhí)行不到的語句;無死循環(huán),即不存在永遠(yuǎn)都執(zhí)行不完的循環(huán)。采用“自頂向下、逐步求精”和模塊化的方法進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)
BANS圖傳統(tǒng)流程圖4.2.1順序結(jié)構(gòu)的流程圖表示BA4.2.2順序結(jié)構(gòu)程序設(shè)計(jì)舉例例1輸入三角形的三邊長,求三角形面積。假設(shè):三個(gè)邊長a,b,c能構(gòu)成三角形。已知面積公式:area=s=(a+b+c)*0.5開始輸入三邊長計(jì)算s計(jì)算面積結(jié)束順序結(jié)構(gòu)程序設(shè)計(jì)舉例
#include<stdio.h>
#include<math.h>
voidmain()
{floata,b,c,s,area;
scanf(“%f,%f,%f”,&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);
printf(“area=%7.2f\n”,area);}
數(shù)學(xué)函數(shù)庫因?yàn)橐玫狡渲械膕qrt函數(shù)運(yùn)行情況:
3,4,6
a=3.00,b=4.00,c=6.00,s=6.50
area=5.33順序結(jié)構(gòu)程序設(shè)計(jì)舉例例2
從鍵盤輸入一個(gè)大寫字母,要求改用小寫字母輸出。
#include<stdio.h>
voidmain()
{charc1,c2;
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}運(yùn)行情況:
A↙
A,65
a,97
順序結(jié)構(gòu)程序設(shè)計(jì)舉例例3求ax2+bx+c=0方程的根。
a,b,c由鍵盤輸入,設(shè)>0。
眾所周知,一元二次方程式的根為
x1=x2=
可以將上面的分式分為兩項(xiàng):
p=,q=x1=p+q,x2=p-q順序結(jié)構(gòu)程序設(shè)計(jì)舉例#include<stdio.h>
#include<math.h>
voidmain()
{
floata,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;
printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}運(yùn)行情況:
a=1,b=3,c=2↙
x1=-1.00
x2=-2.004.3選擇結(jié)構(gòu)和條件判斷生活中的條件判斷場景:如果明天是晴天,我們?nèi)ヅ涝缆瓷?。如果電機(jī)轉(zhuǎn)速超過s1,則制動(dòng)設(shè)備開始工作。如果實(shí)驗(yàn)結(jié)果正確,則進(jìn)行下一實(shí)驗(yàn),否則,修正參數(shù)后重復(fù)實(shí)驗(yàn)。一般判斷過程:如果(條件)則{動(dòng)作1}否則{動(dòng)作2}對應(yīng)C語言的if語句(如圖):if(表達(dá)式){語句1}else{語句2}BN如果
成績<60
那么
通知補(bǔ)考否則
告知你考試成績AY條件PABNY條件P4.3.2選擇結(jié)構(gòu)的流程圖表示if語句實(shí)現(xiàn)選擇結(jié)構(gòu)【例1】輸入兩個(gè)整數(shù),輸出其中的大數(shù)。#include<stdio.h>intmain(){
inta,b;
printf("inputtwonumbers:");
scanf("%d%d",&a,&b);if(a>b)
printf("max=%d\n",a);else
printf("max=%d\n",b);}例4.2輸入3個(gè)數(shù)a,b,c,要求按由小到大的順序輸出。#include<stdio.h>intmain(){floata,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f\n",a,b,c);return0;}復(fù)合語句{}括住的若干條語句構(gòu)成一個(gè)復(fù)合語句語句塊內(nèi)可以定義變量變量僅在定義它的復(fù)合語句內(nèi)有效變量必須在復(fù)合語句的開頭定義復(fù)合語句可以用在任何可以使用語句的地方if語句一、功能:判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定是否要執(zhí)行后面的語句。二、格式:
if(判斷條件)
語句;此處無分號此處有分號例a1:if(x>y)
printf("%d",x);x>y輸出x真(非0)假(0)當(dāng)if后面的語句不止一條時(shí),應(yīng)用大括號將幾個(gè)語句括起來成為一個(gè)復(fù)合語句。例a2:if(a>b){printf("%d",a+b);
printf("%d",a-b);}4.3.3條件語句if-else語句●功能:當(dāng)判斷條件成立,即執(zhí)行if語句主體,判斷條件不成立時(shí),則可執(zhí)行else后面的語句主體?!窀袷剑篿f(判斷條件)
語句;
else
語句;無分號有分號無分號有分號if(判斷條件){語句主體1;}else{語句主體2;}#include<stdio.h>intmain(){
inta,b;
printf("inputtwonumbers:");
scanf("%d%d",&a,&b);
if(a>=b){printf("max=%d\n",a);}
if(a<b){printf("max=%d\n",b);}}用if語句處理選擇結(jié)構(gòu)舉例【例】輸入兩個(gè)整數(shù),輸出其中的大數(shù)。#include<stdio.h>intmain(){
inta,b;
printf("inputtwonumbers:");
scanf("%d%d",&a,&b);if(a>b)
printf("max=%d\n",a);else
printf("max=%d\n",b);}用if語句處理選擇結(jié)構(gòu)舉例【例】輸入兩個(gè)整數(shù),輸出其中的大數(shù)。if的簡潔版——條件運(yùn)算符?:一、功能:根據(jù)條件的成立與否,來決定結(jié)果為?或:后面的表達(dá)式。二、一般形式:條件判斷?表達(dá)式1:表達(dá)式2有三個(gè)操作對象,是三元運(yùn)算符,C語言中唯一的三元運(yùn)算符。三、求解過程:當(dāng)條件成立時(shí)執(zhí)行表達(dá)式1,表達(dá)式1的值即為整個(gè)條件表達(dá)式的值,否則執(zhí)行表達(dá)式2,表達(dá)式2的值為整個(gè)條件表達(dá)式的值。通常將兩個(gè)表達(dá)式之一的運(yùn)算結(jié)果賦值給某個(gè)變量,等價(jià)于如下形式的if-else語句:
if(條件判斷)
變量x=表達(dá)式1;
else
變量x=表達(dá)式2;例1:if(a>b)max=a;可表示成:
elsemax=(a>b)?a:b;max=b;四、注意事項(xiàng):1、優(yōu)先級:
max=(a>b)?a:b;可寫成:max=a>b?a:b;
a>b?a:b+1;是等價(jià)于:(a>b?a:b)+1;還是a>b?a:(b+1);答:后者。2、結(jié)合性:自右而左例2:a>b?a:c>d?c:d;等價(jià)于?a>b?a:(c>d?c:d);若a=1,b=2,c=3,d=4,則上式值為?答:43、條件表達(dá)式不能取代所有的if語句,除非if的內(nèi)嵌語句為賦值語句,且兩個(gè)分支均給一個(gè)變量賦值。例3:if(a>b)printf("%d",a);elseprintf("%d",b);printf("%d",a>b?a:b);5、當(dāng)表達(dá)式1和表達(dá)式2的類型不同時(shí),條件表達(dá)式的值的類型為二者中較高的類型。例4:x>y?1:1.5;當(dāng)x>y時(shí),條件表達(dá)式的值為1.0。例5:輸入一個(gè)字符,判別它是否是大寫字母,如果是,將它轉(zhuǎn)換成小寫字母并輸出,如果不是,原樣輸出。#include<stdio.h>intmain(){
inta,b;
printf("inputtwonumbers:");
scanf("%d%d",&a,&b);max=a>=b?a:b;
printf("max=%d\n",max);}用if語句處理選擇結(jié)構(gòu)舉例【例】輸入兩個(gè)整數(shù),輸出其中的大數(shù)。例:用公式法編程計(jì)算一元二次方程ax2+bx+c=0的根,a,b,c的值由鍵盤輸入,其中a≠0.步驟:1、輸入一組系數(shù)a,b,c.2、若a=0,則輸出“不是二次方程”的提示信息,并終止程序執(zhí)行;否則繼續(xù)第3步3、計(jì)算判別式disc=b2-4ac。4、按下式分別計(jì)算p和q的值。5、若disc=0,則有兩個(gè)相等的實(shí)根:x1=x2=p6、否則,若disc>0,則輸出兩個(gè)不相等的實(shí)根:x1=p+q,x2=p-q7、否則,若disc<0,則輸出兩個(gè)兩個(gè)共軛復(fù)根:x1=p+qi,x2=p-qi#include<stdio.h>#include<stdlib.h>#include<math.h>#defineEPS1e-6int
main(int
argc,char*argv[]){doublea,b,c,disc,p,q;
printf("pleaseentera,b,c\n");scanf("%lf,%lf,%lf",&a,&b,&c);printf("Theequation");if(fabs(a)<=1e-6){printf("isnotaquadratic\n");exit(0);}disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(fabs(disc))/(2*a);if(fabs(disc)<=EPS)
printf("hastwoequalroots:x1=x2=%8.2f\n",p);elseif(disc>EPS){printf("hasdistinctrealroots:x1=%8.2f,x2=%8.2f\n",p+q,p-q);}else{printf("hascomplexroots:\n");
printf("%8.2f+%8.2fi\n",p,q);
printf("%8.2f-%8.2fi\n",p,q);}
system("PAUSE"); return0;}程序測試:是指對一個(gè)完成了全部或部分功能模塊的計(jì)算機(jī)程序在正式使用前的檢測,以確保該程序能按預(yù)定的方式正確運(yùn)行。靜態(tài)測試:不執(zhí)行被測程序,而只是對程序文本進(jìn)行檢查,通過代碼審查,來分析和發(fā)現(xiàn)程序中的錯(cuò)誤。動(dòng)態(tài)測試:通過運(yùn)行被測程序來檢測程序的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性,即檢查運(yùn)行結(jié)果與預(yù)期結(jié)果的差異,并分析運(yùn)行效率和健壯性等性能,包括構(gòu)造測試用例、執(zhí)行程序、分析程序的輸出結(jié)果。白盒測試:內(nèi)部結(jié)構(gòu)和流向可見,結(jié)構(gòu)測試或邏輯驅(qū)動(dòng)器測試。黑盒測試:內(nèi)部結(jié)構(gòu)和流向不可見,注重測試程序的功能需求例:判斷整數(shù)a是奇數(shù)還是偶數(shù)。
main(){inta;
scanf("%d",&a);if(a%2==1)
printf("itisaoddnumber!\n");else
printf("itisaevennumber!\n");}附:C程序的書寫格式——“緊縮對齊”1、一般每個(gè)語句占一行;2、不同結(jié)構(gòu)層次的語句,從不同的起始位置開始,同一結(jié)構(gòu)層次中的語句,縮進(jìn)同樣的字?jǐn)?shù);3、表示結(jié)構(gòu)層次的大括號,寫在該結(jié)構(gòu)化語句的第一或第二個(gè)字母的下面,某一結(jié)構(gòu)的“{”與“}”在豎直方向上應(yīng)對齊,并分別占用一行。如果想在判斷條件不成立時(shí)做其它操作,可如下例:例a3:if(a>b){printf("%d",a-b);
printf("%d",a%b);}if(a<=b){printf("%d",a+b);
printf("%d",a*b);}注意:系統(tǒng)在處理if語句后面的判定條件時(shí),以0為“假”,以非0為“真”。例a4:將兩個(gè)實(shí)數(shù)按從小到大的順序輸出。
main(){floata,b,t;
scanf(“%f%f”,&a,&b);if(a>b){t=a;a=b;b=t;}
printf("%f,%f",a,b);}●定義:當(dāng)if語句主體中又包含了if語句時(shí),則稱這個(gè)if語句為嵌套if語句?!窀袷剑篿f(條件判斷1){if(條件判斷2){
語句主體2;
}
其它語句1;
}
其它語句2;條件判斷1其它語句2;條件判斷2語句主體2;truetruefalse其它語句1;false選擇結(jié)構(gòu)的嵌套elseif語句一、格式:
if(判斷條件1){
語句主體1;
}elseif(判斷條件2){
語句主體2;
}判斷條件1判斷條件2語句主體1語句主體2其它語句truetruefalsefalseif-else選擇結(jié)構(gòu)的一種最常用形式if(表達(dá)式)
語句1;
else
語句2;
語句3表達(dá)式值非0時(shí),執(zhí)行語句1,然后語句3;
表達(dá)式值為0時(shí),執(zhí)行語句2,然后語句3else部分可以沒有。if(表達(dá)式)
語句1;
語句3當(dāng)表達(dá)式值為0時(shí),直接執(zhí)行語句3if-else嵌套使用時(shí),注意else和誰配對的問題else-ifif的一種擴(kuò)展形式if(表達(dá)式)
語句1;
elseif(表達(dá)式)
語句2;
elseif(表達(dá)式)
語句3;
…………
else
語句4;
語句5;else部分可以沒有if語句的一般形式if語句最常用的形式:if(表達(dá)式)語句1else語句2if語句的三種形式1.if(表達(dá)式)語句2.if(表達(dá)式)語句1
else語句23.if(表達(dá)式1)語句1
elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3……elseif(表達(dá)式m)語句melse語句m+1表達(dá)式語句假(0)真(非0)表達(dá)式語句1語句2假真表達(dá)式1語句1表達(dá)式2表達(dá)式3表達(dá)式4語句2語句3語句4語句5假假假假真真真真現(xiàn)場編程完成例4.5體型判斷。按“體指數(shù)”對肥胖程度進(jìn)行劃分:體指數(shù)t=體重w/(身高h(yuǎn))2(w單位為公斤,h單位為米)當(dāng)t<18時(shí),為低體重;當(dāng)t介于18和25之間時(shí),為正常體重;當(dāng)t介于25和27之間時(shí),為超重體重;當(dāng)t>=27時(shí),為肥胖。編程從鍵盤輸入你的身高h(yuǎn)和體重w,根據(jù)給定公式計(jì)算體指數(shù)t,然后判斷你的體重屬于何種類型。用3種方法編程:算法1:用不帶else子句的if語句編程算法2:用在if子句中嵌入if語句的形式編程算法3:用在else子句中嵌入if語句的形式編程
說明:(1)if后面的表達(dá)式可為任意的數(shù)值類型。但一般為關(guān)系表達(dá)式或邏輯表達(dá)式。(2)每個(gè)子語句若為表達(dá)式語句等簡單語句,應(yīng)有一分號;若為復(fù)合語句{……},則不能有分號。例如:if(x>0)printf("%f",x);elseprintf("%f",–x);if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));
prints("area=%6.2f\n",area);}elseprintf("itisnotatrilateral");各有一個(gè)分號不可有分號一個(gè)函數(shù),當(dāng)x<0時(shí),y=-1;當(dāng)x=0時(shí),y=0;當(dāng)x>0時(shí),y=1;寫一個(gè)程序,輸入x的值,輸出y值。程序段1:if(x<0)y=-1;elseif(x==0)y=0;elsey=1;程序段2:if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;程序段3:y=-1;if(x!=0)if(x>0)y=1;elsey=0;程序段4:y=0;if(x>=0)if(x>0)y=1;elsey=-1;程序段1和2是正確的若a=5,b=9,判斷以下兩程序段的運(yùn)行結(jié)果。
if(a>b)if(a-b>6)
printf("%d\n",a%b);else
printf("%d\n",a*b);無輸出結(jié)果。
if(a>b){if(a-b>6)
printf("%d\n",a%b);}else
printf("%d\n",a*b);輸出:45思考1:根據(jù)所輸入的成績判斷等級:80分以上為A,70至79分為B,60至69分為C,59分以下不及格(failed).score>=70score>=80輸出等級Atrue輸出等級Btruefalsefalse開始score>=60intscore輸入成績結(jié)束輸出等級Ctrue輸出failedfalse思考2:一個(gè)函數(shù),當(dāng)x<1時(shí),y=x;當(dāng)1<=x<10時(shí),y=2x-1;當(dāng)x>=10時(shí),y=3x-11;寫一個(gè)程序,輸入x的值,輸出y值。解答:
if(x<1){y=x;
printf("%d\n",y);}elseif(x<10){y=2*x-1;
printf("%d\n",y);}else{y=3*x-11;
printf("%d\n",y);}四、if與else的配對問題思考1:if(score>=80)
printf("A\n");elseif(score>=70)
printf("B\n");elseif(score>=60)
printf("C\n");else
printf("failed\n");原則:else會去找一個(gè)與它最接近的上一個(gè)if配對。給出以下程序的運(yùn)行結(jié)果。輸出:-9若a=20,b=50呢?結(jié)果仍為-9
main(){floatc=3.0,d=4.0;if(c>d)c=5.0;elseif(c==d)c=6.0;elsec=7.0;
printf("%f",c);}輸出:7.0main(){inta=50,b=20,c=10;
intx=5,y=0;
if(a<b)
if(b!=10)
if(!x)x=1;elseif(y)x=10;x=-9;
printf("%d\n",x);}例:給定一個(gè)不多于5位的正整數(shù),求它是幾位數(shù),并分別打印出每一位數(shù)字。
main()
{longintnum;
int
place,five,four,three,second,one;
scanf("%ld",&num);
if(num>9999)place=5;
elseif(num>999)place=4;
elseif(num>99)place=3;
elseif(num>9)place=2;
elseplace=1;
printf("%d\n",place);printf("每位數(shù)字為:\n");
five=num/10000;
four=(num-five*10000)/1000;
three=(num-five*10000-four*1000)/100;
second=(num-five*10000-four*1000-three*100)/10;
one=num-five*10000-four*1000-three*100-second*10;
printf("%d,%d,%d,%d,%d\n",five,four,three,second,one);}例:編程設(shè)計(jì)一個(gè)簡單的猜數(shù)游戲:先由計(jì)算機(jī)“想”一個(gè)數(shù)請玩家猜,如果玩家猜對了,則計(jì)算機(jī)給出提示“right!”,否則提示“worng!”,并告訴玩家所猜的數(shù)是大還是小。#include<stdio.h>#include<stdlib.h>int
main(int
argc,char*argv[]){int
magic,guess;magic=rand();
printf("Pleaseguessamagicnumber:");
scanf("%d",&guess);
if(guess>magic){printf("worng!toohigh!\n");}elseif(guess<magic){printf("worng!toolow!\n");}else{printf("Right\n");
printf("Thenumberis:%d\n",magic);}
system("PAUSE"); return0;}指定范圍的隨機(jī)數(shù)如何產(chǎn)生?4.3.4開關(guān)語句一般形式:
switch(表達(dá)式)
{case常量1:語句1[break;]case常量2:語句2[break;]……case常量n:語句n[break;]default:語句n+1}執(zhí)行過程常量表達(dá)式的作用,且互不相同break語句的作用常量表達(dá)式的次序多個(gè)case可以共用一組執(zhí)行語句。表達(dá)式1語句1表達(dá)式2表達(dá)式3表達(dá)式4語句2語句3語句4語句5假假假假真真真真多分支選擇語句……case'A':case'B':case'C':printf(">60\n");break;……switch語句適用的情況???注意事項(xiàng):1、case后面的選擇值只能只字符或常量;2、每一個(gè)case后面的選擇值必須互不相同,否則會出現(xiàn)矛盾現(xiàn)象;3、各個(gè)case和default的出現(xiàn)次序并不影響執(zhí)行結(jié)果;4、執(zhí)行完一個(gè)case后面的語句,程序流程控制轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行。break語句的使用:在執(zhí)行一個(gè)case分支后,使流程跳出switch結(jié)構(gòu),即終止switch語句的執(zhí)行。
switch(表達(dá)式){case選擇值1:語句主體1;break;case選擇值2:語句主體2;break;...case選擇值n:語句主體n;break;default:語句主體n+1;}其它語句表達(dá)式選擇值1語句主體1選擇值ndefault語句主體n語句主體n+1……break;break;default后面可以不加break.switch多路選擇switch(表達(dá)式){
case常數(shù)1:
語句序列1;
case常數(shù)2:
語句序列2;
…………
default:
語句序列3;
}default可以沒有,但最好不省略不要忘記break現(xiàn)場編程完成計(jì)算器程序……例4.8
編程設(shè)計(jì)一個(gè)簡單的計(jì)算器程序,要求根據(jù)用戶從鍵盤輸入的表達(dá)式:操作數(shù)1運(yùn)算符op操作數(shù)2然后,計(jì)算表達(dá)式的值,指定的運(yùn)算符為加(+)、減(-)、乘(*)、除(/)
【例】計(jì)算器程序。用戶輸入運(yùn)算數(shù)和四則運(yùn)算符,輸出計(jì)算結(jié)果。
switch語句用于判斷運(yùn)算符,然后輸出運(yùn)算值。當(dāng)輸入運(yùn)算符不是+,-,*,/時(shí)給出錯(cuò)誤提示intmain(){floata,b;charc;
printf("inputexpression:a+(-,*,/)b\n");
scanf("%f%c%f",&a,&c,&b);
switch(c){case'+':printf("%f\n",a+b);break;case'-':printf("%f\n",a-b);break;case'*':printf("%f\n",a*b);break;case'/':printf("%f\n",a/b);break;default:printf("inputerror\n");}}思考1:根據(jù)所輸入的成績判斷等級:80分以上為A,70至79分為B,60至69分為C,59分以下不及格(failed).score>=70score>=80輸出等級Atrue輸出等級Btruefalsefalse開始score>=60intscore輸入成績結(jié)束輸出等級Ctrue輸出failedfalse思考2:一個(gè)函數(shù),當(dāng)x<1時(shí),y=x;當(dāng)1<=x<10時(shí),y=2x-1;當(dāng)x>=10時(shí),y=3x-11;寫一個(gè)程序,輸入x的值,輸出y值。例:
switch(grade){case'A':printf("80~100\n");break;case'B':printf("70~79\n");break;case'C':printf("60~69\n");break;case'D':printf("0~59\n");break;
default:printf("error!\n");}case后面包含不止一個(gè)語句時(shí)可以不用大括號。
四、switch語句的特殊用法:將不同的選擇值共同處理相同的語句。例:根據(jù)成績等級給評語:'a'或'A':excellent;'b'或'B':good;'c'或'C':bestudyhard;'d'或'D':failed.
switch(grade){case'a':case'A':printf("excellent!\n");break;
case'b':case'B':printf("good!\n");break;
case'c':case'C':printf("bestudyhard!\n");break;
default:printf("failed!\n");}思考2:根據(jù)用戶輸入的年份和月份給出該月的天數(shù)。思考3:一個(gè)函數(shù),當(dāng)x<0時(shí),y=-1;當(dāng)x=0時(shí),y=0;當(dāng)x>0時(shí),y=1;寫一個(gè)程序,輸入x的值,輸出y值。思考1:根據(jù)用戶輸入的字母判定代表星期幾。#include<stdio.h>main(){int
y,m,d;printf(“pleaseinputyearandmonth:”);scanf(“%d,%d,”,&m,&y);switch(y){case1:case3:case5:case7:case8:case10:case12:d=31;break;case4:case6:case9:case11:d=30;break;case2:if(m%4==0&&m%100!=0||(m%400==0)d=29;elsed=28;break;
defaut:printf(“輸入錯(cuò)誤!”);}
printf(“這個(gè)月的天數(shù)為d=%d”,d);}思考2例
運(yùn)輸公司對用戶計(jì)算運(yùn)費(fèi)。路程(s)越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:
s<250km沒有折扣
250≤s<5002%折扣
500≤s<l0005%折扣
1000≤s<20008%折扣
2000≤s<300010%折扣
3000≤s15%折扣設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為p(price的縮寫),貨物重為w(weight的縮寫),距離為s,折扣為d(discount的縮寫),則總運(yùn)費(fèi)f(freight的縮寫)的計(jì)算公式為
f=p*w*s*(1
d)
分析此問題,折扣的變化是有規(guī)律的:折扣的“變化點(diǎn)”都是250的倍數(shù)(250,500,1000,2000,3000)。利用這一特點(diǎn),可以在橫軸上加一種坐標(biāo)c,c的值為s/250。c代表250的倍數(shù)。c=0c=1c=2,3c=4,5,6,7c=8,9,10,11c>=12switch語句適用的情況:1.不等式表示的范圍為某一值的整數(shù)倍;2.一般不等號與嚴(yán)格不等號分居兩側(cè)#include<stdio.h>intmain(){intc,s;floatp,w,d,f;
printf("pleaseenterprice,weight,distance:");
scanf("%f,%f,%d",&p,&w,&s);if(s>=3000)c=12;elsec=s/250;
switch(c){case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;}f=p*w*s*(1
d/100.0);
printf("freight=%10.2f\n",f);return0;}補(bǔ)充:求1月1日到某月底的天數(shù)#include<stdio.h>intmain(){inty,m,d=0,leap;
scanf("%d%d",&y,&m);if(y%4==0&&y%100!=0||y%400==0)leap=1;elseleap=0;switch(m){case12:d+=31;case11:d+=30;case10:d+=31;……case3:d+=31;case2:if(leap)d+=29;elsed+=28;case1:d+=31;}……}#include<stdio.h>main(){int
y,m,d;scanf(“%d,%d,”,&y,&m);if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)d=31;elseif(m==4||m==6||m==9||m==11)d=30;elseif(m==2)
{if(y%4==0&&y%100!=0||y%400==0)d=29;elsed=28;}elseprintf(“輸入錯(cuò)誤!”);
printf(“這個(gè)月的天數(shù)為d=%d”,d);}用if來編程例9:給出以下程序的運(yùn)行結(jié)果。
intx=10,y=5;
switch(x){case1:x++;
default:x+=y;case2:y--;case3:x--;}printf("%d,%d\n",x,y);答案:14,4什么是循環(huán)?為什么要使用循環(huán)?問題1:問題2:求學(xué)生平均成績
分?jǐn)?shù)相加后除以課數(shù)
在許多問題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。(1)用while語句(2)用do—while語句(3)用for語句(4)用goto
語句和if語句構(gòu)成循環(huán)4.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的圖示:
當(dāng)型(While型)循環(huán)結(jié)構(gòu)
直到型(Until型)循環(huán)
4.4.2循環(huán)結(jié)構(gòu)的流程圖表示1、while語句while語句用來實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。一般形式:
while(表達(dá)式)語句當(dāng)表達(dá)式為非0值時(shí),執(zhí)行while語句中的內(nèi)嵌語句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語句。
4.4.3循環(huán)語句流程圖設(shè)置循環(huán)變量初值判斷條件改變循環(huán)變量值(增或減)循環(huán)主體true其它語句false執(zhí)行步驟:1、第一次進(jìn)入循環(huán)前必須先設(shè)置循環(huán)控制變量的初始值;2、檢查條件判斷,若為真,執(zhí)行循環(huán)主體語句,若為假,跳出循環(huán),執(zhí)行其它語句;3、重新設(shè)置循環(huán)控制變量的值(增或減),再回步驟2重新判斷條件,決定是否繼續(xù)執(zhí)行循環(huán)。例
求1到100的和
#include<stdio.h>
voidmain()
{inti,sum=0;
i=1;
while(i<=100)
{sum=sum+i;
i++;}
printf(″%d\n″,sum);
}說明:(1)循環(huán)體如果包含一個(gè)以上的語句,應(yīng)該用花括弧括起來,以復(fù)合語句形式出現(xiàn).(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。
運(yùn)行結(jié)果:5050注意:(1)控制循環(huán)的條件。循環(huán)控制變量的初值、條件表達(dá)式、增量。(2)循環(huán)體如果包含一個(gè)以上的語句,應(yīng)該用花括弧括起來,以復(fù)合語句形式出現(xiàn)。
do-while語句的特點(diǎn):先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。一般形式:
do
循環(huán)體語句
while(表達(dá)式);執(zhí)行過程:先執(zhí)行一次指定的循環(huán)體語句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”)時(shí),返回重新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。2、do-whiledo-while循環(huán)
一、功能:用于未知循環(huán)執(zhí)行次數(shù)的循環(huán)。二、格式:
do
語句;
while(條件判斷);無分號;有分號;有分號;
do{語句1;語句2;
……;
語句n;}while(條件判斷);無分號;有分號;執(zhí)行流程:1、設(shè)置循環(huán)控制變量的初始值;2、直接執(zhí)行循環(huán)主體,然后檢查條件判斷,若為真,繼續(xù)執(zhí)行循環(huán)主體,若為假,跳出循環(huán)執(zhí)行其它語句;3、每次執(zhí)行完循環(huán)主體內(nèi)的語句后,重新設(shè)置循環(huán)控制變量的值(增加或減少),再回到步驟2判斷是否繼續(xù)執(zhí)行循環(huán)。求1到100的和
#include<stdio.h>
voidmain()
{inti,sum=0;
i=1;
do
{sum=sum+i;
i++;
}
while(i<=100);
printf("%d\\n″,sum);
}運(yùn)行結(jié)果:5050
inti;
intsum=0;開始
i=1;
i<=10
i++;
sum=sum+i;true輸出結(jié)果結(jié)束false三、流程圖:設(shè)置初值循環(huán)主體設(shè)置增減量判斷條件其它語句
ture
false
do-while與while的區(qū)別:設(shè)置循環(huán)變量初值判斷條件改變循環(huán)變量值(增或減)循環(huán)主體true其它語句false
do-while“先做再說”
while“先說再做”while語句和用do-while語句的比較:在一般情況下,用while語句和用do-while語句處理同一問題時(shí),若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是如果while后面的表達(dá)式一開始就為假(0值)時(shí),兩種循環(huán)的結(jié)果是不同的。在一般情況下,用while和do-while語句處理同一問題時(shí),若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣;但是如果while后面的表達(dá)式一開始就為假時(shí),兩種循環(huán)的結(jié)果是不一樣的。例1:main(){intsum=0,i;
scanf(“%d”,&i);
while(i<=10){sum=sum+i;i++;}
printf(“%d”,sum);}例2:main(){intsum=0,i;
scanf(“%d”,&i);do{sum=sum+i;i++;}while(i<=10);
printf(“%d”,sum);}四、do-while程序設(shè)計(jì)舉例例a1:求1+2+3+……+n,并且能控制n的范圍(n>0)。
main(){int
n,i=1,sum=0;
do{printf(“input
n(n>0):\n”);
scanf(“%d”,&n);}while(n<=0);
dosum+=i++;
while(i<=n);
printf(“sum=%d\n”,sum);}例a2:求n的階乘:n!=1*2*…*n,其中n由鍵盤輸入(n>0)。
main(){int
n,i=1,f=1;
do{printf(“input
n(n>0):\n”);
scanf(“%d”,&n);}while(n<=0);
dof*=i++;
while(i<=n);
printf(“%d!=%d\n”,n,f);}例a3:求s=a+aa+aaa+……,其中a是一個(gè)數(shù)字,例:2+22+222+2222+22222,此時(shí)a=2,n=5由鍵盤輸入。
main(){int
n,j=1;longint
a,s=0,t=0;
printf(“a=?,n=?\n”);
scanf(“%ld,%d”,&a,&n);
while(j<=n){t=t+a;
s=s+t;
a=a*10;
j++;}
printf(“%ld\n”,s);}
利用while循環(huán)解法
利用do-while循環(huán)解法
main(){int
n,j=1;longint
a,s=0,t=0;
printf(“a=?,n=?\n”);
scanf(“%ld,%d”,&a,&n);
do{t=t+a;
s=s+t;
a=a*10;
j++;}while(j<=n);
printf(“%ld\n”,s);}例a4:猴子吃橘子問題:猴子第一天摘下若干個(gè)橘子,當(dāng)即吃了一半,又多吃了一個(gè),第二天又將剩下的橘子吃了一半,又多吃一個(gè),以后每天都吃前一天剩下的橘子的一半零一個(gè),到第10天想吃時(shí),只剩下一個(gè)橘子了,求第一天一共摘了多少橘子。
main(){intday,x1,x2;
day=9;x2=1;
do
{x1=(x2+1)*2;
x2=x1;
day--;}while();
printf(“total=%d\n”,x2);}
day>0for語句的格式
for(設(shè)置初值;條件判斷;設(shè)置增減量){語句1;語句2;
……;
語句n;}無分號無分號分號間隔例1:for(i=1;i<=10;i++)sum+=i;
for語句的執(zhí)行步驟:1、第一次進(jìn)入for循環(huán)時(shí),設(shè)置循環(huán)控制變量的初始值;2、檢查條件判斷,若為真,繼續(xù)執(zhí)行循環(huán)主體;若為假,跳出循環(huán)執(zhí)行其它語句;3、每次執(zhí)行完循環(huán)主體,循環(huán)控制變量會根據(jù)增減量的設(shè)置改變循環(huán)控制變量的值,再返回步驟2繼續(xù)判斷條件。3、用for語句實(shí)現(xiàn)循環(huán)一般形式:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句使用for語句的注意事項(xiàng)
for(設(shè)置初值;條件判斷;設(shè)置增減量)1、“設(shè)置初值”可以省略,但應(yīng)在for語句之前給循環(huán)控制變量賦初值。例1:i=1;
for(;i<=10;i++)sum=sum+i;注意:分號不能省2、“條件判斷”可以省略,即不判斷條件,循環(huán)無終止的進(jìn)行下去,也就是認(rèn)為條件始終為真。例2:for(i=1;;i++)sum=sum+i;3、“設(shè)置增減量”也可以省略,但應(yīng)另外設(shè)法保證循環(huán)能正常終止。例3:for(i=1;i<=10;){sum=sum+i;i++;}4、可以同時(shí)省略“設(shè)置初值”和“設(shè)置增減量”,只給循環(huán)條件。例4:i=1;for(;i<=10;){sum=sum+i;i++;}5、三個(gè)部分都可以省略,不設(shè)置初值,不判斷條件,循環(huán)變量不增減,無終止的執(zhí)行循環(huán)。for(;;)6、“設(shè)置初值”除了可以設(shè)置循環(huán)控制變量的初值外,也可以設(shè)置其它變量的值。例5:for(i=1,sum=0;i<=10;i++)sum=sum+i;7、“設(shè)置初值”和“設(shè)置增減量”可以是一個(gè)簡單表達(dá)式,也可以是逗號表達(dá)式,即包含一個(gè)以上的表達(dá)式,中間用逗號間隔。例6:for(i=0,j=10;i<=10;i++,j--)sum=sum+i*j;
for(i=1;i<=10;i++,i++)sum=sum+i;
相當(dāng)于:for(i=1;i<=10;i=i+2)sum=sum+i;
8.表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值為非零,就執(zhí)行循環(huán)。例7:for(i=0;(c=getchar()!=‘\n’;i+=c)例8:for(;(c=getchar()!=‘\n’;)9.C99允許在for語句的“表達(dá)式1”中定義變量并賦值。for(inti=1;i<=100;i++)sum=sum+i;注意:C語言中的for語句比其他語言(如BASIC,PASCAL)中的FOR語句功能強(qiáng)得多??梢园蜒h(huán)體和一些與循環(huán)控制無關(guān)的操作也作為表達(dá)式1或表達(dá)式3出現(xiàn),這樣程序可以短小簡潔。但過分地利用這一特點(diǎn)會使for語句顯得雜亂,可讀性降低,最好不要把與循環(huán)控制無關(guān)的內(nèi)容放到for語句中。注意在for和while語句之后一般沒有分號有分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)體)while(i<100);
i++;for(i=0;i<100;i++);
printf("%d",i);for通常有一個(gè)循環(huán)變量控制循環(huán)的次數(shù),不要在循環(huán)體內(nèi)改變這個(gè)變量4.4.4循環(huán)程序舉例
例用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一項(xiàng)的絕對值小于為止。N-S圖表示算法
#include<stdio.h>
#include<math.h>
voidmain()
{int
s;float
n,t,pi;
t=1;pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{pi=pi+t;n=n+2;s=-s;t=s/n;}
pi=pi*4;
printf(“pi=%10.6f\n”,pi);
}現(xiàn)場編程完成例4.6,例4.9
例4.6:猜數(shù)游戲:先由計(jì)算機(jī)“想”一個(gè)數(shù)請人猜,如果人猜對了,則計(jì)算機(jī)給出提示:“Right!”,否則提示:“Wrong!”,并告訴人所猜的數(shù)是大還是小。例4.9:先由計(jì)算機(jī)“想”一個(gè)1到100之間的數(shù)請人猜,如果人猜對了,則結(jié)束游戲,否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為止。計(jì)算機(jī)記錄人猜的次數(shù),以此來反映猜數(shù)者“猜”的水平。
例:編程設(shè)計(jì)一個(gè)簡單的猜數(shù)游戲:先由計(jì)算機(jī)“想”一個(gè)數(shù)請玩家猜,如果玩家猜對了,則計(jì)算機(jī)給出提示“right!”,否則提示“worng!”,并告訴玩家所猜的數(shù)是大還是小。#include<stdio.h>#include<stdlib.h>int
main(int
argc,char*argv[]){int
magic,guess;magic=rand();
printf("Pleaseguessamagicnumber:");
scanf("%d",&guess);
if(guess>magic){printf("worng!toohigh!\n");}elseif(guess<magic){printf("worng!toolow!\n");}else{printf("Right\n");
printf("Thenumberis:%d\n",magic);}
system("PAUSE"); return0;}指定范圍的隨機(jī)數(shù)如何產(chǎn)生?猜數(shù)游戲用到的庫函數(shù)隨機(jī)函數(shù)rand()#include<stdlib.h>RAND_MAX在stdlib.h中定義,不大于雙字節(jié)整數(shù)的最大值32767產(chǎn)生[0,RAND_MAX]之間的隨機(jī)數(shù)magic=rand();產(chǎn)生[0,b-1]之間的隨機(jī)數(shù)magic=rand()%b;產(chǎn)生[a,a+b-1]之間的隨機(jī)數(shù)magic=rand()%b+a;現(xiàn)場編程完成例4.6,發(fā)現(xiàn)問題猜數(shù)游戲用到的庫函數(shù)隨機(jī)函數(shù)srand為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來實(shí)現(xiàn)對函數(shù)rand所產(chǎn)生的偽隨機(jī)數(shù)的“隨機(jī)化”通過鍵入隨機(jī)數(shù)種子,產(chǎn)生[0,100]之間的隨機(jī)數(shù)scanf("%u",&seed);srand(seed);magic=rand()%100+1;猜數(shù)游戲用到的庫函數(shù)隨機(jī)函數(shù)srand為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來實(shí)現(xiàn)對函數(shù)rand所產(chǎn)生的偽隨機(jī)數(shù)的“隨機(jī)化”使用計(jì)算機(jī)讀取其時(shí)鐘值并把該值自動(dòng)設(shè)置為隨機(jī)數(shù)種子,產(chǎn)生[0,100]之間的隨機(jī)數(shù)函數(shù)time()返回以秒計(jì)算的當(dāng)前時(shí)間值,該值被轉(zhuǎn)換為無符號整數(shù)并用作隨機(jī)數(shù)發(fā)生器的種子#include<time.h>srand(time(NULL));magic=rand()%100+1;
例求Fibonacci數(shù)列前40個(gè)數(shù)。這個(gè)數(shù)列有如下特點(diǎn):第1,2兩個(gè)數(shù)為1,1。從第3個(gè)數(shù)開始,該數(shù)是其前面兩個(gè)數(shù)之和。即:F(1)=1(n=1)F(2)=1(n=2)F(n)=F(n-1)+F(n-2)
(n≥3)
算法如圖所示:例求Fibonacci數(shù)列前40個(gè)數(shù)。
#include<stdio.h>
voidmain()
{longintf1,f2;
inti;
f1=1;f2=1;
for(i=1;i<=20;i++)
{printf(″%12ld%12ld″,f1,f2);
if(i%2==0)printf(″\n″);
f1=f1+f2;
f2=f2+f1;}
}
運(yùn)行結(jié)果:
1123581321345589144233377610987159725844181676510946177112865746368750251
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)計(jì)劃書概要
- 2025年度育兒嫂家庭護(hù)理與育兒嫂職業(yè)發(fā)展規(guī)劃合同
- 2025年度餐飲兼職工作合同模板
- 二零二五年度紅薯種植收購合同農(nóng)作物資料金融支持合作協(xié)議
- 茅臺品牌2025年度全國獨(dú)家代理權(quán)合同簽署
- 二零二五年度金融行業(yè)勞動(dòng)合同違約責(zé)任及風(fēng)險(xiǎn)防范合同
- 2025年度特色民宿租賃合同解除與房東合作終止函
- 2025年度電力設(shè)施運(yùn)維用電合同協(xié)議
- 二零二五年度商業(yè)綜合體物業(yè)勞動(dòng)合同
- 2025年度水利工程質(zhì)保金合同執(zhí)行標(biāo)準(zhǔn)
- U8-EAI二次開發(fā)說明
- Q∕GDW 11612.41-2018 低壓電力線高速載波通信互聯(lián)互通技術(shù)規(guī)范 第4-1部分:物理層通信協(xié)議
- 2006 年全國高校俄語專業(yè)四級水平測試試卷
- 浙江省勞動(dòng)保障監(jiān)察員培訓(xùn)監(jiān)察執(zhí)法程序(林琳)
- 新人教版數(shù)學(xué)四年級下冊全冊表格式教案
- 疫情期間離市外出審批表
- (完整版)全身體格檢查評分標(biāo)準(zhǔn)(表)
- 裝飾裝修工程施工合理化建議和降低成本措施提要:完整
- (改)提高地下室側(cè)墻剛性防水施工合格率_圖文
- 電芯品質(zhì)協(xié)議版本(標(biāo)準(zhǔn)版)
- 食管癌化療臨床路徑(最全版)
評論
0/150
提交評論