C語言中 a 為什麼不屬於字元型常量呢?有高手為我詳細講解一下switch語句的用法嗎

2021-08-09 12:40:50 字數 4909 閱讀 2589

1樓:匿名使用者

『a'是字元常量

「a" == char[2] =

int a=1;

switch (a)

其中最後一個break;( case else:下面那個)可以不加如果把break全去掉,就會輸出a is onea is twoa is more than two

因為程式會從 case (相應的值): 處開始執行,一直到switch結束,加break防止它執行到下一個case內

2樓:魚蛋

#include

int main()

case 2:

case 3:

case 4:

default:} }

switch是按照順序從上往下執行的語句:先是你給a付一個值:

如果你輸入1,程式會從case1開始配對,如果a是1,則執行case1裡面的命令,順序執行下來,輸出『你輸入的是1!』,然後遇到break把switch語句終止,該程式結束;

如果你輸入2,程式會從case1開始配對,如果a是1,則執行case1裡面的命令,順序執行下來,但是a等於2,所以不執行case 1:就不看case 1:裡面的內容了,然後去配對case 2:

發現a=2,輸出『你輸入的是2!』,然後遇到break把switch語句終止,該程式結束;

如果你輸入3,程式會從case1開始配對,如果a是1,則執行case1裡面的命令,順序執行下來,

但是a等於3,所以不執行case 1,就不看case 1裡面的內容了,然後去配對case 2:a也不等於2所以不執行case 2,就不看case 2裡面的內容了,然後遇到case3,因為a=3,所以輸出『你輸入的是3!』,但是沒有break,語句,所以順序執行下來,不管a會不會等於4,都將執行『你輸入的是4!

』,還將執行『你輸入的是不是1-4!!',因為沒有break語句去終止該指令

以此類推,如果輸入4,將輸出『你輸入的是4!』『你輸入的是不是1-4!!』,兩條語句,

如果你輸入的是1-4的以為的數值,那將輸出『你輸入的是不是1-4!!』,這也就是default的用法了。

懂了嗎?

c語言 switch的用法

3樓:四舍**入

switch用在程式設計中,如c語言中它經常跟case一起使用,是一個判斷選擇**。其功能就是控制業務流程流轉的。

c語言程式語句switch語句的語法如下(switch,case和default是關鍵字):

switch ( controllingexpression )

4樓:彼岸花

c語言程式語句switch:

switch用在程式設計中,如c語言中它經常跟case一起使用,是一個判斷選擇**。其功能就是控制業務流程流轉的。

switch語句的語法如下(switch,case和default是關鍵字):

switch ( controllingexpression )

遵守switch語句規則

switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則:

只能針對基本資料型別使用switch,這些型別包括int、char等。對於其他型別,則必須使用if語句。

case標籤必須是常量表示式(constantexpression),如42或者"42"。如果需要在執行時計算case標籤的值,必須使用if語句。

case標籤必須是惟一性的表示式;也就是說,不允許兩個case具有相同的值。

c語言switch應用例子:

例一:#include

int main()

}例二:

#include

int main()

}例三:

輸入年月日,判斷這一天是這一年的第幾天。

#include

int main()

printf("%4d年%2d月%2d日是這一年的第%d天。\n",year,month,date,days);}

5樓:金剛2q疕k缹

凡是使用過的人都會有同樣的感覺——c語言的使用靈活這個特點既是優點又是缺點, 因為對精通c語言的使用者來講, 靈活就意味著程式設計可以無拘無束, 甚至隨心所欲; 但對初學者或者是尚未摸著規律的使用者來說, 有時候就會覺得c程式設計有點象霧裡看花, 摸不著頭腦。 因為靈活就意味著沒有一個標準。 而實際上,c 語言和其它計算機語言一樣, 只要你真正掌握了該語言的每一個語句的特點, 理解、 運用就不難掌握了。

下面就c語言中switch 語句的使用特點談談自己的體會。 ---- switch 語句的格式如下: switch( 表示式) ---- 從表面上看來,switch 語句與pascal 語言中的case 語句以及foxbase 中的do case 語句非常類似, 只是關鍵字有所不同:

一個是switch; 而另一個是case 或do case。 但如果仔細閱讀過教材或有關參考書的話, 就絕不會有此想法。 從語句的功能上來看,pascal 和case 語句或foxbase 的do case 語句中的常量表示式是用來與case 後面的表示式比較以確定執行哪一個語句, 一旦執行了某一語句, 則會自動地結束這一case 後的語句; 而c 的switch 語句則不然。

首先,switch 語句中的常量表示式只是起到一個入口作用, 一旦執行了相應的語句後, 只要沒有強迫中斷語句(break),它就會一直按順序繼續執行下去, 也就是會執行其它case 後面的語句, 直到遇到「}」 符號才停止。 乍看覺得有點不可事議, 但若仔細回味且切身程式設計體會, 那麼就會感司到c的switch 語句的獨到之處。 接下來就幾個具體例子來剖析:

switch 語句的特點以及區別於其它語言中的相應語句的妙處。 ---- 第一個例子: 根據輸入的百分制成績, 然後給出『a』 ~『e』 相應的等級符(90-100 為『a』、80-89 為『b』、70-79 為『b』、60-69 為『c』、0-59 為『e』)。

主要的處理程式段如下:(temp、score、grade 皆為整型變數) temp=score/10; switch(temp) printf(「the grade is %c」,grade); ---- 仔細閱讀這段程式( 根據c語言的特點),就會發現有很多錯誤。 首先, 對100 分和低於50 分的情況沒有考慮; 其次,c 語言的switch 特點是順序執行, 那麼這段程式不輸入的分數如何, 最後的輸出都將是『e』。

因此, 修改這段程式, 可以得到一個正確答案是: temp=score/10; switch(temp) printf(「the grade is %c,grade」); ---- 但這麼一個結果還不算是一個好的c程式, 因為它只是能得到正確的解, 沒有真正用到c的特點。 如果將c的特點運用到這段程式中, 則程式將優化成如下:

grade=『a』; temp=score/10; switch(temp) printf(「the grade is %c,grade」); ---- 從這段程式中, 我們可以體會到前面所說的該語句的特點。 ---- 第二個例子: 運輸公司對使用者計算運費。

距離(s) 越遠, 每公里運費越低。 具體標準如下: s < 250 (km) 沒有折扣 250 < =s < 500 (km) 2% 折扣 500 < =s < 1000 (km) 5% 折扣 1000 < =s < 2000(km) 8% 折扣 2000 < =s < 3000(km) 10% 折扣 3000 < =s (km) 15% 折扣 ---- 設每公里每噸貨物的基本運費為p, 貨物重為w, 距離為s, 折扣為d, 則總運費計算公式為:

---- f=p*w*s*(1-d) ---- 分析此問題, 折扣的變化是有規律的: 折扣的「 變化點」 都是250 的倍數(250,500,1000,2000,3000)。利用這一特點, 可以再設一變數c, 它代表250 的倍數。

當c<1 時, 無折扣;1<=c<2 時, 折扣為d=2%;2<=c<4 時,d=5%;4<=c<8 時,d=8%;8<=c<12 時,d=10%; c>=12 時,d=15%。 所以可以有如下沒有錯誤的程式段>=3000)c=12 else c=s/250 switch(c) f=p*w*s*(1-d/100.

0); printf(「freight%15.f」,f); ---- 如同前一個題目, 這個程式段也完全可以利用switch 特點, 改進優化得到如下程式段>=3000)c=12 else c=s/250 switch(c) f=p*w*s*(1-d/100.

0); printf(「freight%15.4f」,f); ---- 從上面兩個例子分析, 使我們可以比較清楚地看見c語言中switch 語句與其它語言中相應語句的區別。 儘管在學習和教計算機語言的過程中, 我們始終認為語言是相通的, 這樣便於學習一門新的語言。

但是真正要把某一門計算機語言學好, 非得掌握它的特點。 ---- 這裡僅僅是自己在程式設計實踐過程中的一點體會, 有錯誤的地方懇請批評指正。 希望對你有幫助!

6樓:匿名使用者

特意找課本看了一下:

switch(表示式)

其語義是:計算表示式的值。 並逐個與其後的常量表示式值相比較,當表示式的值與某個常量表示式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行後面所有case後的語句。

如表示式的值與所有case後的常量表示式均不相同時,則執行default後的語句。

在switch語句中,「case 常量表示式」只相當於一個語句標號, 表示式的值和某標號相等則轉向該標號執行,但不能在執行完該標號的語句後自動跳出整個switch 語句,所以出現了繼續執行所有後面case語句的情況。 這是與前面介紹的if語句完全不同的,應特別注意。為了避免上述情況, c語言還提供了一種break語句,專用於跳出switch語句,break 語句只有關鍵字break,沒有引數。

在後面還將詳細介紹。修改例題的程式,在每一case語句之後增加break 語句, 使每一次執行之後均可跳出switch語句,從而避免輸出不應有的結果。

C語言中字元常量有什麼用,C語言中字元常量與字串常量有什麼區別?

字元常量 在c語言中一個字元常量代表ascii字符集中的一個字元,在程式中用單引號把一個字元括起來作為字元常量。大小寫字母代表不同的字常量 單引號中的空格也是 字元常量只能包含一個字元 字元常量只能用但括號括起來。比如是常用字元的acii a 97 a 65 常量一般指隨時拿過來就可以用的,並且是不...

c語言中float資料轉換成字元型資料,如題

float變數4個位元組 32位 char變數1個位元組 8位 從float強轉到char,那隻會取float的低8位賦值給char 70000的二進位制內是 1 00010001 01110000,低8位是01110000,換成十進位制就是容112,查ascii表就知道112對應的是 p 了 c語...

c語言中的控制字元到底是什麼,c語言中什麼是控制字元?

c語言中的控制字元是出現於特定的資訊文字中,表示某一控制功能的字元。在計算中,一個控制字元或非列印字元,是一個 標示 一個數字 是否在字符集,其自身也是書寫字母來描述的。所有輸出在32以下的ascii表都是這個型別。在ascii碼中,第0 31號及第127號 共33個 是控制字元或通訊專用字元,如控...