C语言里的switch语句怎么用,最好有例子哈~!

C\u8bed\u8a00\u91cc\u7684switch\u8bed\u53e5\u600e\u4e48\u7528\uff0c\u6700\u597d\u6709\u4f8b\u5b50\u54c8\uff5e\uff01

switch(a) //a\u5fc5\u987b\u662f\u4e00\u4e2a\u6574\u6570\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u4e3a\uff1achar short int long
\u610f\u601d\u662f\u770ba\u7684\u503c\u662f\u591a\u5c11\uff0c\u4e0b\u9762case \u540e\u9762\u5c31\u662f\u8ddf\u7684\u4f60\u60f3\u5904\u7406\u7684\u503c\uff0c
{
case 1: //a\u4e3a1\u7684\u65f6\u5019
cout << "a==1" << endl;
break;
case 2:
cout << "a==1" << endl;
break;
...
...
default: //\u5176\u4ed6\u60c5\u51b5
break;
}

\u6267\u884c\u8fc7\u7a0b\uff1a\u5148\u8ba1\u7b97\u5e76\u83b7\u5f97switch\u540e\u9762\u5c0f\u62ec\u53f7\u91cc\u7684\u8868\u8fbe\u5f0f\u6216\u53d8\u91cf\u503c\uff0c\u7136\u540e\u5c06\u8ba1\u7b97\u7ed3\u679c\u987a\u5e8f\u4e0e\u6bcf\u4e2acase\u540e\u7684\u5e38\u91cf\u6bd4\u8f83\u3002
\u5f53\u4e8c\u8005\u76f8\u7b49\u65f6\uff0c\u6267\u884c\u4e2acase\u5757\u4e2d\u7684\u4ee3\u7801\uff0c\u5f53\u9047\u5230break\u65f6\uff0c\u5c31\u8df3\u51faswitch\u9009\u62e9\u7ed3\u6784\uff0c\u6267\u884cswitch\u9009\u62e9\u7ed3\u6784\u4e4b\u540e\u7684\u4ee3\u7801\u3002
\u5982\u679c\u4efb\u4f55\u4e00\u4e2acase\u4e4b\u540e\u7684\u5e38\u91cf\u4e0eswitch\u540e\u7684\u5c0f\u62ec\u53f7\u4e2d\u7684\u503c\u76f8\u7b49\uff0c\u5219\u6267\u884cswitch\u5c3e\u90e8\u7684default\u5757\u4e2d\u4ee3\u7801\u3002

凡是使用过的人都会有同样的感觉——C语言的使用灵活这个特点既是优点又是缺点, 因为对精通C语言的用户来讲, 灵活就意味着编程可以无拘无束, 甚至随心所欲; 但对初学者或者是尚未摸着规律的用户来说, 有时候就会觉得C程序设计有点象雾里看花, 摸不着头脑。 因为灵活就意味着没有一个标准。 而实际上,C 语言和其它计算机语言一样, 只要你真正掌握了该语言的每一个语句的特点, 理解、 运用就不难掌握了。 下面就C语言中switch 语句的使用特点谈谈自己的体会。 ---- switch 语句的格式如下: switch( 表达式) {case 常量表达式1: 语句1 case 常量表达式2: 语句2 case 常量表达式3: 语句3 case 常量表达式n: 语句n default : 语句n+1 } ---- 从表面上看来,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) {case 9:grade=‘A’; case 8:grade=‘B’; case 7:grade=‘C’; case 6:grade=‘D’; case 5:grade=‘E’; } printf(“the grade is %c”,grade); ---- 仔细阅读这段程序( 根据C语言的特点),就会发现有很多错误。 首先, 对100 分和低于50 分的情况没有考虑; 其次,C 语言的switch 特点是顺序执行, 那么这段程序不输入的分数如何, 最后的输出都将是‘E’。因此, 修改这段程序, 可以得到一个正确答案是: temp=score/10; switch(temp) {case 10: case 9:grade=‘A’;break; case 8:grade=‘B’;break; case 7:grade=‘C’;break; case 6:grade=‘D’;break; case 5: case 4: case 3: case 2: case 1: case 0:grade=‘E’; } printf(“the grade is %c,grade”); ---- 但这么一个结果还不算是一个好的C程序, 因为它只是能得到正确的解, 没有真正用到C的特点。 如果将C的特点运用到这段程序中, 则程序将优化成如下: grade=‘A’; temp=score/10; switch(temp) {case 0: case 1: case 2: case 3: case 4: case 5:grade++; case 6:grade++; case 7:grade++; case 8:grade++; case 9: case 10: } 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%。 所以可以有如下没有错误的程序段: scanf(“%f,%f,%d”,&p,&w,&s); if(s>=3000)c=12 else c=s/250 switch(c) {case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15; } f=p*w*s*(1-d/100.0); printf(“freight%15.f”,f); ---- 如同前一个题目, 这个程序段也完全可以利用switch 特点, 改进优化得到如下程序段: d=0 scanf(“%f,%f,%k”,&p,&w,&s); if(s>=3000)c=12 else c=s/250 switch(c) {case 12:d+=5; case11: case 10: case 9: case 8:d+=2; case 7: case 6: case 5: case 4:d+=3; case 3: case 2:d+=3; case 1:d+=2; case 0: } f=p*w*s*(1-d/100.0); printf(“freight%15.4f”,f); ---- 从上面两个例子分析, 使我们可以比较清楚地看见C语言中switch 语句与其它语言中相应语句的区别。 尽管在学习和教计算机语言的过程中, 我们始终认为语言是相通的, 这样便于学习一门新的语言。 但是真正要把某一门计算机语言学好, 非得掌握它的特点。 ---- 这里仅仅是自己在编程实践过程中的一点体会, 有错误的地方恳请批评指正。 希望对你有帮助!

  • 姹傛暀c璇█涓璼witch璇彞鐨勮缁嗙敤娉
    绛旓細褰揺xpression鐨勫间笌鏌愪釜case涓殑constant鐩哥瓑鏃讹紝浼氭墽琛岃case鍚庨潰鐨勪唬鐮佸潡锛岀洿鍒伴亣鍒癰reak璇彞鎴switch璇彞缁撴潫銆傚鏋滄病鏈変换浣曚竴涓猚ase鍖归厤锛屽垯鎵цdefault鍚庨潰鐨勪唬鐮佸潡銆傛瘡涓猚ase鍚庡繀椤绘湁涓涓猙reak璇彞锛屽惁鍒欑▼搴忎細缁х画鎵ц涓嬩竴涓猚ase鐨勪唬鐮佸潡锛岀洿鍒伴亣鍒癰reak鎴杝witch缁撴潫銆備簩銆佺敤娉曡瑙 1. switch琛ㄨ揪寮忕殑鍊...
  • C璇█switch璇彞鎬庝箞鐢?
    绛旓細C璇█鐢switch璇彞杩涜鎴愮哗绛夌骇鍒ゆ柇鍙互閲囩敤浠ヤ笅鐨勪唬鐮侊細main(){int i,a;scanf("%d",&a);i=a/10;switch a {case '10':case '9': printf("A"); break;case '8': printf("B"); break;case '7': printf("C"); break;case '6': printf("D");else printf("E");} } ...
  • c璇█switch璇彞鏈夊摢浜涚敤娉?
    绛旓細1銆SWITCH璇彞鐨勫瓧闈㈡剰鎬濇槸寮鍏筹紝鏄敤鏉ヨ繘琛屽閲嶉夋嫨銆傚叿浣撶殑鐢ㄦ硶棣栧厛鎵撳紑C-Free5.0杞欢锛岀劧鍚庢柊寤轰竴涓悕涓簊witch.c鏂囦欢锛岀劧鍚庡湪寮曞叆澶存枃浠跺拰main涓诲嚱鏁帮細2銆侀鍏堝畾涔変竴涓暣鍨嬫暟鍊硷紝鐒跺悗浠庡闈㈠啓鍏ヨ繖涓硷紝杩欓噷鐢ㄥ埌鐨剆canf鍑芥暟灏辨槸浠庡闈㈣鍏ヤ竴涓肩粰a锛岀劧鍚庤繍琛屼竴涓嬶紝杈撳叆涓涓暟楠岃瘉锛3銆佹帴鐫鐢╯witch...
  • c璇█switch鐨勭敤娉
    绛旓細c璇█switch鐢ㄤ簬鏍规嵁琛ㄨ揪寮忕殑鍊硷紝閫夋嫨鎵ц鐩稿簲鐨勮鍙搴忓垪銆俢璇█switch鐨勭敤娉曞寘鎷細1銆乻witch锛堣〃杈惧紡锛夈傚叾涓紝琛ㄨ揪寮忛氬父鏄暣鍨嬫垨瀛楃鍨嬪彉閲忋2銆乧ase甯搁噺琛ㄨ揪寮忋俠reak銆俢ase璇彞鐢ㄤ簬鎸囧畾褰撹〃杈惧紡鐨勫间笌鏌愪釜甯搁噺琛ㄨ揪寮忕殑鍊肩浉绛夋椂锛屾墽琛岃case鍚庨潰鐨勮鍙ャ傚鏋滄病鏈塨reak璇彞锛岀▼搴忎細缁х画鎵ц涓嬩竴涓猚ase鐨勮鍙ャ
  • c璇█switch璇彞
    绛旓細c璇█switch璇彞 C璇█涓殑switch璇彞鏄竴绉嶅璺夋嫨缁撴瀯锛岀敤浜庢牴鎹笉鍚岀殑鏉′欢鎵ц涓嶅悓鐨勪唬鐮佸潡銆俿witch璇彞鏍规嵁琛ㄨ揪寮忕殑鍊间笌case鏍囩杩涜姣旇緝锛屽鏋滃尮閰嶏紝鍒欐墽琛岀浉搴旂殑浠g爜鍧楋紝骞剁户缁鏌ヤ笅涓涓猚ase鏍囩锛岀洿鍒版壘鍒板尮閰嶇殑鏍囩鎴栨墍鏈塩ase鏍囩閮藉凡妫鏌ュ畬姣曘傚鏋滄病鏈夋壘鍒板尮閰嶇殑case鏍囩锛屽垯鎵цdefault浠g爜鍧楋紙...
  • c璇█switch璇彞鎬庝箞鍐?
    绛旓細2銆佹墽琛岀涓涓switch(m)锛屽洜涓簃=1锛屾墍浠ヨ繘鍏ase 1鍒嗘敮銆傚湪杩欎釜鍒嗘敮閲岋紝鎵ц绗簩涓猻witch(n)锛屽洜涓簄=1锛屾墍浠ヨ繘鍏ase 1鍒嗘敮锛岃繍琛寈=x*2=1*2=2銆傜敱浜巆ase 1娌℃湁break璇彞锛屽洜姝ょ户缁墽琛宑ase 2锛寉=y*2=1*2=2銆3銆佺敱浜庣涓涓猚ase 1鍒嗘敮涔熸病鏈塨reak璇彞锛岀户缁墽琛宑ase 2锛歺++锛寉++锛屾墽琛...
  • c璇█switch鐨勭敤娉 c璇█switch鐨勭敤娉曚粙缁
    绛旓細1銆c璇█switch鐨勭敤娉曟槸閫愪釜涓庡叾鍚庣殑甯搁噺琛ㄨ揪寮忓肩浉姣旇緝锛屽綋琛ㄨ揪寮忕殑鍊间笌鏌愪釜甯搁噺琛ㄨ揪寮忕殑鍊肩浉绛夋椂锛屽嵆鎵ц鍏跺悗鐨勮鍙锛岀劧鍚庝笉鍐嶈繘琛屽垽鏂紝缁х画鎵ц鍚庨潰鎵鏈塩ase鍚庣殑璇彞銆2銆佸琛ㄨ揪寮忕殑鍊间笌鎵鏈塩ase鍚庣殑甯搁噺琛ㄨ揪寮忓潎涓嶇浉鍚屾椂锛屽垯鎵цdefault鍚庣殑璇彞銆
  • c璇█switch鐨勭敤娉
    绛旓細C璇█涓锛switch璇彞鏄竴绉嶅父鐢ㄧ殑娴佺▼鎺у埗璇彞銆傚畠鐨勪綔鐢ㄦ槸鏍规嵁涓涓〃杈惧紡鐨勫硷紝鍒ゆ柇鍏舵槸鍚︾瓑浜庝竴绯诲垪甯搁噺鍊涓殑浠绘剰涓涓紝骞舵墽琛岀浉搴旂殑浠g爜鍧椼傚叾涓紝expression琛ㄧず瑕佽娴嬭瘯鐨勮〃杈惧紡锛屽彲浠ユ槸浠讳綍鏁存暟绫诲瀷锛坈har銆乻hort銆乮nt銆乴ong锛夋垨鏋氫妇绫诲瀷銆傚綋绋嬪簭鎵ц鍒皊witch璇彞鏃讹紝棣栧厛璁$畻琛ㄨ揪寮忕殑鍊笺傜劧鍚庯紝灏...
  • c璇█涓璼witch鎬庝箞鐢?
    绛旓細绠鍗曠殑璇switch璇彞涔熸槸灞炰簬鍒ゆ柇璇彞锛宨f else璇彞閫傚悎3涓互鍐呯殑鍒ゆ柇锛屼絾鏄浜嗙敤if灏变笉澶柟渚夸簡锛屾墍浠ヨ繖鏃3涓互涓婄殑鍒ゆ柇鐢╯witch璇彞灏辨瘮杈冩柟渚夸簡锛岀粨鏋勫氨鍍忔ゼ涓婄殑鍏勫紵浠偅鏍峰啓鐨勶紝澶ф鎬庝箞鐢ㄦ垜涓句釜渚嬪瓙浣犲氨鎳備簡銆備緥锛氬垽鏂竴鍛ㄧ殑椋熻氨锛屽氨鏄槦鏈熷嚑鐨勯璋辨槸浠涔堬紝棣栧厛涓涓槦鏈7澶╋紝閭d箞鍒ゆ柇涓冩锛岀敤switch...
  • 姹傛暀c璇█涓璼witch 璇彞鐨勮缁嗙敤娉
    绛旓細鍦C璇█缂栫▼涓紝switch璇彞鏄竴绉嶅叧閿殑鎺у埗缁撴瀯锛岀敤浜庢牴鎹潯浠堕夋嫨鎵ц涓嶅悓鐨勪唬鐮佸潡銆傚叾鍩烘湰璇硶娑夊強switch鍏抽敭瀛楋紝鍚庨潰璺熺潃涓涓帶鍒惰〃杈惧紡锛屽int鎴朿har绫诲瀷锛岀劧鍚庢槸澶氫釜case鏍囩锛屾瘡涓爣绛惧搴斾竴涓彲鑳界殑鍊硷紝褰撴帶鍒惰〃杈惧紡鐨勫煎尮閰嶅埌鏌愪釜case鐨勫兼椂锛屼究浼氭墽琛岃case涓嬬殑璇彞銆傚鏋滈兘涓嶅尮閰嶏紝鍒欎細鎵ц...
  • 扩展阅读:c语言switch判断成绩 ... c++语言switch语句实例 ... c语言的for循环例子 ... switch语句怎么表示范围 ... switch case用法举例 ... c语言printf输出格式 ... c语言switch函数例子 ... c++switch语句例子 ... c语言switch是关键字吗 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网