C04-選擇程序設(shè)計(jì)_第1頁(yè)
C04-選擇程序設(shè)計(jì)_第2頁(yè)
C04-選擇程序設(shè)計(jì)_第3頁(yè)
C04-選擇程序設(shè)計(jì)_第4頁(yè)
C04-選擇程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論