




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
選擇結(jié)構(gòu)根據(jù)給定的條件是否滿足,決定從給定的條件選擇其一。分為:二路分支多路分支if…else…語句switch語句關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符>大于
>=大于等于<小于
<=小于等于==等于
!=不等于說明:(1)六個(gè)關(guān)系運(yùn)算符都是雙目運(yùn)算符;(2)由一個(gè)關(guān)系運(yùn)算符連接兩個(gè)對(duì)象形成的表達(dá)式稱為關(guān)系表達(dá)式,這兩個(gè)運(yùn)算對(duì)象可以是算術(shù)表達(dá)式、字符表達(dá)式等。運(yùn)算對(duì)象為字符數(shù)據(jù)時(shí),比較按其ASCII碼進(jìn)行。例:inti=3,j=5;i*i+j*j>100;例:‘a(chǎn)’>‘b’(3)關(guān)系表達(dá)式的值可以作為整數(shù)值參與運(yùn)算(4)與數(shù)學(xué)表達(dá)式的區(qū)別(5)注意區(qū)分“=”與“==”的差別例:inta=3,b=2,c=1,f;f=a>b>c;例:3<x<100邏輯運(yùn)算符與邏輯表達(dá)式在C語言中有三個(gè)邏輯運(yùn)算符&&邏輯與||邏輯或!邏輯非兩個(gè)操作對(duì)象同時(shí)為真時(shí),表達(dá)式的值為真。兩個(gè)操作對(duì)象之一為真時(shí),表達(dá)式的值為真。當(dāng)操作對(duì)象的值為真,則表達(dá)式的值為假。說明:(1)&&和||是雙目運(yùn)算符,!是單目運(yùn)算符(2)&&和||的運(yùn)算級(jí)別低于關(guān)系運(yùn)算符,!的運(yùn)算級(jí)別高于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,
注意:
!的結(jié)合方向是從右向左。
&&和||的結(jié)合方向是從左向右,(3)不能確定的情況下,添加括號(hào)保證運(yùn)算次序。
盡量避免復(fù)雜煩瑣的邏輯表達(dá)式。例:a=10;b=20;c=30;a=(--b<=a)||(a+b!=c);a=?b=?a=1b=19(5)在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只有在必須執(zhí)行下一個(gè)邏輯運(yùn)
算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例:intx=-1;
執(zhí)行了++x||++x||++x后,x的值是?
x=1(4)參加邏輯運(yùn)算的運(yùn)算對(duì)象可以是0(“假”)或
任何非0的數(shù)值(“真”);但運(yùn)算后的結(jié)果和關(guān)系運(yùn)算的結(jié)果一樣,只能是邏輯值0和1。1.簡(jiǎn)單的if語句形式:if(表達(dá)式)語句執(zhí)行過程:如果表達(dá)式值非0,執(zhí)行該語句,然后執(zhí)行if的下一個(gè)語句;否則直接執(zhí)行if的下一個(gè)語句。例:
main(){inta,b,max;printf(”\n請(qǐng)輸入兩個(gè)數(shù):”);scanf(”%d%d”,&a,&b);
max=a;if(max<b)max=b;printf(”max=%d”,max);}if語句例:輸入三個(gè)整數(shù)x、y、z,把這三個(gè)數(shù)由小到大輸出。輸出x,y,x的值交換x,zx>z交換x,yx>y輸入x,y,zYNYN交換y,zy>zYN#include<stdio.h>main(){intx,y,z,t;printf(“Pleaseinputthex,y,z:”);scanf(“%d%d%d”,&x,&y,&z);
if(x>y){t=x;x=y;y=t;}if(x>z){t=x;x=z;z=t;}if(y>z){t=y;y=z;z=t;}printf(“Smalltobig:%d%d%d\n”,x,y,z);}if語句2.if/else語句形式:if(表達(dá)式)語句1else語句2執(zhí)行流程:
如果表達(dá)式值非0,執(zhí)行語句1;否則,執(zhí)行語句2;無論執(zhí)行了哪一路分支之后,都執(zhí)行if的下一條語句。例
if(x>y)max=x;elsemax=y;printf(”max=%d”,max);例.判斷給定的某一年是否是閏年。分析:如果某年能被4整除而不能被100整除,或者能被400整除,那么該年就是閏年,否則就是平年。
if(year%4==0&&year%100!=0||year%400==0)#include<stdio.h>main(){intyear,leap=0;printf("\n請(qǐng)輸入年份(yyyy):");scanf("%d",&year);
/*判斷該年是否是閏年*/
if(year%4==0&&year%100!=0||year%400==0)
leap=1;
if(leap)
/*leap=1,即該年是閏年*/printf("%d年是閏年.\n",year);
else
/*leap=0,即該年是平年*/printf("%d年是平年.\n",year);}例.制作簡(jiǎn)單的猜數(shù)字游戲。程序運(yùn)行時(shí)自動(dòng)產(chǎn)生1~5之間的隨機(jī)數(shù),接著等待鍵盤輸入猜的數(shù)字。如果猜對(duì)了,顯示“猜對(duì)了”相關(guān)信息;否則,如果猜錯(cuò)了,則顯示“猜錯(cuò)了”相關(guān)信息。分析:如何產(chǎn)生1~5之間的隨機(jī)數(shù)?1)隨機(jī)數(shù)產(chǎn)生:C語言提供srand()函數(shù),配合rand()函數(shù)可產(chǎn)生介于0~32767之間的隨機(jī)數(shù)(函數(shù)均包含在stdlib.h中)。srand((unsigned)time(NULL));
/*以做隨機(jī)數(shù)產(chǎn)生器的種子,time()函數(shù)包含在time.h中
*/guess=rand();
/*以上面得到的種子產(chǎn)生0~32767的整數(shù)*/2)1~5之間的隨機(jī)數(shù):首先用rand()函數(shù)產(chǎn)生的隨機(jī)數(shù),然后對(duì)5求余(rand()%5),產(chǎn)生0~4之間的整數(shù),然后再加1,即rand()%5+1就產(chǎn)生1~5之間的整數(shù)。#include<stdio.h>#include<stdlib.h>#include<time.h>main(){intdata,guess;
srand((unsigned)time(NULL));data=rand()%5+1;printf("請(qǐng)輸入要猜的數(shù)字(限1-5):");scanf("%d",&guess);
if(guess==data)printf("猜對(duì)了!~_~,正確數(shù)字為%d!\n",data);
elseprintf("猜錯(cuò)了!0_0,正確數(shù)字為%d!\n",data);}
例:一個(gè)5位數(shù),判斷它是不是回文數(shù),即12321是回文數(shù),個(gè)位與萬位相同,十位與千位相同。分析:分解出每一位數(shù)(萬位、千位、十位和個(gè)位),然后判斷。輸出不是回文輸出是回文ge=x%10shi=x%100/10qian=x%10000/1000輸入的數(shù)字不是5位數(shù)wan=x/10000輸入長(zhǎng)整數(shù)wan>0&&wan<10wan==ge&&qian==shiYNYNmain(){longx;intge,shi,qian,wan;printf("pleaseinputthe5bitsnumber:\n");scanf("%ld",&x);wan=x/10000;
if(wan>0&&wan<10){qian=x%10000/1000;shi=x%100/10;ge=x%10;
if(ge==wan&&shi==qian)
printf("Itispalindromicnumber
!\n");
elseprintf("Itisnotpalindromicnumber
!\n");}
else printf(“Thenumberisnot5bits!\n");}3.if(表達(dá)式1)語句1
elseif(表達(dá)式2)語句2
elseif(表達(dá)式3)語句3
elseif(表達(dá)式m)語句melse語句n...例:有一個(gè)函數(shù)如下:x(x<1)y=2x+1(1≤x<10)5x-17(x≥10)編程序,輸入x值,輸出y值main(){floatx,y;printf("Inputx:");scanf("%f",&x);
if(x<1)y=x;
elseif(x<10)y=2*x+1;
elsey=5*x-17;printf("y=%f\n",y);}分析:根據(jù)輸入字符的ASCII碼來判別類型。
例.編寫程序,要求判別鍵盤輸入字符的類別。#include"stdio.h"main(){charc;printf("\nPleaseinputacharacter
:\n");c=getchar();
if(c<32)
printf("Itisacontrolcharacter
!\n");
elseif(c>=’0’&&c<=’9’)
printf("Itisadigit!\n");
elseif(c>=’A’&&c<=’Z’)printf("Itisacapitalletter!\n");
elseif(c>=’a’&&c<=’z’)
printf("Itisalowerletter!\n");
elseprintf("Itisothercharacter!\n");}說明:(1)三種形式的if語句中都出現(xiàn)的“表達(dá)式”,不僅只限于邏輯和關(guān)系表達(dá)式,還可以是任何類型的;(2)if語句中,判斷條件表達(dá)式必須用()括起來,
條件后面不加分號(hào),但語句之后有分號(hào);(4)if和else后的語句可以只有一條,也可以使用{}包括的幾條語句構(gòu)成的復(fù)合語句。(3)else不是語句,不能單獨(dú)使用,與if配對(duì)使用;(5)if(x)if(x!=0)(6)if(!x)if(x==0)例考慮下面程序的輸出結(jié)果#include<stdio.h>main(){intx,y,t;scanf(“%d%d”,&x,&y);if(x>y)t=y;y=x;x=t;elsex++;y++;printf(“%d,%d\n”,x,y);}Compile
Error!if語句的嵌套在if語句中:
if(表達(dá)式)語句1else語句2語句1和語句2都可以是另外一條if語句if(表達(dá)式1)
if(表達(dá)式2)語句1
else語句2else
if(表達(dá)式3)語句3
else語句4if(表達(dá)式1)語句1else
if(表達(dá)式2)語句2
else語句3if(表達(dá)式1)
if(表達(dá)式2)語句1
else語句2else語句3說明:(1)else總是與最近的if匹配;(2)else不能單獨(dú)出現(xiàn),總是與if配對(duì)使用。例:main(){intx=2,y=-1,z=2;
if(x<y)if(y<0)z=0;elsez+=1;printf(“z=%d\n”,z);}
z=2編寫原則:1、順序執(zhí)行的語句對(duì)齊;2、選擇體向內(nèi)縮進(jìn)3~4字符;3、若選擇體內(nèi)嵌套if語句,則該
if語句的選擇體亦繼續(xù)向內(nèi)縮進(jìn);4、若選擇體內(nèi)的語句多于1條,則必須使用{}括起來;5、原則上,選擇體內(nèi)只有一條語句時(shí),可以不使用{}括起來,但如果該語句分成多行編寫時(shí),則使用{}具有更強(qiáng)的可讀性。main(){……;if(a<b){……;if(c<d){ ……;}}else{……;}}條件運(yùn)算符與條件表達(dá)式格式:表達(dá)式1?表達(dá)式2:表達(dá)式3意義:如果表達(dá)式1非0,此表達(dá)式取表達(dá)式2的值如果表達(dá)式1為0,此表達(dá)式取表達(dá)式3的值。例1:intm1=5,m2=3;m1>m2?(m1=1):(m2=-1)m1=?m2=?m1=1m2=3intx=1,y=2,z;z=x>y?++x:y++;x=?y=?z=?x=1y=3z=2例2:switch語句用來實(shí)現(xiàn)多路分支形式:switch(表達(dá)式){
case
常量1:語句序列1;
break;
case
常量2:語句序列2;
break;
┇
┇
case
常量n:語句序列n;
break;
default:
語句序列n+1;}執(zhí)行過程:首先計(jì)算表達(dá)式的值,若該值與某個(gè)case后面的常量相等,則執(zhí)行其后的語句序列,遇到break語句時(shí),跳出switch語句;如果表達(dá)式的值與所有常量都不相等,若存在default則執(zhí)行其后的語句序列,否則什么也不做。說明:switch語句中的表達(dá)式可以為任何類型,一般為整型或字符型,相應(yīng)地常量的類型應(yīng)與其相同;2.同一switch語句的各case常量值,必須互不相同;3.case常量相當(dāng)于語句標(biāo)號(hào);執(zhí)行switch語句時(shí),找到與表達(dá)式值相等的某case常量,從此標(biāo)號(hào)開始執(zhí)行下去,對(duì)以后的標(biāo)號(hào)不再比較,直到“}”為止;一般應(yīng)該在每個(gè)case后的語句序列跟一個(gè)break語句以便跳出switch正確實(shí)現(xiàn)多分支,可認(rèn)為break語句是case中的一部分。4.各個(gè)case后面的default語句出現(xiàn)的次序不影響結(jié)果;5.多個(gè)case可以共用一組執(zhí)行語句.例main(){inti=10;switch(i){case9:i+=1;case10:i+=1;case11:i+=1;default:i+=1;}printf(“i=%d”,i);}i=13例main(){inta=1,b=0;switch(a){case1:switch(b){case0:printf(“**0**”);break;case1:printf(“**1**”);break;}case2:printf(“**2**”);break;}}**0****2**分析:求解此方程的解,應(yīng)該考慮到各種可能的情況:當(dāng)a=0時(shí),不是二次方程。否則:1)當(dāng)b2-4ac=0時(shí),方程有兩個(gè)相等的實(shí)根。2)當(dāng)b2-4ac>0時(shí),方程有兩個(gè)不相等的實(shí)根。3)當(dāng)b2-4ac<0時(shí),方程有兩個(gè)共軛的復(fù)根。選擇分支結(jié)構(gòu)程序舉例例.求ax2+bx+c=0方程的解。#include<stdio.h>#include<math.h>main(){
floata,b,c,disc,x1,x2,realpart,imagpart;
printf("\n請(qǐng)輸入方程的三個(gè)系數(shù):(a=,b=,c=)\n");
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
if(fabs(a)<=1e-6)
printf("該方程沒有實(shí)根。\n");
elsedisc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("該方程有兩個(gè)相等的實(shí)根:x1=x2=%8.4f\n",-b/(2*a));
elseif(disc>1e-6)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("該方程有兩個(gè)不相等的實(shí)根:\nx1=%8.4f,x2=%8.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("該方程有兩個(gè)復(fù)根:\n");
printf("x1=%8.4f+%8.4fi\n",realpart,imagpart);
printf("x2=%8.4f-%8.4fi\n",realpart,imagpart);
}}例.一個(gè)超市商品信息管理系統(tǒng),試編寫主程序部分實(shí)現(xiàn)簡(jiǎn)單的菜單選擇功能。#include”stdio.h”main(){intchoice;printf("\n\n\n********超市管理系統(tǒng)********\n\n");printf("1.錄入商品信息\n\n");printf("2.打印商品信息\n\n");printf("3.更新商品信息\n\n");printf("4.商品信息查詢\n\n");printf("5.商品信息統(tǒng)計(jì)\n\n");printf("6.商品銷售排行\(zhòng)n\n");printf("0.退出系統(tǒng)\n\n");printf("請(qǐng)選擇(0-6):");scanf("%d",&choice);
switch(choice){case1:
input_message();break;
/*錄入模塊*/
case2:
output_message();break;
/*輸出模塊*/
case3:
renew_message();break;
/*更新模塊*/
case4:
inquire_message();break;
/*查詢模塊*/
case5:
count_message();break;
/*統(tǒng)計(jì)模塊*/
case6:
sort_message();break;
/*排序模塊*/
case0:break;
/*退出系統(tǒng)*/}}
例.請(qǐng)輸入星期幾的第一個(gè)字母來判斷是星期幾,如果第一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 糖尿病護(hù)理常規(guī)及健康教育
- 北師大版一年級(jí)上冊(cè)期末模擬測(cè)試語文試卷
- 安徽省蚌埠二中2015-2016學(xué)年高一地理上學(xué)期期中試題
- 濰坊工商職業(yè)學(xué)院《護(hù)理學(xué)綜合實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 延邊大學(xué)《小學(xué)科學(xué)課程標(biāo)準(zhǔn)與教材研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆農(nóng)業(yè)大學(xué)科學(xué)技術(shù)學(xué)院《嬰幼兒科學(xué)發(fā)展與教育》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國礦業(yè)大學(xué)(北京)《信息安全實(shí)驗(yàn)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江機(jī)電職業(yè)技術(shù)學(xué)院《類型電影研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南林業(yè)職業(yè)技術(shù)學(xué)院《入侵生態(tài)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江紡織服裝職業(yè)技術(shù)學(xué)院《市政工程預(yù)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 大模型備案-落實(shí)算法安全主體責(zé)任基本情況-XX集團(tuán)有限公司
- 重大危險(xiǎn)源安全管理培訓(xùn)
- 封閉管理的疫情防控課件
- 離婚協(xié)議書正規(guī)打?。?025年版)
- 世界各地文化創(chuàng)意產(chǎn)業(yè)發(fā)展報(bào)告表
- 房地產(chǎn)交易律師見證書范文
- 教師如何使用AI開展教學(xué)DeepSeek使用指南人工智能 課件
- 現(xiàn)代商業(yè)環(huán)境下醫(yī)療器械的網(wǎng)絡(luò)營銷實(shí)踐案例分析
- 應(yīng)急預(yù)案的協(xié)作與協(xié)調(diào)機(jī)制
- 三年級(jí)小數(shù)加減法豎式計(jì)算題庫
- 《小兒推拿學(xué)》考試復(fù)習(xí)題及答案
評(píng)論
0/150
提交評(píng)論