亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C語言條件控制語句

2019-11-17 05:23:08
字體:
來源:轉載
供稿:網友
在程序的三種基本結構中,第二種即為選擇結構,其基本特點是:程序的流程由多路分支
組成,在程序的一次執行過程中,根據不同的情況,只有一條支路被選中執行,而其他分支上的語句被直接跳過。
C語言中,提供if語句和switch語句選擇結構,if語句用于兩者選一的情況,而switch用于多分支選一的情形。
3.3.1if語句
1.if語句的兩種基本形式首先,我們看一個例子,由此了解選擇結構的意義及設計方法。
[例3-5]輸入三個數,找出并打印其最小數。
分析:設三個數為A、B、C,由鍵盤讀入,我們用一個變量MIN來標識最小數,A、B、
C與MIN皆定義為int型變量。
每次比較兩個數,首先比較A和B,將小的一個賦給MIN,再把第三個數C與MIN比較,
再將小的一個賦給MIN,則最后MIN即為A、B、C中最小數。
算法如下:
1)輸入A、B、C。
2)將A與B中小的一個賦給MIN。
3)將MIN與C中小的一個賦給MIN。
4)輸出MIN。
將第2)步細化為:若A<B,則MIN<==A,否則:MIN<==B;其流程圖見圖3-1。
第3)步細化為:若C<MIN,則MIN<==C;其流程圖見圖3-2。
C語言條件控制語句(圖一)
對應圖3-1和圖3-2,正是if語句的兩種基本形式,與圖3-2對應的if語句的格式為:
if<表達式>語句
當表達式為真時,執行語句,表達式為假時跳過語句。
與圖3-1對應的if語句的格式為:
if〈表達式〉
語句1
else
語句2
當表達式為真時,執行語句1,表達式為假時執行語句2。無論如何,語句1與語句2每次只能有一個被執行。
要注重的是:if或if...else,包括后面要講到的嵌套if,即if...elseif...被看成是一條語句,即使其中的語句是包含多條語句的復合語句,仍然如此。
下面是例3-5的源程序:
main()
{
inta,b,c,min;
scanf("%d%d%d",&a,&b,&c);
if(a<b)
min=a;
else
min=b;
if(c<min)
min=c;
printf("Theresultis%d/n",min);
}
執行情況如下:
RUN
inputa,b,c:3 5 2
Theresultis:2
這里順便提一下程序書寫的縮排問題,所謂縮排,就是下一行與上一行相比,行首向右縮進若字符,如上例的min=a、min=b等。適當的縮排能使程序的結構、層次清楚、一目了然,增加程序的易讀性。應該從一開始就養成一個比較好的書寫習慣,包括必要的注釋、適當的空行以及縮排。
2.復合語句
if語句中,有時需要執行的語句不止一條,這就要用到復合語句。
復合語句,就是用一對花括號括起來的一條或多條語句,形式如下:
{
語句1;
語句2;
.......
語句n;
}
無論包括多少條語句,復合語句從邏輯上講,被看成是一條語句。
復合語句在分支結構、循環結構中,使用十分廣泛。
[例3-6]讀入兩個數x、y,將大數存入x,小數存入y。
C語言條件控制語句(圖二)
分析:x、y從鍵盤讀入,若x>=y,只需順序打出,否則,應將x,y中的數進行交換,然后輸出。兩數交換必須使用一個中間變量t,定義三個浮點數x、y、t。
算法:
1)讀入x、y;
2)大數存入x,小數存入y;
3)輸出x、y。
第2)步求精:
若x<y,則交換x與y;
再求精,x與y交換;
①t<==x
②x<==y
③y<==t
算法的流程圖見圖3-3,程序如下:
#include<stdio.h>
main()
{
floatx,y,t;
printf("inputx,y:");
scanf("%f%f",&x,&y);
if(x<y)
{
t=x;
x=y;
y=t;
}
printf("result:%7.3f/t%7.3f/n",x,y);
}
執行結果:
inputx,y:43.256.7
result:56.70043.200
3.if...elseif語句
實際應用中經常面對更多的選擇,這時,將if...else擴展一下,就得到if...elseif結構,其一般形式為:
if<表達式1>語句1
elseif<表達式2>
語句2
elseif<表達式3>
語句3
else語句4
對應的流程圖見圖3-4。C語言條件控制語句(圖三)
[例3-7]貨物征稅問題,價格在1萬元以上的征5%,5000元以上1萬元以下的征3%,
1000元以上5000以下的征2%,1000元以下的免稅,讀入貨物價格,計算并輸出稅金。
分析:讀入price,計算tax,這是一個較復雜的分支結構程序設計(應注重避免重復征稅)。
假定貨物的價格在1萬元以上,征稅應分段累計,各段采用不同稅率進行征收。
算法:若price>=10000
則tax=0.05*(price-10000);price=10000;
否則,若price>=5000
則tax=0.03*(price-5000)+tax;price=5000;
否則,若price>=1000
則tax=0.02*(price-1000)+tax;price=1000;
程序如下:
#include<stdio.h>
main()
{
floatprice,tax=0;
printf("inputprice:");
scanf("%f",&price);
if(price>=10000.0)
{
tax=0.05*(price-10000)+tax;price=10000;
}
if(price>=5000.0)
{
tax=0.03*(price-5000)+tax;price=5000;
}
if(price>=1000.00)
{
tax=0.02*(price-1000)+tax;
}
printf("thetax=%10.3f",tax);
}
運行程序:
RUN¿
15000¿
thetax=480.000
4.if語句嵌套
在一個if語句中可以又出現另一個if語句,這稱為if語句的嵌套或多重if語句:
if<表達式1>
if<表達式11>
......
else
語句2;
[例3-8]計算函數
1x>0
y=0x=0
-1x<0
流程圖見圖3-5。
C語言條件控制語句(圖四)
源程序如下:
main()
{
floatx,y;
printf("inputx,y:");
scanf("%f",&x);
if(x>=0)
if(x>0)
y=1;
else
y=0;
else
y=-1;
printf("y=%4.0f/n",y);
}
對多重if,最輕易犯的錯誤是if與else配對錯誤,
例如,寫成如下形式:
y=0;
if(x>=0)
if(x>0)
y=1;
else
y=-1;
從縮排上可以看出,作者希望else是與ifx>=0配對,但是C語言規定else總是與離它最近
的上一個if配對,結果,上述算法的流程圖變成圖3-6,完全違反了設計者的初衷。
改進的辦法是使用復合語句,將上述程序段改寫如下:
y=0;
if(x>=0)
{
if(x>0)
y=1;
}
else
y=-1;

3.3.2switch語句
if語句只能處理從兩者間選擇之一,當要實現幾種可能之一時,就要用if...elseif甚至多重的嵌套if來實現,當分支較多時,程序變得復雜冗長,可讀性降低。C語言提供了switch開關語句專門處理多路分支的情形,使程序變得簡潔。
switch語句的一般格式為:
switch<表達式>
case常量表達式1:語句序列1;
break;
case常量表達式2:語句序列2;
break;
⋯⋯
case常量表達式n:語句n;
break;
default:語句n+1;
其中常量表達式的值必須是整型,字符型或者枚舉類型,各語句序列答應有多條語句,不需要按復合語句處理,若語句序列i為空,則對應的break語句可去掉。圖3-7是switch語句的流程圖。
非凡情況下,假如switch表達式的多個值都需要執行相同的語句,可以采用下面的格式:
C語言條件控制語句(圖五)
switch(i)
{
case1:
case2:
case3:語句1;
break;
case4:
case5:語句2;
break;
default:語句3;
}
C語言條件控制語句(圖六)
當整型變量i的值為1、2或3時,執行語句1,當i的值為4或5時,執行語句2,否則,執行
語句3。
[例3-9]輸入月份,打印1999年該月有幾天。
程序如下:
#include<stdio.h>
main()
{
int month;
int day;
printf("please input the month number:");
scanf("%d",&month);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;
break;
case 4:
case 6:
case 9:
case 11:day=30;
break;
case 2:day=28;
break;
default:day=-1;
}
if day=-1
printf("Invalid month input !/n");
else
printf("1999.%dhas%ddays/n",month,day);
}
3.3.3程序應用舉例
[例3-10]解一元二次方程ax2+bx+c=0,a、b、c由鍵盤輸入。
分析:對系數a、b、c考慮以下情形
1)若a=0:
①b<>0,則x=-c/b;
②b=0,則:①c=0,則x無定根;
②c<>0,則x無解。
2)若a<>0;
①b2-4ac>0,有兩個不等的實根;
②b2-4ac=0,有兩個相等的實根;
③b2-4ac<0,有兩個共軛復根。
用嵌套的if語句完成。程序如下:
#include<math.h>
#include<stdio.h>
main()
{
float a,b,c,s,x1,x2;
doublet;
printf("please input a,b,c:");
scanf("%f%f%f",&a,&b,&c);
if(a==0.0)
if(b!=0.0)
printf("the root is:%f/n",-c/b);
elseif(c==0.0)
printf("x is inexactive/n");
else
printf("no root !/n");
else
{
s=b*b-4*a*c;
if(s>=0.0)
if(s>0.0)
{
t=sqrt(s);
x1=-0.5*(b+t)/a;
x2=-0.5*(b-t)/a;
printf("There are two different roots:%fand%f,/xn1",x2);
}
else
printf("There are two equal roots:%f/n",-0.5*b/a);
else
{
t=sqrt(-s);
x1=-0.5*b/a;/*實部*/
x2=abs(0.5*t/a);/*虛部的絕對值*/
printf("There are two virtual roots:");
printf("%f+i%f/t/t%f-i%f/n",x1,x2,x1,x2);
}
}
}
運行結果如下:
RUN
please input a,b,c:123
There are two virtual roots:
-1.000000+i1.000000-1.000000-i1.000000
RNU
pleaseinputa,b,c:253
There are two different roots:-1.500000and-1.000000
RNU
please input a,b,c:003¿
No root!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久不卡| 久久久久久久影视| 午夜精品久久久久久久男人的天堂| 国产精品美女在线| 亚洲欧美资源在线| 人九九综合九九宗合| 国产精品一区二区三区成人| 日韩av电影在线网| 日韩精品中文字幕在线播放| 精品亚洲国产视频| 欧美交受高潮1| 亚洲欧美一区二区三区情侣bbw| 欧美在线视频观看免费网站| 日韩欧美国产视频| 成人免费大片黄在线播放| 久久精视频免费在线久久完整在线看| 亚洲精选一区二区| 国产盗摄xxxx视频xxx69| 日韩亚洲成人av在线| 欧美性xxxxxxxxx| 欧美日韩性视频| 色偷偷av一区二区三区乱| 亚洲爱爱爱爱爱| 91在线中文字幕| 91亚洲精品在线| 精品久久久久久久久国产字幕| 日韩精品视频在线观看网址| 亚洲欧美日本另类| 成人av色在线观看| 亚洲国产精品成人av| 97福利一区二区| 精品国产乱码久久久久久虫虫漫画| 91高清在线免费观看| 狠狠做深爱婷婷久久综合一区| 亚洲综合在线做性| 91精品国产综合久久久久久蜜臀| 日韩av一区在线| 亚洲第一区第二区| 亚洲欧美成人网| 国产精自产拍久久久久久蜜| 18一19gay欧美视频网站| 国产精品成人在线| 日韩电影视频免费| 国产精品稀缺呦系列在线| 米奇精品一区二区三区在线观看| 精品视频一区在线视频| 成人自拍性视频| 亚洲精品成人久久| 亚洲第五色综合网| 中文字幕精品影院| 亚洲春色另类小说| 国产日韩精品一区二区| 日韩美女视频免费在线观看| 中文.日本.精品| 亚洲欧美精品suv| 国产经典一区二区| 中文字幕亚洲自拍| 亚洲а∨天堂久久精品喷水| 亚洲成人1234| 91高清视频在线免费观看| 国产精品视频在线观看| 亚洲激情在线观看| 国产精品久久久久久久久| 亚洲欧美日韩另类| 97精品国产97久久久久久春色| 欧洲美女7788成人免费视频| 国产精品久久久久久久9999| 久久久免费观看视频| 尤物九九久久国产精品的特点| 美女性感视频久久久| 久色乳综合思思在线视频| 欧美在线国产精品| 精品久久久久久久久久国产| 92看片淫黄大片看国产片| 久久久久久久国产精品视频| 欧美日韩免费观看中文| 97香蕉久久超级碰碰高清版| 黑人精品xxx一区| 久久久精品国产网站| 国产精品91一区| 精品亚洲国产视频| 国产成人av网| 国产精品自产拍在线观| 日韩av免费一区| 欧美精品成人91久久久久久久| 国产999精品久久久| 亚洲国产精品专区久久| 亚洲国产精品久久91精品| 九九热精品视频| 尤物yw午夜国产精品视频| 精品国产自在精品国产浪潮| 91精品国产乱码久久久久久久久| 亚洲影院色无极综合| 亚洲aⅴ男人的天堂在线观看| 国产高清在线不卡| 国产精品电影久久久久电影网| 中文字幕日韩电影| 欲色天天网综合久久| 日韩国产精品一区| 日本午夜在线亚洲.国产| 国产一区私人高清影院| 91国偷自产一区二区三区的观看方式| 清纯唯美日韩制服另类| 欧美性受xxxx白人性爽| 91手机视频在线观看| 久久久久久久久久av| 538国产精品视频一区二区| 欧美日韩中文字幕在线| 欧美日韩国产丝袜另类| 中文字幕亚洲欧美日韩在线不卡| 欧美男插女视频| 欧美裸体xxxxx| 国产成人自拍视频在线观看| 国产成人激情小视频| 欧美在线亚洲一区| 青青草原一区二区| 日韩欧美高清在线视频| 欧美激情一二区| 欧美劲爆第一页| 精品国产福利视频| 91色在线视频| 欧美性极品xxxx娇小| 久久艹在线视频| 91免费福利视频| 欧美影院在线播放| 欧美天天综合色影久久精品| 欧美成人免费小视频| 国产不卡av在线免费观看| 欧美孕妇孕交黑巨大网站| 欧美风情在线观看| 国产中文字幕亚洲| 国产成人精品国内自产拍免费看| 色综合91久久精品中文字幕| 国产精品自在线| 5566成人精品视频免费| 国内精品久久久久久久久| 国产精品96久久久久久| 日韩免费高清在线观看| 国产精品亚洲美女av网站| 亚洲欧美制服另类日韩| 亚洲国产精品嫩草影院久久| 97超级碰碰碰久久久| 国产亚洲成av人片在线观看桃| 久久精品91久久久久久再现| 久久精品男人天堂| wwwwwwww亚洲| 国产一区二区三区在线免费观看| 欧美亚洲国产视频小说| 91香蕉嫩草神马影院在线观看| 日韩av在线直播| 亚洲精品日产aⅴ| 欧美日韩国产限制| 精品国产乱码久久久久久虫虫漫画| 在线成人激情黄色| 57pao国产成人免费| 91香蕉嫩草神马影院在线观看| 久久中文字幕一区| 91在线观看免费网站| 国产日韩欧美夫妻视频在线观看| 亚洲欧美精品中文字幕在线| 国产精品无码专区在线观看| 91精品在线影院| 国产精品人成电影在线观看| 成人高清视频观看www|