关于c语言switch语句的用法 C语言:switch语句用法

\u6c42\u6559c\u8bed\u8a00\u4e2dswitch \u8bed\u53e5\u7684\u8be6\u7ec6\u7528\u6cd5

switch \u662f\u4e00\u4e2a\u5f00\u5173\u8bed\u53e5\uff0c\u548ccase\u914d\u5957\u4f7f\u7528\uff0c \u548cif else \u5224\u65ad\u8bed\u53e5\u5dee\u4e0d\u591a\uff0c switch \u8bed\u53e5\u662f\u7528\u4e8e\u591a\u5206\u652f\u8bed\u53e5\u8fdb\u884c\u6761\u4ef6\u5224\u65ad\uff0c\u6bd4\u5982\uff1a


i++;
switch (i)
{
case 1 : P1 = 0xFE; //i =1; \u6267\u884cP1 = 0XFE;
breK; //\u6267\u884c\u5b8c\u6210\u540e\u8df3\u51fa
case 2 : P1 = 0xFD; //i =2; \u6267\u884cP1 = 0XFD;
break;
case 3 : P1 = 0xFB; //i =3; \u6267\u884cP1 = 0XFB;
break;
case 4 : P1 = 0xF7 //i =4; \u6267\u884cP1 = 0X7E;
break;
..........................................................................

default: break; //\u5982\u679ci \u4e0d\u7b26\u5408\u4ee5\u4e0a\u6761\u4ef6\u76f4\u63a5\u8df3\u51fa\u4e0d\u6267\u884c\u4efb\u4f55\u4e1c\u897f
}

\u5efa\u8bae\u4f60\u8fd8\u662f\u5148\u628aC\u8bed\u8a00\u770b\u719f\u628a\uff0c\u4e66\u4e0a\u90fd\u5199\u7684\u5f88\u6e05\u695a\u3002

\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 语句与其它语言中相应语句的区别。 尽管在学习和教计算机语言的过程中, 我们始终认为语言是相通的, 这样便于学习一门新的语言。 但是真正要把某一门计算机语言学好, 非得掌握它的特点。 ---- 这里仅仅是自己在编程实践过程中的一点体会, 有错误的地方恳请批评指正。 希望对你有帮助!

因为你没加break

#include <stdio.h>
int main()
{
    int k;
    scanf("%d",&k);
    switch(k)
 {
    case 1:
        printf("%d
",k++);
break;
    case 2:
        printf("%d
",k++);
break;
    case 3:
        printf("%d
",k++);
break;
    case 4:
        printf("%d
",k++);
break;
    default:
        printf("FULL!
");
break;
 }

return 0;
}


你忘了在每个 case 块之后加上 break... 如

#include <stdio.h>
int main()
{
        int k;
        scanf("%d",&k);
        switch(k)
 {
    case 1:
        printf("%d
",k++);
        break;
    case 2:
        printf("%d
",k++);
        break;
    case 3:
        printf("%d
",k++);
        break;
    case 4:
        printf("%d
",k++);
        break;
    default:
        printf("FULL!
");
 }
}


在每个case语句后加上break语句(即在每个printf语句后加上一句break;),执行break后直接跳出switch。这样就只输出一个了

在每个printf();语句后面加break;

  • c璇█switch鐨鐢ㄦ硶
    绛旓細c璇█switch鐢ㄤ簬鏍规嵁琛ㄨ揪寮忕殑鍊硷紝閫夋嫨鎵ц鐩稿簲鐨勮鍙ュ簭鍒銆俢璇█switch鐨勭敤娉曞寘鎷細1銆乻witch锛堣〃杈惧紡锛夈傚叾涓紝琛ㄨ揪寮忛氬父鏄暣鍨嬫垨瀛楃鍨嬪彉閲忋2銆乧ase甯搁噺琛ㄨ揪寮忋俠reak銆俢ase璇彞鐢ㄤ簬鎸囧畾褰撹〃杈惧紡鐨勫间笌鏌愪釜甯搁噺琛ㄨ揪寮忕殑鍊肩浉绛夋椂锛屾墽琛岃case鍚庨潰鐨勮鍙ャ傚鏋滄病鏈塨reak璇彞锛岀▼搴忎細缁х画鎵ц涓嬩竴涓猚ase鐨勮鍙ャ
  • 姹傛暀c璇█涓switch璇彞鐨璇︾粏鐢ㄦ硶
    绛旓細switch璇彞鍦–璇█涓敤浜庡熀浜庝笉鍚岀殑鎯呭喌鎵ц涓嶅悓鐨勪唬鐮佸潡銆傚叾鍩烘湰鏍煎紡濡備笅锛歝 switch { case constant1:// 浠g爜鍧1 break;case constant2:// 浠g爜鍧2 break;// 鍙互鏈夊涓猚ase璇彞 ...default: // 鍙夌殑锛屽綋娌℃湁浠讳綍case鐨別xpression鍊煎尮閰嶆椂浣跨敤 // 榛樿浠g爜鍧 } 鍏朵腑锛宔xpression鏄竴涓〃杈...
  • c璇█涓switch鐨鐢ㄦ硶c璇█涓璼witch鎬庝箞浣跨敤
    绛旓細1銆佸湪switch璇彞鐨勬瘡涓鍙ユ涓兘浣跨敤break璇彞銆傛湁default鏃讹紝濡傛灉琛ㄨ揪寮忕殑鍊间笌浠讳綍涓涓父閲忚〃杈惧紡鐨勫奸兘涓嶆兂绛夛紝鍒欐墽琛宒efault鍚庨潰鐨勮鍙ユ銆傚鏋滅渷鐣ヤ簡default锛岄偅涔堝綋琛ㄨ揪寮忕殑鍊间笌浠讳綍涓涓父閲忚〃杈惧紡鐨勫奸兘涓嶇浉绛夋椂锛屽氨浠涔堥兘涓嶆墽琛屻2銆佸湪switch璇彞涓笉浣跨敤break璇彞銆傚湪杩欑鎯呭喌涓嬶紝濡傛灉琛ㄨ揪寮忕殑鍊间笌鏌...
  • c璇█switch鐨鐢ㄦ硶
    绛旓細c璇█switch鐨勭敤娉曞氨鏄牴鎹〃杈惧紡鐨勫硷紝閫夋嫨鎵ц鐩稿簲鐨勮鍙ュ簭鍒銆侰璇█涓紝switch璇彞鏄竴绉嶅父鐢ㄧ殑娴佺▼鎺у埗璇彞銆傚畠鐨勪綔鐢ㄦ槸鏍规嵁涓涓〃杈惧紡鐨勫硷紝鍒ゆ柇鍏舵槸鍚︾瓑浜庝竴绯诲垪甯搁噺鍊间腑鐨勪换鎰忎竴涓紝骞舵墽琛岀浉搴旂殑浠g爜鍧椼傚叾涓紝expression琛ㄧず瑕佽娴嬭瘯鐨勮〃杈惧紡锛屽彲浠ユ槸浠讳綍鏁存暟绫诲瀷锛坈har銆乻hort銆乮nt銆乴ong锛夋垨鏋氫妇绫诲瀷...
  • c璇█switch璇彞鏈夊摢浜涚敤娉?
    绛旓細1銆丼WITCH璇彞鐨勫瓧闈㈡剰鎬濇槸寮鍏筹紝鏄敤鏉ヨ繘琛屽閲嶉夋嫨銆傚叿浣撶殑鐢ㄦ硶棣栧厛鎵撳紑C-Free5.0杞欢锛岀劧鍚庢柊寤轰竴涓悕涓簊witch.c鏂囦欢锛岀劧鍚庡湪寮曞叆澶存枃浠跺拰main涓诲嚱鏁帮細2銆侀鍏堝畾涔変竴涓暣鍨嬫暟鍊硷紝鐒跺悗浠庡闈㈠啓鍏ヨ繖涓硷紝杩欓噷鐢ㄥ埌鐨剆canf鍑芥暟灏辨槸浠庡闈㈣鍏ヤ竴涓肩粰a锛岀劧鍚庤繍琛屼竴涓嬶紝杈撳叆涓涓暟楠岃瘉锛3銆佹帴鐫鐢╯witch...
  • c璇█switch鐨鐢ㄦ硶
    绛旓細鍦C璇█涓紝switch璇彞鏄紑鍏宠鍙ワ紝涓鑸笌case銆乥reak銆乨efault閰嶅悎浣跨敤锛屽娴佺▼杩涜鎺у埗銆俿witch浣滀负涓涓紑鍏筹紝褰撳彉閲忚〃杈惧紡鐨勫煎搴攃ase涓殑鍊兼椂锛屾墽琛宑ase鍚庨潰鐨勮鍙ュ悗璺冲嚭switch璇彞锛屽鏋滈兘涓嶇鍚堝垯鎵цdefault鍚庨潰鐨勮鍙ュ悗璺冲嚭switch璇彞銆俿witch璇彞鐢ㄦ硶瑙勫垯锛1.鍦ㄤ竴涓猻witch涓彲浠ユ湁浠绘剰鏁伴噺鐨刢ase璇彞銆
  • switchc璇█鐨鐢ㄦ硶
    绛旓細c璇█switch鐨鐢ㄦ硶濡備笅锛1銆佸湪涓涓 switch 涓彲浠ユ湁浠绘剰鏁伴噺鐨 case 璇彞銆傛瘡涓 case 鍚庤窡涓涓姣旇緝鐨勫煎拰涓涓啋鍙枫2銆乧ase 鍚庣殑 绫诲瀷 蹇呴』涓 switch 涓殑鍙橀噺鍏锋湁鐩稿悓鐨勬暟鎹被鍨嬶紝涓斿繀椤绘槸涓涓父閲忔垨瀛楅潰閲忋3銆佸綋琚祴璇曠殑鍙橀噺绛変簬 case 涓殑甯搁噺鏃讹紝case 鍚庤窡鐨勮鍙ュ皢琚墽琛岋紝鐩村埌閬囧埌 break ...
  • c璇█switch鐨鐢ㄦ硶 c璇█switch鐨勭敤娉曚粙缁
    绛旓細1銆c璇█switch鐨鐢ㄦ硶鏄愪釜涓庡叾鍚庣殑甯搁噺琛ㄨ揪寮忓肩浉姣旇緝锛屽綋琛ㄨ揪寮忕殑鍊间笌鏌愪釜甯搁噺琛ㄨ揪寮忕殑鍊肩浉绛夋椂锛屽嵆鎵ц鍏跺悗鐨璇彞锛岀劧鍚庝笉鍐嶈繘琛屽垽鏂紝缁х画鎵ц鍚庨潰鎵鏈塩ase鍚庣殑璇彞銆2銆佸琛ㄨ揪寮忕殑鍊间笌鎵鏈塩ase鍚庣殑甯搁噺琛ㄨ揪寮忓潎涓嶇浉鍚屾椂锛屽垯鎵цdefault鍚庣殑璇彞銆
  • C璇█switch璇彞鎬庝箞鐢?
    绛旓細C璇█鐢╯witch璇彞杩涜鎴愮哗绛夌骇鍒ゆ柇鍙互閲囩敤浠ヤ笅鐨勪唬鐮侊細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鐨鐢ㄦ硶
    绛旓細鎵ц杩囩▼锛氬厛璁$畻骞惰幏寰switch鍚庨潰灏忔嫭鍙烽噷鐨勮〃杈惧紡鎴栧彉閲忓硷紝鐒跺悗灏嗚绠楃粨鏋滈『搴忎笌姣忎釜case鍚庣殑甯搁噺姣旇緝銆傚綋浜岃呯浉绛夋椂锛屾墽琛屼釜case鍧椾腑鐨勪唬鐮侊紝褰撻亣鍒癰reak鏃讹紝灏辫烦鍑簊witch閫夋嫨缁撴瀯锛屾墽琛宻witch閫夋嫨缁撴瀯涔嬪悗鐨勪唬鐮併傚鏋滀换浣曚竴涓猚ase涔嬪悗鐨勫父閲忎笌switch鍚庣殑灏忔嫭鍙蜂腑鐨勫肩浉绛夛紝鍒欐墽琛宻witch灏鹃儴鐨刣efault鍧椾腑...
  • 扩展阅读:c语言switch判断成绩 ... c语言switch可以嵌套吗 ... c语言switch用法举例 ... c语言switch是关键字吗 ... 求一个switch语句的例子 ... switch语句怎么表示范围 ... switch case用法举例 ... c语言switch用法示例 ... c语言switch语句分段成绩 ...

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