版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章選擇結(jié)構(gòu)程序設(shè)計(jì)4.1選擇結(jié)構(gòu)和選擇判斷4.2if語(yǔ)句4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.4邏輯運(yùn)算符和邏輯表達(dá)式4.5條件運(yùn)算符和條件表達(dá)式4.6選擇結(jié)構(gòu)的嵌套4.7switch語(yǔ)句4.8選擇結(jié)構(gòu)舉例第四章選擇結(jié)構(gòu)程序設(shè)計(jì)根據(jù)所指定的條件是否滿(mǎn)足,決定從給定的條件中執(zhí)行相應(yīng)的操作。選擇結(jié)構(gòu)是用if語(yǔ)句實(shí)現(xiàn)的。
If(關(guān)系表達(dá)式)
語(yǔ)句1else
語(yǔ)句2PAB真假PBA真假選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k1k=knk=ki......二分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式 關(guān)系運(yùn)算符為“二目運(yùn)算”符,即將兩個(gè)數(shù)做比較,根據(jù)比較結(jié)果的“真”、“假”決定程序執(zhí)行的順序。1.關(guān)系運(yùn)算符: <、>、<=、>=、==、!=
關(guān)系運(yùn)算符的優(yōu)先級(jí):
<、>、<=、>=、(高)==、!=(低)關(guān)系運(yùn)算符與其它運(yùn)算符的優(yōu)先級(jí):
算術(shù)運(yùn)算符關(guān)系運(yùn)算符賦值運(yùn)算符 如有括號(hào),應(yīng)先做括號(hào)。 用關(guān)系運(yùn)算符連接的表達(dá)式稱(chēng)為關(guān)系表達(dá)式。關(guān)系表達(dá)式的結(jié)果都是邏輯值。例:c>a+b; a>b==c;(a=3)>(b=5);4.1.2.關(guān)系表達(dá)式例: main {inta,b;
scanf(“%d,%d”,&a,&b); if(a<b)a=b;
printf(“max=%d”,a\n);}4.2、邏輯運(yùn)算符和邏輯表達(dá)式:
邏輯運(yùn)算符中的操作數(shù)是邏輯值,結(jié)果也是邏輯值。邏輯運(yùn)算符包括:
&&(邏輯與)
||(邏輯或)!(邏輯非)
其中“&&”和“||”為雙目運(yùn)算,“!”為單目運(yùn)算,僅對(duì)其右邊的對(duì)性進(jìn)行邏輯反運(yùn)算。 運(yùn)算規(guī)則:
a&&b若a、b的值為真,則結(jié)果為真。
a||b若a、b之一為真,則結(jié)果為真。
!a若a為真,則結(jié)果為假。
C語(yǔ)言規(guī)定:以“0”為假,非“0”為真。運(yùn)算規(guī)則
運(yùn)算優(yōu)先級(jí)為:
非 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 與、或 賦值運(yùn)算符 例:5>3&&2||8<4-!0邏輯運(yùn)算真值表
a b !a !b a&&b a||b T T F F T T T F F T F T F T T F F T F F T T F F
4.2.2、條件運(yùn)算符:
在選擇結(jié)構(gòu)中,也可以使用條件運(yùn)算符。條件運(yùn)算符為三目運(yùn)算符“?”。 格式:表達(dá)式1?表達(dá)式2:表達(dá)式3 執(zhí)行條件表達(dá)式的過(guò)程是:
先計(jì)算表達(dá)式1的值,如果該值為真(非0),則計(jì)算表達(dá)式2的值,其該值就是條件表達(dá)式的值,若表達(dá)式1的值為假真(0),則計(jì)算表達(dá)式3的值,并將該值作為條件表達(dá)式的值。例:max=(a>b)?a:b;
功能:如果a>b條件為真,
max=a,
否則
max=b。有:a=5,b=6;則max=a>b?a+5:b-5;if語(yǔ)句(條件選擇語(yǔ)句)if語(yǔ)句的三種形式形式一:格式:if(expression)statement執(zhí)行過(guò)程:4.3
選擇型程序設(shè)計(jì)exprstatement非0=0例:if(x>y)
printf(“%d”,x);/*專(zhuān)業(yè)上判定交會(huì)角*/If(a<30)
printf(“交會(huì)角過(guò)小”);If(a>150)
printf(“交會(huì)角過(guò)大”);形式二:格式:if(expression)statement1elsestatement2執(zhí)行過(guò)程:exprstatement1statement2非0=0例:if(x>y)max=x;elsemax=y;例:if(r>360)r-=360;elser=r;形式三:格式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0執(zhí)行過(guò)程:例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;例:(三角測(cè)量測(cè)角中誤差)if(p=2.5)grade=“四等”
elseif(p=1.8)grade=“三等”
elseif(p=1.0)grade=“二等)如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說(shuō)明:if后面的表達(dá)式類(lèi)型任意語(yǔ)句可以是復(fù)合語(yǔ)句
if(x)if(x!=0)if(!x)if(x==0)例考慮下面程序的輸出結(jié)果:#include<stdio.h>main(){intx,y;
scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;
printf(“%d,%d\n”,x,y);}CompileError!#include<stdio.h>main(){intx,y;
printf("Enteraninteger:");
scanf("%d",&x);y=x;if(y<0)y=-y;
printf("\ninteger:%d--->absolutevalue:%d\n",x,y);}例求一個(gè)數(shù)的絕對(duì)值運(yùn)行:Enteraninteger:-12integer:-12--->absolutevalue:12#include<stdio.h>main(){inta,b;
printf("Enterintegera:");
scanf("%d",&a);
printf("Enterintegerb:");
scanf("%d",&b);if(a==b)
printf("a==b\n");else
printf("a!=b\n");}例輸入兩個(gè)數(shù)并判斷兩數(shù)相等否運(yùn)行:Enterintegera:12
Enterintegerb:12a==b運(yùn)行:Enterintegera:12
Enterintegerb:9a!=b注意:
實(shí)數(shù)比較
if(fabs(a-b)<1e-3)
printf(“aisequalb”);#include<stdio.h>main(){charc;
printf("Enteracharacter:");c=getchar();if(c<0x20)printf("controlcharacter\n");elseif(c>='0'&&c<='9')printf("digit\n");elseif(c>='A'&&c<='Z')printf("capitalletter\n");elseif(c>='a'&&c<='z')printf("lowerletter\n");elseprintf("othercharacter\n");}例判斷輸入字符種類(lèi)運(yùn)行:Enteracharacter:
Thecharacterisacontrolcharacter運(yùn)行:Enteracharacter:8Thecharacterisadigit運(yùn)行:Enteracharacter:DThecharacterisacapitalletter運(yùn)行:Enteracharacter:hThecharacterisalowerletter運(yùn)行:Enteracharacter:F1Thecharacterisothercharacterif語(yǔ)句嵌套:一般形式:if(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement3
內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4內(nèi)嵌if內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4內(nèi)嵌if例輸入兩數(shù)并判斷其大小關(guān)系#include<stdio.h>main(){intx,y;
printf("Enterintegerx,y:");
scanf("%d,%d",&x,&y);
if(x!=y)
if(x>y)printf("X>Y\n");elseprintf("X<Y\n");
else
printf("X==Y\n");}運(yùn)行:Enterintegerx,y:12,23X<Y
Enterintegerx,y:12,6X>YEnterintegerx,y:12,12X==Yif~else配對(duì)原則:缺省{}時(shí),else總是和它上面離它最近的未配對(duì)的if配對(duì)if(……)if(……)if(……)else…...else…...else…...例:if(a==b)if(b==c)
printf(“a==b==c”);else
printf(“a!=b”);修改:if(a==b){if(b==c)
printf(“a==b==c”);}else
printf(“a!=b”);實(shí)現(xiàn)if~else正確配對(duì)方法:加{}例考慮下面程序輸出結(jié)果:main(){intx=100,a=10,b=20;
intv1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;
printf(“%d”,x);}結(jié)果:-1switch語(yǔ)句(開(kāi)關(guān)分支語(yǔ)句)一般形式:switch(表達(dá)式){caseE1:
語(yǔ)句組
1;
break;
…….caseEn:
語(yǔ)句組
n;
break;[default:
語(yǔ)句組;break;]}執(zhí)行過(guò)程:switch表達(dá)式語(yǔ)句組1語(yǔ)句組2語(yǔ)句組n語(yǔ)句組…...E1E2Endefaultcase說(shuō)明:E1,E2,…En是常量表達(dá)式,且值必須互不相同語(yǔ)句標(biāo)號(hào)作用,必須用break跳出case后可包含多個(gè)可執(zhí)行語(yǔ)句,且不必加{}switch可嵌套多個(gè)case可共用一組執(zhí)行語(yǔ)句如:……case‘A’:case‘B’:case‘C’:
printf(“score>60\n”);break;……..例switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}運(yùn)行結(jié)果:score為5時(shí),輸出:
Verygood!Good!Pass!Fail!dataerror!例voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}
printf(“\na=%d,b=%d”,a,b);}運(yùn)行結(jié)果:a=2,b=1#include<stdio.h>main(){intc;
printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}}例根據(jù)輸入字母輸出字符串儒略日的計(jì)算方法floatjde(int
Y,int
M,int
D,int
hour,int
min,intsec)
{
longintf,g,mid1,mid2;
doubleJ,JDE,A;
if(M>=3)
{
f=Y;
g=M;
}
if(M==1||M==2)
{
f=Y-1;
g=M=12;
};
mid1=floor(365.25*f);
mid2=floor(30.6001*(g+1));
A=2-floor(f/100)+floor(f/400);
J=mid1+mid2+D+A+1720994.5;
JDE=J+hour/24.0+min/1440.0+sec/86400.0;
returnJDE;
};作業(yè)1.菜單設(shè)計(jì)
(將上堂課的程序加在一起,利用菜單實(shí)現(xiàn)2.完善上次程序內(nèi)容
(加入相關(guān)的專(zhuān)業(yè)判斷,如限差)3.角度觀測(cè)程序GPS測(cè)量中兩相鄰點(diǎn)間的距離要求
等級(jí)相鄰點(diǎn)最小距離相鄰點(diǎn)最大距離相鄰點(diǎn)平均距離A1002000300B1525070C54015-10D21510-5E1105-2各等級(jí)水準(zhǔn)測(cè)量精度
水準(zhǔn)測(cè)量等級(jí)MΔ的限值MW的限值一等≤±0.45≤±1.0二等≤±1.0≤±2.0三等≤±3.0≤±6.0四等≤±5.0≤±10.01:5千~1:50萬(wàn)地形圖圖號(hào)的構(gòu)成每幅1﹕100萬(wàn)地形圖劃分為:a)1﹕50萬(wàn):2行、2列b)1﹕25萬(wàn):4行、4列c)1﹕10萬(wàn):12行、12列d)1﹕5萬(wàn):24行、24列e)1﹕2.5萬(wàn)48行、48列f)1﹕1萬(wàn):96行、96列g(shù))1﹕5千:192行、192列%C2GConvertionofcartesiancoordinates(X,Y,Z)togeographical%coordinates(phi,lambda,h)onaselectedreferenceellipsoiddisp('ReferenceEllipsoidforGeographicalCoordinates');disp('1.InternationalEllipsoid1924');disp('2.InternationalEllipsoid1967');disp('3.WorldGeodeticSystem1972');disp('4.GeodeticReferenceSystem1980');disp('5.WorldGeodeticSystem1984');i=input('SelectNumberofReferenceEllipsoid(1-5):');if((i<=0)|(i>5)),break,endx=input('X=');y=input('Y=');z=input('Z=');a=[63783886378160637813563781376378137];f=[1/2971/298.2471/298.261/298.2572221011/298.257223563];Cart2GeoCart2Geolambda=atan2(y,x);ex2=(2-f(i))*f(i)/((1-f(i))^2);c=a(i)*sqrt(1+ex2);phi=atan(z/((sqrt(x^2+y^2)*(1-(2-f(i)))*f(i))));h=0.1;oldh=0;whileabs(h-oldh)>1.e-12
oldh=h;N=c/sqrt(1+ex2*cos(phi)^2);phi=atan(z/((sqrt(x^2+y^2)*(1-(2-f(i))*f(i)*N/(N+h)))));h=sqrt(x^2+y^2)/cos(phi)-N;endphi=phi*180/pi;b=zeros(1,3);b(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度水泥生產(chǎn)線環(huán)保設(shè)施維護(hù)合同
- 課題申報(bào)參考:明清時(shí)期陜西古地圖資料集成與數(shù)字活化研究
- 課題申報(bào)參考:馬克思主義文藝育德觀的中國(guó)化時(shí)代化研究
- 2025版生態(tài)農(nóng)業(yè)設(shè)施建設(shè)合同規(guī)范文本3篇
- 2025年度門(mén)窗安裝與智能化家居系統(tǒng)集成合同范本3篇
- 2025年度個(gè)人信用擔(dān)保委托代理合同3篇
- 2025年度內(nèi)參內(nèi)容整合與傳播合同4篇
- 2025年度二手車(chē)買(mǎi)賣(mài)合同車(chē)輛交易信息保密及共享協(xié)議4篇
- 2025年度個(gè)人醫(yī)療貸款合同范本修訂版3篇
- 二零二五年度建筑模板腳手架租賃與拆除服務(wù)合同規(guī)范4篇
- 充電樁項(xiàng)目運(yùn)營(yíng)方案
- 退休人員出國(guó)探親申請(qǐng)書(shū)
- 傷殘撫恤管理辦法實(shí)施細(xì)則
- 高中物理競(jìng)賽真題分類(lèi)匯編 4 光學(xué) (學(xué)生版+解析版50題)
- 西方經(jīng)濟(jì)學(xué)-高鴻業(yè)-筆記
- 幼兒園美術(shù)教育研究策略國(guó)內(nèi)外
- 高中英語(yǔ)選擇性必修一單詞表
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語(yǔ)試題及答案
- 【永輝超市公司員工招聘問(wèn)題及優(yōu)化(12000字論文)】
- 孕婦學(xué)校品管圈課件
評(píng)論
0/150
提交評(píng)論