中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

全國信息學奧賽高中組入門基礎講解第四章 分支結構程序 課件(共41張PPT)

資源下載
  1. 二一教育資源

全國信息學奧賽高中組入門基礎講解第四章 分支結構程序 課件(共41張PPT)

資源簡介

(共41張PPT)
《C程序設計》
第四章 分支程序設計
——最常用的C程序設計
關系運算符:在程序中經常需要比較兩個量的大小關系,以決定程序下一步的工作。比較兩個量的運算符稱為關系運算符。
復習運算符的優先次序……
關系運算符和表達式
在C語言中有以下關系運算符:
1) < 小于
2) <= 小于或等于
3) > 大于
4) >= 大于或等于
5) == 等于
6) != 不等于
關系運算符都是雙目運算符,其結合性均為左結合。關系運算符的優先級低于算術運算符,高于賦值運算符。在六個關系運算符中,前四個<,<=,>,>=的優先級相同,高于==和!=,==和!=的優先級相同。
關系運算符及其優先次序
關系表達式的一般形式為:
表達式 關系運算符 表達式
例如:
a+b > c-d
x > 3/2
‘a’+1 < c
-i-5*j == k+1
都是合法的關系表達式。由于表達式也可以又是關系表達式。因此也允許出現嵌套的情況。例如:
a > (b>c)
a != (c==d)等。
關系表達式
關系表達式的值是真”和“假”,用“1”和“0”表示。
如:
5 > 0的值為“真”,即為1。
(a=3) > (b=5)由于3 > 5不成立,故其值為假,即為0。
【例5.1】
void main()
{
char c='k';
int i=1,j=2,k=3;
float x=3e+5,y=0.85;
printf("%d,%d\n",’a’+5=k+1);
printf("%d,%d\n",1printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);
}
在本例中求出了各種關系運算符的值。字符變量是以它對應的ASCII碼參與運算的。對于含多個關系運算符的表達式,如k==j==i+5,根據運算符的左結合性,先計算k==j,該式不成立,其值為0,再計算0==i+5,也不成立,故表達式值為0。
關系表達式
邏輯運算符極其優先次序
C語言中提供了三種邏輯運算符:
1) && 與運算
2) || 或運算
3) ! 非運算
與運算符&&和或運算符||均為雙目運算符。具有左結合性。非運算符!為單目運算符,具有右結合性。邏輯運算符和其它運算符優先級的關系可表示如下:
!(非)→&&(與)→||(或)
“&&”和“||”低于關系運算符,“!”高于算術運算符。
邏輯運算符和表達式
按照運算符的優先順序可以得出:
a>b && c>d 等價于 (a>b) && (c>d)
!b==c || da+b>c && x+yc) && ((x+y)邏輯運算符極其優先次序
邏輯運算的值也為“真”和“假”兩種,用“1”和“0 ”來表示。其求值規則如下:
1. 與運算 &&:參與運算的兩個量都為真時,結果才為真,否則為假。
例如:
5>0 && 4>2
由于5>0為真,4>2也為真,相與的結果也為真。
2. 或運算||:參與運算的兩個量只要有一個為真,結果就為真。兩個量都為假時,結果為假。
例如:
5>0 || 5>8
由于5>0為真,相或的結果也就為真。
邏輯運算的值
3. 非運算!:參與運算量為真時,結果為假;參與運算量為假時,結果為真。
例如:
!(5>0)
的結果為假。
雖然C編譯在給出邏輯運算值時,以“1”代表“真”,“0 ”代表“假”。但反過來在判斷一個量是為“真”還是為“假”時,以“0”代表“假”,以非“0”的數值作為“真”。例如:
由于5和3均為非“0”因此5&&3的值為“真”,即為1。
又如:
5||0的值為“真”,即為1。
邏輯運算的值
邏輯表達式的一般形式為:
表達式 邏輯運算符 表達式
其中的表達式可以又是邏輯表達式,從而組成了嵌套的情形。
例如:
(a&&b) && c
根據邏輯運算符的左結合性,上式也可寫為:
a && b && c
邏輯表達式的值是式中各種邏輯運算的最后值,以“1”和“0”分別代表“真”和“假”。
邏輯表達式
【例5.2】
void main()
{
char c='k';
int i=1,j=2,k=3;
float x=3e+5,y=0.85;
printf("%d,%d\n",!x*!y,!!!x);
printf("%d,%d\n",x||i&&j-3,iprintf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);
}
邏輯表達式
用if語句可以構成分支結構。它根據給定的條件進行判斷,以決定執行某個分支程序段。C語言的if語句有三種基本形式。
if語句的三種形式……
if語句
第一種形式為基本形式:
if(表達式) 語句
其語義是:如果表達式的值為真,則執行其后的語句,否則不執行該語句。其過程可表示為下圖。
if語句的三種形式
【例5.3】
void main()
{
int a,b,max;
printf("\n input two numbers: ");
scanf("%d%d",&a,&b);
max=a;
if (maxprintf("max=%d",max);
}
if語句的三種形式
第二種形式為: if-else
if(表達式)
語句1;
else
語句2;
if語句的三種形式
【例5.4】
void main()
{
int a, b;
printf("input two numbers: ");
scanf("%d%d",&a,&b);
if( a>b )
printf("max=%d\n",a);
else
printf("max=%d\n",b);
}
if語句的三種形式
第三種形式為if-else-if形式
前二種形式的if語句一般都用于兩個分支的情況。當有多個分支選擇時,可采用if-else-if語句,其一般形式為:
if語句的三種形式
【例5.5】
#include"stdio.h"
void main()
{
char c;
printf("input a character: ");
c=getchar();
if(c<32) printf("This is a control character\n");
else if(c>='0'&&c<='9' printf("This is a digit\n");
else if(c>='A'&&c<='Z') printf("This is a capital letter\n");
else if(c>='a'&&c<='z') printf("This is a small letter\n");
else printf("This is an other character\n");
}
if語句的三種形式
1) 在三種形式的if語句中,在if關鍵字之后均為表達式。該表達式通常是邏輯表達式或關系表達式,但也可以是其它表達式,如賦值表達式等,甚至也可以是一個變量。
例如:
if(a=5) 語句;
if(b) 語句;
都是允許的。只要表達式的值為非0,即為“真”。
在使用if語句中還應注意以下問題:
比較如下程序段:
void main()
{
if( a = b )
{
printf("%d\n", a);
}
}
void main()
{
if( a == b )
{
printf("%d\n", a);
}
}
在使用if語句中還應注意以下問題:
2) 在if語句中,條件判斷表達式必須用括號括起來,在語句之后必須加分號。
3) 在if語句的三種形式中,所有的語句應為單個語句,如果要想在滿足條件時執行一組(多個)語句,則必須把這一組語句用{}括起來組成一個復合語句。但要注意的是在}之后不能再加分號。
例如:
if(a>b)
{
a++;
b++;
}
else
{
a=0;
b=10;
}
在使用if語句中還應注意以下問題:
補充例題:寫一個程序完成下列功能:
1 、輸入一個分數score
2 、score<60 輸出 E
3 、60 <=score <70 輸出 D
4 、75 <=score <80 輸出 C
5 、80 <=score <90 輸出 B
5 、90 <=score 輸出 A
if語句的三種形式
補充例題2:輸入三個數a,b,c,要求按由小到大的順序輸出。
提示:
If a>b 將a和b對換
If a>c 將a和c對換
If b>c 將b和c對換
if語句的三種形式
當if語句中的執行語句又是if語句時,則構成了if 語句嵌套的情形。
其一般形式可表示如下:
if(表達式)
if語句;
或者為
if(表達式)
if語句;
else
if語句;
if( )
{
if( )
……;
}
if()
if() 語句1
else 語句2
else
if() 語句3
else 語句4
if語句的嵌套
在嵌套內的if語句可能又是if-else型的,這將會出現多個if和多個else重疊的情況,這時要特別注意if和else的配對問題。
例如:
其中的else究竟是與哪一個if配對呢
if語句的嵌套
為了避免這種二義性,C語言規定,else 總是與它前面最近的if配對,因此對上述例子應按前一種情況理解。
if語句的嵌套
比較以下兩題目:哪一個是運用嵌套方法
【例5.6】
void main()
{
int a,b;
printf("please input A,B: ");
scanf("%d%d",&a,&b);
if(a!=b)
if(a>b) printf("A>B\n");
else printf("Aelse printf("A=B\n");
}
if語句的嵌套
【例5.7】
void main()
{
int a,b;
printf("please input A,B: ");
scanf("%d%d",&a,&b);
if(a==b) printf("A=B\n");
else if(a>b) printf("A>B\n");
else printf("A}
采用嵌套結構實質上是為了進行多分支選擇,實際上有三種選擇即A>B、Aif語句的嵌套
條件運算符為“ 和:”,它是一個三目運算符,即有三個參與運算的量。
由條件運算符組成條件表達式的一般形式為:
表達式1 表達式2: 表達式3
其求值規則為:如果表達式1的值為真,則以表達式2 的值作為條件表達式的值,否則以表達式2的值作為整個條件表達式的值。
條件運算符和條件表達式
條件表達式通常用于賦值語句之中。
例如條件語句:
if(a>b) max=a;
else max=b;
可用條件表達式寫為
max=(a>b) a:b;
執行該語句的語義是:如a>b為真,則把a賦予max,否則把b 賦予max。
條件運算符和條件表達式
使用條件表達式時,還應注意以下幾點:
1) 條件運算符的運算優先級低于關系運算符和算術運算符,但高于賦值符。
因此
max=(a>b) a:b
可以去掉括號而寫為
max=a>b a:b
2) 條件運算符 和:是一對運算符,不能分開單獨使用。
3) 條件運算符的結合方向是自右至左。
例如:
a>b a:c>d c:d
應理解為
a>b a:(c>d c:d)
這也就是條件表達式嵌套的情形,即其中的表達式3又是一個條件表達式。
條件運算符和條件表達式
【例5.8】
void main()
{
int a,b,max;
printf("\n input two numbers: ");
scanf("%d%d",&a,&b);
printf("max=%d",a>b a:b);
}
條件運算符和條件表達式
補充:輸入一個字符,判別它是否大寫字母,如果是,將它轉換成小寫字母;如果不是,不轉換。然后輸出最后得到的字符。
#include
void main ( ) {
char ch; scanf("%c", &ch); ch=(ch>='A'&& ch<='Z') (ch+32) : ch; printf("%c\n", ch); }
條件運算符和條件表達式
C語言還提供了另一種用于多分支選擇的switch語句, 其一般形式為:
其語義是:計算表達式的值。并逐個與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時,即執行其后的語句,然后不再進行判斷,繼續執行后面所有case后的語句。如表達式的值與所有case后的常量表達式均不相同時,則執行default后的語句。
switch語句
【例4.9】
void main()
{
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a)
{
case 1:printf("Monday\n");
case 2:printf("Tuesday\n");
case 3:printf("Wednesday\n");
case 4:printf("Thursday\n");
case 5:printf("Friday\n");
case 6:printf("Saturday\n");
case 7:printf("Sunday\n");
default:printf("error\n");
}
}
為了避免上述情況,C語言還提供了一種break語句,專用于跳出switch語句,break 語句只有關鍵字break,沒有參數。
請看后邊例子……
switch語句
【例4.10】
void main()
{
int a;
printf("input integer number: ");
scanf("%d", &a);
switch (a)
{
case 1:printf("Monday\n"); break;
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n"); break;
case 4:printf("Thursday\n"); break;
case 5:printf("Friday\n"); break;
case 6:printf("Saturday\n"); break;
case 7:printf("Sunday\n"); break;
default:printf("error\n");
}
}
switch語句
在使用switch語句時還應注意以下幾點:
1) 在case后的各常量表達式的值不能相同,否則會出現錯誤。
2) 在case后,允許有多個語句,可以不用{}括起來。
3) 各case和default子句的先后順序可以變動,而不會影響程序執行結果。
4) default子句可以省略不用。
switch語句
【例4.11】輸入三個整數,輸出最大數和最小數。
答案與解析:
void main(){
int a,b,c,max,min;
printf("input three numbers: ");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{max=a;min=b;}
else
{max=b;min=a;}
if(maxmax=c;
else
if(min>c)
min=c;
printf("max=%d\nmin=%d",max,min);
}
switch語句
【例4.12】計算器程序。用戶輸入運算數和四則運算符,輸出計算結果。
答案與解析:
void main(){
float a,b;
char c;
printf("input expression: 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("input error\n");
}
}
switch語句
作業:
關于公歷閏年是這樣規定的:地球繞太陽公轉一周叫做一回歸年,一回歸年長365日5時48分46秒。因此,公歷規定有平年和閏年,平年一年有365日,比回歸年短0.2422日,四年共短0.9688日,故每四年增加一日,這一年有366日,就是閏年。但四年增加一日比四個回歸年又多0.0312日,400年后將多3.12日,故在400年中少設3個閏年,也就是在400年中只設97個閏年,這樣公歷年的平均長度與回歸年就相近似了。由此規定:年份是整百數的必須是400的倍數才是閏年,例如1900年、2100年就不是閏年。
輸入一個年份,并判斷是否為閏年?
switch語句
路程(s)越遠,每公里運費越低。標準如下:
s<250km 沒有折扣
250≤s<500 2%折扣
500≤s<1000 5%折扣
1000≤s<2000 8%折扣
2000≤s<3000 10%折扣
3000≤s 15%折扣
設每公里每噸貨物的基本運費為p,貨物重為w,距離為s,
折扣為d,則總運費f的計算公式為:
f=p*w*s*(1-d)
運輸公司對用戶計算運費。
作業2:
switch語句

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 和硕县| 钟山县| 宜春市| 股票| 隆尧县| 赫章县| 丰县| 茶陵县| 菏泽市| 柳江县| 房产| 甘德县| 水城县| 治县。| 武穴市| 诸城市| 林口县| 黔西| 惠来县| 鄂托克前旗| 崇左市| 襄垣县| 洛宁县| 塔城市| 苏尼特右旗| 香格里拉县| 电白县| 洪雅县| 庄浪县| 清水河县| 平舆县| 河南省| 高密市| 井冈山市| 云梦县| 东宁县| 北碚区| 齐齐哈尔市| 泽普县| 海伦市| 东阿县|