日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言case可以判断多个条件吗,case 多个条件

發布時間:2024/4/14 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言case可以判断多个条件吗,case 多个条件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

威綸HMI宏指令選擇語句大致分為兩類分別是

if 語句

Case 語句

01

if?語句

if語句用來判斷給定條件是否滿足,根據判斷結果決定是否執行某個操作。

然而if語句在這里大致可以分為3種形式:

1、單一形式的if語句

2、if……else形式語句

3、if語句的多重判斷形式

?單一形式的if語句

1if?number?>?5?then2????TRACE('Result?==?true')3end?if

其流程圖如下:如果number?>?5 的條件成立那么打印預定的字符然后語句結束,如果條件不成立那么什么也不做。

??if……else形式語句

1if?number?>?10?then2????varA?=??varB? ?varC3else4????varA?=??varB?-?varC5end?if

流程圖解釋:?number?>?10?為true時執行varA?=??varB? ?varC?然后結束,當其比較結果為false時執行?varA?=??varB?-?varC?之后結束

??if語句的多重判斷形式

舉一個經典的例子:將一個學生的數學成績歸類為Class A(90<=成績<=100)、Class B(80<=成績<90)、Class C(70<=成績<80)、Class D(60<=成績<70)、Class E(成績<60)。

1macro_command?main() 2short?score 3GetData(score,?'Local_HMI',?LW,?100,?1)//來自HMI的成績數據入口 4if?score?0?or?score?>?100?then

5??? TRACE('input?Error')//如果輸入負數or成績大于100則警告并終止 6else?if?score?>?0?and?score?60?then

7????TRACE('Class?E?%d',score) 8else?if?score?>=?60?and?score?70?then

9????TRACE('Class?D?%d',score)10else?if?score?>=?70?and?score?80?then

11????TRACE('Class?C?%d',score)12else?if?score?>=?80?and?score?90?then

13????TRACE('Class?B?%d',score)14else?if?score?>=?90?and?score?<=?100?then15????TRACE('Class?A?%d',score)16end?if????17end?macro_command

if語句多重判斷形式允許擴充多個條件的判斷,語法結構邏輯緊湊,層層遞進抽絲剝繭,就像剝洋蔥

?模型如下:

上面成績分級的代碼流程圖如下

跑一個仿真

02

Case語句

雖然多重if語句可以替代Case語句,但是在某些時候使用Case語句使代碼具有更好的可讀性,避免了使用過多的if-else語句讓人眼花繚亂。

繼續使用剛才成績分級的的要求用Case選擇語句來實現:

1macro_command?main() 2short?score 3GetData(score,?'Local_HMI',?LW,?100,?1)//獲取分值 4if?score?<=?100?and?score?>=?0?then//驗證輸入分值是否在0~100之間 5????select?case?score?/?10?//比如成績是63分 63/10?= 6.3;由于變量是整型會舍棄小數那么對應的語句就是 Case 6 語句塊 6????case?0 7????case?1 8????case?2 9????case?310????case?411????case?512????????TRACE('Class?E')13????break14????case?615????????TRACE('Class?D')16????break17????case?718????????TRACE('Class?C')19????break20????case?821????????TRACE('Class?B')22????break23????case?924????????TRACE('Class?A')25????break26????case?else//Case?ELSE?如果沒有與上述條件相匹配的則執行該語句塊27????????TRACE('Class?A')28????end?select30else31????TRACE('input?Error?')//輸入錯誤警告32end?if33end?macro_command

模擬視頻

在Case語句中有一些關鍵詞

select?case?;Case語句的開始部分

case?0~case?9;是預設條件?score?的值與條件相等時執行對應的語句塊

case?else;score的內容與之前的預設條件無匹配項則執行case?else的語句

break ;如果語句塊n的后面有break,那么執行完語句塊n就會跳轉到end?select,結束case判斷。如果語句塊后沒有break 那么語句會一直往下執行,直到遇到break或者end?select然后退出Case語句。(上面示例代碼中Case 0 ~ Case4是沒有break語句的,所以會挨個執行直到碰到Case 5 的break才會跳出Case語句)

end?select;Case語句的結束標識

Case語句流程圖如下:

03

Case語句的嵌套形式

既然if語句可以嵌套,那么Case是否可以使用嵌套形式?答案是當然可以。這種用法估計很少有人使用或者少為人知,但是 我們一定要知道。

Case的嵌套與if的嵌套非常相似,下來用一個簡單的例子演示。

示例中有3種產品,每種產品分為A;B;C;D;4個級別(類)通過case嵌套來查詢價格。

1macro_command?main() 2short?Product_ID 3char?class[1]?//StringGet必須使用字符數組變量?其目標數據是來獲取輸入的字符串,如果數組元素只有一個就只會獲取第一個字符,剛好滿足設計需求 4GetData(Product_ID,?'Local_HMI',?LW,?201,?1)//獲取產品ID 5StringGet(class[0],?'Local_HMI',?LW,?300,?1)//以字符形式獲取產品等級? 6 7select?case?Product_ID 8case?1 9????TRACE('case?1')10????select?case?class[0]11????case?'A'12????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 10)13????????break14????case?'B'15????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 30)16????????break17????case?'C'18????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 50)19????????break20????case?'D'21????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 70)22????????break23????case?else//ELSE24????TRACE('not?found?1')25????end?select26break2728case?229????TRACE('case?2')30????select?case?class[0]31????????case?'A'32????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 20)33????????break34????case?'B'35????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 40)36????????break37????case?'C'38????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 60)39????????break40????case?'D'41????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 80)42????????break43????case?else//ELSE44????TRACE('not?found?2')45????end?select46break4748case?349????TRACE('case?3')50????select?case?class[0]51????case?'A'52????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 11)53????????break54????case?'B'55????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 33)56????????break57????case?'C'58????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 55)59????????break60????case?'D'61????????TRACE('Product_%d?class?%c?price?=?%d',Product_ID,class[0],Product_ID*class[0] 77)62????????break63????case?else//ELSE64????TRACE('not?found?3')65????end?select66break67case?else//ELSE68????TRACE('not?found?Product_ID')69end?select70end?macro_command

演示視頻

從這個例子中可以看到case語句的預設條件也可以使用字符,對于HMI這種人機交互工具來說字符有時候比數字更具象一些,能夠使用字符來替代數字是因為ASCII碼本身就是整數,見字符碼表(A=65;B=66;C=67;D=68)

參考文獻(C Primer Plus 第六版 ; C 語言程序設計)

---End---

歷史文章:

威綸觸摸屏宏指令之TRACE函數

威綸觸摸屏宏指令[環境 數據類型 運算符 Diagnoser]

威綸觸摸屏畫面切換實例

維綸觸摸屏趨勢圖功能實例

ControlLogix ?User-Defined結構體嵌套

ControlLogix系統內存優化解析

Vim指令訓練程序

關于TFA/A1灌裝機Gas Sensor

ControlLogix控制器ControlNet網絡規劃

總結

以上是生活随笔為你收集整理的c语言case可以判断多个条件吗,case 多个条件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。