工學C語言第5章課件_第1頁
工學C語言第5章課件_第2頁
工學C語言第5章課件_第3頁
工學C語言第5章課件_第4頁
工學C語言第5章課件_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第五章選擇結構程序設計制作人:張麗涓第五章制作人:張麗涓5.1關系運算符和關系表達式關系運算符用來比較兩個數(shù)據(jù)的大小,運算的結果為成立或不成立。如果成立,則結果為邏輯值“真”,用整數(shù)“1”表示;如果不成立,則結果為邏輯值“假”,用整數(shù)“0”表示。5.1關系運算符和關系表達式運算符名稱對象數(shù)運算規(guī)則結合性<<=>>===!=小于小于或等于大于大于或等于等于不等于雙目滿足則為真結果為1不滿足為假結果為0自左向右優(yōu)先級一、關系運算符及其優(yōu)先級<<=>>===!=優(yōu)先級相同(高)優(yōu)先級相同(低)算術運算符優(yōu)于關系運算符

優(yōu)于

賦值運算符例:

c>a+b ——c>(a+b)a>b!=c ——(a>b)!=ca==b<c ——a==(b<c)a=b>c ——a=(b>c)如果a=1;b=2;c=3

求各表達式的值?運算符名稱對象數(shù)運算規(guī)則結合性<小于優(yōu)一、關系運算符及其優(yōu)先例

若a=0;b=0.5;x=0.3;則a<=x<=b的值為:

5>2>7>8在C中是允許的,值為:例

inti=1,j=7,a;a=i+(j%4!=0);

則,a=例

‘a(chǎn)’>0結果為:

‘A’>100結果為:00210注意:避免對實數(shù)作相等或不等的判斷;注意區(qū)分“=”與“==”的不同.例 若a=0;b=0.5;x=0.3;例5>2>二、關系表達式關系表達式是由關系運算符連接2個表達式構成的。它的一般形式為:

表達式關系運算符表達式 其中:表達式可以是算術表達式、關系表達式、邏輯表達式、賦值表達式。 例如:a=2,c=‘a(chǎn)’,f=3.0 a+2!=c-100 值為: (a>c)>=(f>4) 值為:11二、關系表達式115.2邏輯運算符和邏輯表達式一、邏輯運算符及其優(yōu)先級邏輯運算符是用來對兩個關系式或邏輯量進行邏輯運算的,運算結果為邏輯值“真(1)”或“假(0)”。在C語言中,邏輯量是用數(shù)值非0和0來表示邏輯真和假的。

邏輯運算符運算符名稱對象數(shù)結合性&&||邏輯與邏輯或雙目自左向右!邏輯非單目自右向左5.2邏輯運算符和邏輯表達式一、邏輯運算符及其優(yōu)先級運算符邏輯運算符運算規(guī)則:aba&&ba||b!a假(0)假(0)真(1)真(1)假(0)真(1)假(0)真(1)假(0)假(0)假(0)真(1)假(0)真(1)真(1)真(1)真(1)真(1)假(0)假(0)

邏輯運算符的優(yōu)先級:

!

算術運算符 關系運算符

&& ||邏輯運算符運算規(guī)則:aba&&ba||b!a假(0)假(0)二、邏輯表達式邏輯表達式是由邏輯運算符連接表達式構成的。它的一般形式為:

表達式雙目邏輯運算符表達式

單目邏輯運算符表達式其中表達式可以是算術表達式、關系表達式、賦值表達式、逗號表達式等。邏輯表達式的運算結果以數(shù)值“1”代表真,“0”代表假;在判斷一個數(shù)值時,其值為“0”即為假,“非0”即為真。二、邏輯表達式例:a=2,c=‘a(chǎn)’,f=3.0,求邏輯表達式的值。

!(c-’a’) f/3&&a-c a<=c||f<=c !(1&&!a) (c>a)&&(f>4) !(1,2) !(c=‘A’) (1,2,3)&&(3,3,3)11110001例:a=2,c=‘a(chǎn)’,f=3.0,求邏輯表達式的值。111

三、邏輯運算的短路特性 邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。例

a&&b&&c——只在a為真時,才判別b的值;

只在a、b都為真時,才判別c的值例

a||b||c——只在a為假時,才判別b的值;

只在a、b都為假時,才判別c的值例

a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)

問,m和n的運算結果結果:m=0,n=1三、邏輯運算的短路特性例a&&b&&c——只在a5.3if語句一、if語句的三種形式

形式一:

if(表達式)

語句;

if(表達式)語句;其中:表達式一般為關系表達式或邏輯表達式,也可以是其它的表達式。語句可以是單一語句或復合語句。exprstatement=1=0

例:if(x>y)printf(“%d”,x);5.3if語句一、if語句的三種形式exprstatem

形式二:

if(表達式)

語句1;

else

語句2;語句1和語句2可以是單一語句或復合語句。exprstatement1statement2=1=0

例:if(x>y) max=x; elsemax=y;形式二:exprstatement1statement

形式三:

if(表達式1)語句1; elseif(表達式2)語句2; elseif(表達式3)語句3;

…… elseif(表達式m)語句m; else語句n;expr1statemnt1=1=0expr2expr3statemntnstatemnt3statemnt2=1=1=0=0

例:if(score>=90)grade=‘A’;elseif(score

>=80)grade

=‘B’;elseif(score

>=70)grade

=‘C’;elseif(score

>=60)grade

=‘D’;elsegrade

=‘F’;形式三:expr1statemnt1=1=0expr2例: if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明:①if后面的表達式類型任意

②語句可以是復合語句

③if(x)if(x!=0)if(!x)if(x==0)例: if(a>b)

{t=a;a=b;b=t;}例: if(a==b&&x==y)printf(“[例]從鍵盤輸入兩個數(shù),求出絕對值較大者并顯示輸出。 #include<stdio.h>

#include<math.h> voidmain() {inta,b,max; printf(“Enter2numbers:”); scanf(“%d,%d”,&a,&b); if(abs(a)>abs(b)) max=a; else max=b; printf(“Max(absolute)=%d\n”,max);

}運行結果:

Enter2numbers:-78,23<CR>

Max(absolute)=-78選擇結構[例]從鍵盤輸入兩個數(shù),求出絕對值較大者并 #inclu[例]判斷輸入的字符是否是“Q”或“q”,若是,顯示Quit。

#include<stdio.h> voidmain() {charc; printf(“Enteracharacter:”); c=getchar(); if(c==‘Q’||c==‘q’)printf(“Quit!\n”);

}運行結果:

Enteracharacter:Q<CR>

Quit![例]判斷輸入的字符是否是“Q”或“q”,若是,顯示Qui 1、將以下條件寫成邏輯表達式

m1-n1≤j≤m1+n1

②X<-5或X>5

③M和N之一為5,但不能同時為5

④-100<k<100,且K為偶數(shù)

2、寫程序,輸入兩個數(shù)并判斷兩數(shù)是否相等,輸出判斷結果。

3、編制一個數(shù)制轉換程序,要求能進行如下的數(shù)制轉換:10進制轉換為16進制

16進制轉換為10進制

10進制轉換為8進制

8進制轉換為10進制課堂練習 1、將以下條件寫成邏輯表達式課堂練習2、

#include<stdio.h> voidmain() {inta,b; printf("Enterintegera:"); scanf("%d",&a); printf("Enterintegerb:"); scanf("%d",&b);

if(a==b) printf("a==b\n"); else printf("a!=b\n"); }運行結果:

Enterintegera:12Enterintegerb:12

a==b運行結果:

Enterintegera:12

Enterintegerb:9

a!=b2、運行結果:運行結果:

3、

#include<stdio.h> voidmain() { intch,a; printf(“\n1.DectoHex\n”);

printf(“2.HextoDec\n”);

printf(“3.DectoOct\n”);

printf(“4.OcttoDec\n”);

printf(“\nEnteryourchoice:”);

scanf(“%d”,&ch);

if(ch=1)

{printf(“\nEnteraninteger(Dec):”);

scanf(“%d”,&a);

printf(“Dec=%dHex=%x\n”,a,a);

}

if(ch=2)

┆3、#include<stdio.h> 【寫程序】提示輸入3個整數(shù),判斷最大者并輸出判斷結果。課堂練習 【寫程序】提示輸入3個整數(shù),判斷最大者并輸出判斷結果。課堂二、if語句的嵌套——if中又包含if。if(expr1)

if(expr2)statement1;

elsestatement2;else

if(expr3)statement3;

elsestatement4;內(nèi)嵌if內(nèi)嵌ifif(expr1)

if(expr2)statement1;

else

statement2;內(nèi)嵌ifif(expr1)

if(expr2)statement1;elsestatement2;

內(nèi)嵌ifif(expr1)statement1;else

if(expr3)statement3;

else

statement4;內(nèi)嵌if二、if語句的嵌套——if中又包含if。if(expr1)if~else配對原則:else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...

當缺少某個分支else時,正確的配對方法:加{}例:

if(a==b)if(b==c)printf(“a==b==c”);

elseprintf(“a!=b”);修改:

if(a==b)

{if(b==c)printf(“a==b==c”);

}

elseprintf(“a!=b”);if~else配對原則:else總是和它上面離它最近的未配[例]y=

編程序,輸入一個x值,輸出y值。

voidmain()

{intx,y;

scanf(“%d”,&x);

if(x<0)y=-1;

else

if(x>0)y=1;

elsey=0;

printf(“x=%d,y=%d\n”,x,y);

}-1(x<0)0(x=0)1(x>0)運行結果:

-5

x=-5,y=-1去掉else,分析運行結果運行結果:

-5

x=-5,y=0[例]-1(x<0)運行結果:去掉else,分析運行結課堂練習 1、對學生的成績進行分級:分數(shù)>=80是優(yōu)良,分數(shù)低于60為不及格,其它為及格。{intscore;printf(“Enteranum:\n”);scanf(“%d”,&score);if(score>=80)printf(“Good!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Failed!\n”);}if(score<60)printf(“Failed!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Good!\n”);if(score<60)printf(“Failed!\n”);elseif(score>=80)printf(“Good!\n”);elseprintf(“Passed!\n”);if(score>=60)if(score>=80) printf(“Good!\n”);elseprintf(“Passed!\n”);elseprintf(“Failed!\n”);if(score>=80)if(score>=60) printf(“Passed!\n”);elseprintf(“Good!\n”);elseprintf(“Failed!\n”);課堂練習 1、對學生的成績進行分級:分數(shù)>=80是優(yōu)良,分數(shù)課堂練習 2、編程:輸入一個數(shù),判斷該數(shù)是>0、<0,還是=0,輸出判斷結果。#include<stdrio.h>voidmain{intx;printf(“Inputyournumber:\n”);scanf(“%d”,&x);if(x>0)printf(“It’sapositive.\n”);elseif(x<0)printf(“It’sanegative.\n”);elseprintf(“It’sazore.\n”);}課堂練習 2、編程:輸入一個數(shù),判斷該數(shù)是>0、<0,還是=三、條件運算符和條件表達式

if(a>b)max=a;if語句

elsemax=b;┊

max=(a>b)?a:b;

條件表達式語句

1.條件運算符及其優(yōu)先級條件運算符是三目運算符,其三個運算對象都是表達式。運算符名稱對象數(shù)運算規(guī)則結合性

?:

條件

三目對e1?e2:e3

e1為真,獲得e2

e1為假,獲得e3

自右向左三、條件運算符和條件表達式運算符名稱對象數(shù)運算規(guī)則結合性

?

條件運算符的優(yōu)先級如下:其它運算符優(yōu)于

條件運算符

優(yōu)于賦值運算符優(yōu)于逗號運算符 例:設a,b,c均為2,則

(a==b)?c=1:0 d=a+1==3?b=a+2:a+32.條件表達式條件表達式是由條件運算符連接表達式構成的。其一般形式為:

表達式1?表達式2:表達式3條件運算符的優(yōu)先級如下:例:設a=2,c=‘a(chǎn)’,f=3.0,求下列條件表達式的值。

x=a>0?a:-ax=f>=2.0?a<=c:a>=cx=!(a!=0)?!a:!!ax=(f>0)?((a>0)?2:1):((a>0)?1:0)

x=(a>=0)?(a=1):(a=0)

x=(c==‘A’)?(0,1):(1,0)211210例:設a=2,c=‘a(chǎn)’,f=3.0,求下列條件表達式的值。5.4switch語句switch是C語言提供的一個多分支選擇語句。

switch語句比通過嵌套實現(xiàn)多分支選擇的if語句更直觀。

switch的一般格式如下:

switch(表達式){caseE1:

語句組1;break;caseE2:

語句組2;break;

…….caseEn:

語句組n;break;[default:

語句組;break;]}

5.4switch語句switch是C語言提供的一

switch語句的控制流程是:首先計算表達式的值,然后依次與每一個case中的常量值進行比較,當發(fā)現(xiàn)與某個值匹配,就執(zhí)行該case后面的語句,直到break為止。若表達式的值與所有case中的常量值都不匹配,則執(zhí)行default后面的語句。switch表達式語句組1語句組2語句組n語句組…...E1E2Endefaultcaseswitch語句的控制流程是:首先計算表達式的值,然說明:①E1,E2,…En是常量表達式,且值必須互不相同②case語句起標號作用,必須用break跳出③case后可包含多個可執(zhí)行語句,且不必加{}④switch可嵌套⑤多個case可共用一組執(zhí)行語句例:switch(ch)

case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;

……..說明:例:switch(ch)例:

switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}score為5時,輸出:

Verygood!Good!Pass!Fail!dataerror!例:switch(score)score為5時,輸出:例: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);}運行結果:a=2,b=1例:voidmain()運行結果: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ù)輸入字母輸出字符串#include<stdio.h>例:根據(jù)輸入字母輸出字符[例]用switch語句實現(xiàn)菜單選擇數(shù)據(jù)轉換功能。#include<stdio.h>

main()

{intch,a;

printf(“\n1.DectoHex\n”);

printf(“2.HextoDec\n”);

printf(“3.DectoOct\n”);

printf(“4.OcttoDec\n”);

printf(“\nEnteryourchoice:”);

scanf(“%d”,&ch);

switch(ch)

{case1:printf(“\nEnteraninteger(Dec):”);

scanf(“%d”,&a);

printf(“Dec=%dHex=%x\n”,a,a);

break;

case2:┆[例]用switch語句實現(xiàn)菜單選擇數(shù)據(jù)轉換功能。[例]輸入一個字符,判斷其是否是A(Abort)或R(Retry)或F(Fail),并輸出相應信息。

#include<stdio.h>voidmain(){charc;printf(“Abort,Retry,Fail?”);c=getchar();switch(c){case‘a(chǎn)’:case‘A’:printf(“Abort!\n”);

break;case‘r’:

case‘R’:printf(“Retry!\n”);

break;case‘f’:

case‘F’:printf(“Fail!\n”);

break;default:

printf(“Erroneouscharacter!\n”);

}

}

運行結果: Abort,Retry,Fail?r<CR>

Retry!

運行結果: Abort,Retry,Fail?e<CR>

Erroneouscharacter![例]輸入一個字符,判斷其是否是A(Abort)或R(Ret5.5程序舉例[例]寫程序,判某一年是否是閏年。year%4?year%100?year%400?leap=1?leap=0leap=1leap=1leap=0noleapyearleapyearNN=0NYYYY5.5程序舉例[例]寫程序,判某一年是否是閏年。year%[例]

寫一個計算器程序,用戶輸入運算數(shù)和四則運算符,輸出計算結果.

當輸入的不是四則運算符或除數(shù)為0時,提示出錯信息.

[例]#include<stdio.h>

voidmain()

{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;#include<stdio.h>

voidmain()case‘/’:if(b==0)printf(“datadividedbyzero\n”);elseprintf(“=%f\n”,a/b); break;default:printf(“inputerror\n”);}}case‘/’:

編寫程序,用戶分別輸入年、月,輸出該月的天數(shù)。

課堂練習 編寫程序,用戶分別輸入年、月,輸出該月的天數(shù)。

課堂練習#include<stdio.h>

main()

{intyear,month,day;printf(“inputyear”);

scanf(“%d”,&year);

printf(“inputmonth”);scanf(“%d”,&month);

switch(month)

{case1:

case3:case5:#include<stdio.h>

main()

{incase7:

case8:case10:case12:day=31;break;case4:

case6:case9:case11:day=30;break;

case2: if((year%4==0&&year%100!=0) ||(year%400==0))day=29; elseday=28;}printf(“%dyear%dmonth=%day\n”, year,month,day);}case7:

case8:第五章選擇結構程序設計制作人:張麗涓第五章制作人:張麗涓5.1關系運算符和關系表達式關系運算符用來比較兩個數(shù)據(jù)的大小,運算的結果為成立或不成立。如果成立,則結果為邏輯值“真”,用整數(shù)“1”表示;如果不成立,則結果為邏輯值“假”,用整數(shù)“0”表示。5.1關系運算符和關系表達式運算符名稱對象數(shù)運算規(guī)則結合性<<=>>===!=小于小于或等于大于大于或等于等于不等于雙目滿足則為真結果為1不滿足為假結果為0自左向右優(yōu)先級一、關系運算符及其優(yōu)先級<<=>>===!=優(yōu)先級相同(高)優(yōu)先級相同(低)算術運算符優(yōu)于關系運算符

優(yōu)于

賦值運算符例:

c>a+b ——c>(a+b)a>b!=c ——(a>b)!=ca==b<c ——a==(b<c)a=b>c ——a=(b>c)如果a=1;b=2;c=3

求各表達式的值?運算符名稱對象數(shù)運算規(guī)則結合性<小于優(yōu)一、關系運算符及其優(yōu)先例

若a=0;b=0.5;x=0.3;則a<=x<=b的值為:

5>2>7>8在C中是允許的,值為:例

inti=1,j=7,a;a=i+(j%4!=0);

則,a=例

‘a(chǎn)’>0結果為:

‘A’>100結果為:00210注意:避免對實數(shù)作相等或不等的判斷;注意區(qū)分“=”與“==”的不同.例 若a=0;b=0.5;x=0.3;例5>2>二、關系表達式關系表達式是由關系運算符連接2個表達式構成的。它的一般形式為:

表達式關系運算符表達式 其中:表達式可以是算術表達式、關系表達式、邏輯表達式、賦值表達式。 例如:a=2,c=‘a(chǎn)’,f=3.0 a+2!=c-100 值為: (a>c)>=(f>4) 值為:11二、關系表達式115.2邏輯運算符和邏輯表達式一、邏輯運算符及其優(yōu)先級邏輯運算符是用來對兩個關系式或邏輯量進行邏輯運算的,運算結果為邏輯值“真(1)”或“假(0)”。在C語言中,邏輯量是用數(shù)值非0和0來表示邏輯真和假的。

邏輯運算符運算符名稱對象數(shù)結合性&&||邏輯與邏輯或雙目自左向右!邏輯非單目自右向左5.2邏輯運算符和邏輯表達式一、邏輯運算符及其優(yōu)先級運算符邏輯運算符運算規(guī)則:aba&&ba||b!a假(0)假(0)真(1)真(1)假(0)真(1)假(0)真(1)假(0)假(0)假(0)真(1)假(0)真(1)真(1)真(1)真(1)真(1)假(0)假(0)

邏輯運算符的優(yōu)先級:

!

算術運算符 關系運算符

&& ||邏輯運算符運算規(guī)則:aba&&ba||b!a假(0)假(0)二、邏輯表達式邏輯表達式是由邏輯運算符連接表達式構成的。它的一般形式為:

表達式雙目邏輯運算符表達式

單目邏輯運算符表達式其中表達式可以是算術表達式、關系表達式、賦值表達式、逗號表達式等。邏輯表達式的運算結果以數(shù)值“1”代表真,“0”代表假;在判斷一個數(shù)值時,其值為“0”即為假,“非0”即為真。二、邏輯表達式例:a=2,c=‘a(chǎn)’,f=3.0,求邏輯表達式的值。

!(c-’a’) f/3&&a-c a<=c||f<=c !(1&&!a) (c>a)&&(f>4) !(1,2) !(c=‘A’) (1,2,3)&&(3,3,3)11110001例:a=2,c=‘a(chǎn)’,f=3.0,求邏輯表達式的值。111

三、邏輯運算的短路特性 邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。例

a&&b&&c——只在a為真時,才判別b的值;

只在a、b都為真時,才判別c的值例

a||b||c——只在a為假時,才判別b的值;

只在a、b都為假時,才判別c的值例

a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)

問,m和n的運算結果結果:m=0,n=1三、邏輯運算的短路特性例a&&b&&c——只在a5.3if語句一、if語句的三種形式

形式一:

if(表達式)

語句;

if(表達式)語句;其中:表達式一般為關系表達式或邏輯表達式,也可以是其它的表達式。語句可以是單一語句或復合語句。exprstatement=1=0

例:if(x>y)printf(“%d”,x);5.3if語句一、if語句的三種形式exprstatem

形式二:

if(表達式)

語句1;

else

語句2;語句1和語句2可以是單一語句或復合語句。exprstatement1statement2=1=0

例:if(x>y) max=x; elsemax=y;形式二:exprstatement1statement

形式三:

if(表達式1)語句1; elseif(表達式2)語句2; elseif(表達式3)語句3;

…… elseif(表達式m)語句m; else語句n;expr1statemnt1=1=0expr2expr3statemntnstatemnt3statemnt2=1=1=0=0

例:if(score>=90)grade=‘A’;elseif(score

>=80)grade

=‘B’;elseif(score

>=70)grade

=‘C’;elseif(score

>=60)grade

=‘D’;elsegrade

=‘F’;形式三:expr1statemnt1=1=0expr2例: if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明:①if后面的表達式類型任意

②語句可以是復合語句

③if(x)if(x!=0)if(!x)if(x==0)例: if(a>b)

{t=a;a=b;b=t;}例: if(a==b&&x==y)printf(“[例]從鍵盤輸入兩個數(shù),求出絕對值較大者并顯示輸出。 #include<stdio.h>

#include<math.h> voidmain() {inta,b,max; printf(“Enter2numbers:”); scanf(“%d,%d”,&a,&b); if(abs(a)>abs(b)) max=a; else max=b; printf(“Max(absolute)=%d\n”,max);

}運行結果:

Enter2numbers:-78,23<CR>

Max(absolute)=-78選擇結構[例]從鍵盤輸入兩個數(shù),求出絕對值較大者并 #inclu[例]判斷輸入的字符是否是“Q”或“q”,若是,顯示Quit。

#include<stdio.h> voidmain() {charc; printf(“Enteracharacter:”); c=getchar(); if(c==‘Q’||c==‘q’)printf(“Quit!\n”);

}運行結果:

Enteracharacter:Q<CR>

Quit![例]判斷輸入的字符是否是“Q”或“q”,若是,顯示Qui 1、將以下條件寫成邏輯表達式

m1-n1≤j≤m1+n1

②X<-5或X>5

③M和N之一為5,但不能同時為5

④-100<k<100,且K為偶數(shù)

2、寫程序,輸入兩個數(shù)并判斷兩數(shù)是否相等,輸出判斷結果。

3、編制一個數(shù)制轉換程序,要求能進行如下的數(shù)制轉換:10進制轉換為16進制

16進制轉換為10進制

10進制轉換為8進制

8進制轉換為10進制課堂練習 1、將以下條件寫成邏輯表達式課堂練習2、

#include<stdio.h> voidmain() {inta,b; printf("Enterintegera:"); scanf("%d",&a); printf("Enterintegerb:"); scanf("%d",&b);

if(a==b) printf("a==b\n"); else printf("a!=b\n"); }運行結果:

Enterintegera:12Enterintegerb:12

a==b運行結果:

Enterintegera:12

Enterintegerb:9

a!=b2、運行結果:運行結果:

3、

#include<stdio.h> voidmain() { intch,a; printf(“\n1.DectoHex\n”);

printf(“2.HextoDec\n”);

printf(“3.DectoOct\n”);

printf(“4.OcttoDec\n”);

printf(“\nEnteryourchoice:”);

scanf(“%d”,&ch);

if(ch=1)

{printf(“\nEnteraninteger(Dec):”);

scanf(“%d”,&a);

printf(“Dec=%dHex=%x\n”,a,a);

}

if(ch=2)

┆3、#include<stdio.h> 【寫程序】提示輸入3個整數(shù),判斷最大者并輸出判斷結果。課堂練習 【寫程序】提示輸入3個整數(shù),判斷最大者并輸出判斷結果。課堂二、if語句的嵌套——if中又包含if。if(expr1)

if(expr2)statement1;

elsestatement2;else

if(expr3)statement3;

elsestatement4;內(nèi)嵌if內(nèi)嵌ifif(expr1)

if(expr2)statement1;

else

statement2;內(nèi)嵌ifif(expr1)

if(expr2)statement1;elsestatement2;

內(nèi)嵌ifif(expr1)statement1;else

if(expr3)statement3;

else

statement4;內(nèi)嵌if二、if語句的嵌套——if中又包含if。if(expr1)if~else配對原則:else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...

當缺少某個分支else時,正確的配對方法:加{}例:

if(a==b)if(b==c)printf(“a==b==c”);

elseprintf(“a!=b”);修改:

if(a==b)

{if(b==c)printf(“a==b==c”);

}

elseprintf(“a!=b”);if~else配對原則:else總是和它上面離它最近的未配[例]y=

編程序,輸入一個x值,輸出y值。

voidmain()

{intx,y;

scanf(“%d”,&x);

if(x<0)y=-1;

else

if(x>0)y=1;

elsey=0;

printf(“x=%d,y=%d\n”,x,y);

}-1(x<0)0(x=0)1(x>0)運行結果:

-5

x=-5,y=-1去掉else,分析運行結果運行結果:

-5

x=-5,y=0[例]-1(x<0)運行結果:去掉else,分析運行結課堂練習 1、對學生的成績進行分級:分數(shù)>=80是優(yōu)良,分數(shù)低于60為不及格,其它為及格。{intscore;printf(“Enteranum:\n”);scanf(“%d”,&score);if(score>=80)printf(“Good!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Failed!\n”);}if(score<60)printf(“Failed!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Good!\n”);if(score<60)printf(“Failed!\n”);elseif(score>=80)printf(“Good!\n”);elseprintf(“Passed!\n”);if(score>=60)if(score>=80) printf(“Good!\n”);elseprintf(“Passed!\n”);elseprintf(“Failed!\n”);if(score>=80)if(score>=60) printf(“Passed!\n”);elseprintf(“Good!\n”);elseprintf(“Failed!\n”);課堂練習 1、對學生的成績進行分級:分數(shù)>=80是優(yōu)良,分數(shù)課堂練習 2、編程:輸入一個數(shù),判斷該數(shù)是>0、<0,還是=0,輸出判斷結果。#include<stdrio.h>voidmain{intx;printf(“Inputyournumber:\n”);scanf(“%d”,&x);if(x>0)printf(“It’sapositive.\n”);elseif(x<0)printf(“It’sanegative.\n”);elseprintf(“It’sazore.\n”);}課堂練習 2、編程:輸入一個數(shù),判斷該數(shù)是>0、<0,還是=三、條件運算符和條件表達式

if(a>b)max=a;if語句

elsemax=b;┊

max=(a>b)?a:b;

條件表達式語句

1.條件運算符及其優(yōu)先級條件運算符是三目運算符,其三個運算對象都是表達式。運算符名稱對象數(shù)運算規(guī)則結合性

?:

條件

三目對e1?e2:e3

e1為真,獲得e2

e1為假,獲得e3

自右向左三、條件運算符和條件表達式運算符名稱對象數(shù)運算規(guī)則結合性

?

條件運算符的優(yōu)先級如下:其它運算符優(yōu)于

條件運算符

優(yōu)于賦值運算符優(yōu)于逗號運算符 例:設a,b,c均為2,則

(a==b)?c=1:0 d=a+1==3?b=a+2:a+32.條件表達式條件表達式是由條件運算符連接表達式構成的。其一般形式為:

表達式1?表達式2:表達式3條件運算符的優(yōu)先級如下:例:設a=2,c=‘a(chǎn)’,f=3.0,求下列條件表達式的值。

x=a>0?a:-ax=f>=2.0?a<=c:a>=cx=!(a!=0)?!a:!!ax=(f>0)?((a>0)?2:1):((a>0)?1:0)

x=(a>=0)?(a=1):(a=0)

x=(c==‘A’)?(0,1):(1,0)211210例:設a=2,c=‘a(chǎn)’,f=3.0,求下列條件表達式的值。5.4switch語句switch是C語言提供的一個多分支選擇語句。

switch語句比通過嵌套實現(xiàn)多分支選擇的if語句更直觀。

switch的一般格式如下:

switch(表達式){caseE1:

語句組1;break;caseE2:

語句組2;break;

…….caseEn:

語句組n;break;[default:

語句組;break;]}

5.4switch語句switch是C語言提供的一

switch語句的控制流程是:首先計算表達式的值,然后依次與每一個case中的常量值進行比較,當發(fā)現(xiàn)與某個值匹配,就執(zhí)行該case后面的語句,直到break為止。若表達式的值與所有case中的常量值都不匹配,則執(zhí)行default后面的語句。switch表達式語句組1語句組2語句組n語句組…...E1E2Endefaultcaseswitch語句的控制流程是:首先計算表達式的值,然說明:①E1,E2,…En是常量表達式,且值必須互不相同②case語句起標號作用,必須用break跳出③case后可包含多個可執(zhí)行語句,且不必加{}④switch可嵌套⑤多個case可共用一組執(zhí)行語句例:switch(ch)

case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;

……..說明:例:switch(ch)例:

switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}score為5時,輸出:

Verygood!Good!Pass!Fail!dataerror!例:switch(score)score為5時,輸出:例: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);}運行結果:a=2,b=1例:voidmain()運行結果: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':

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論