为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言switch语句

2020-02-16 38页 ppt 1MB 17阅读

用户头像 个人认证

绘画的问号

暂无简介

举报
C语言switch语句*switch语句7.1switch语句:switch语句是一条多分支选择语句. 在实际应用中,要在多种情况中选择一种情况,执行某一部分语句。 当然可以使用嵌套的if,ifelseif语句来处理,但其分支过多,程序冗长,难读,不够灵巧。*switch语句是C语言中处理多路选择问题的一种更直观和有效的手段.在测试某个表达式是否与一组常量表达式中的某一值相配时,switch语句显得更为方便.一般形式如下:*switch(表达式){case常量表达式1:语句1[break];case常量表达式2:语句2[break];&hell...
C语言switch语句
*switch语句7.1switch语句:switch语句是一条多分支选择语句. 在实际应用中,要在多种情况中选择一种情况,执行某一部分语句。 当然可以使用嵌套的if,ifelseif语句来处理,但其分支过多,程序冗长,难读,不够灵巧。*switch语句是C语言中处理多路选择问题的一种更直观和有效的手段.在测试某个表达式是否与一组常量表达式中的某一值相配时,switch语句显得更为方便.一般形式如下:*switch(表达式){case常量表达式1:语句1[break];case常量表达式2:语句2[break];…case常量表达式n:语句n[break];[default:语句n+1]}说明:(1).关于表达式:表达式可以是整型、字符型等表达式。有一个确定的值(不是逻辑值).(2).关于常量表达式1~n:只起到一个标号的作用,根据表达式的值来判断,找到一个相匹配的入口处,程序往下执行。各个case后的常量表达式的值必须互不相同.(3).每个case分支可有多条语句,可不用花括号{}。*switch(表达式){case常量表达式1:语句1[break];case常量表达式2:语句2[break];…case常量表达式n:语句n[break];[default:语句n+1]}(4).各个case语句只是一个入口标号,并不确定执行的终止点.(5).一般在各个case语句最后应该加一break语句,可使程序跳出Switch结构.否则会从入口处一直向下执行.(6).各个case和default出现的先后次序,并不影响执行结果.default可以没有.* (7).多个case可共用一组执行语句. 例如为了统计一段文字中的数字,字母及分隔符的个数,可用下列程序段实现: switch(ch){case‘0’:case‘1’:….case‘8’:case‘9’:digit++;break;case‘’:case‘\n’:case‘\t’:white++;break;default:character++;break;}这里有一个空格.表达式后都有一冒号”:”.*无break语句switch(表达式)* 说明: switch语句不等同于if语句:1.switch只能进行值的相等性的检查.2.if语句不但可以进行相等性的检查,还可以计算关系表达式或逻辑表达式,进行逻辑判断的真假.只进行值的相等性的检查,不是逻辑判断!**例7.1键盘输入0-6之间的整数,分别代表每周的星期日、星期一、…、星期六#include<stdio.h>intmain(){ intday; printf("请输入星期的数字编号(0-6):"); scanf("%d",&day); ….Ch7_7_1.c…. switch(day) {case0:printf("星期日\n");break; case1:printf("星期一\n");break; case2:printf("星期二\n");break; case3:printf("星期三\n");break; case4:printf("星期四\n");break; case5:printf("星期五\n");break; case6:printf("星期六\n");break; default:printf("输入有误,请输入0-6之间的数字!\n"); } return0;}每个case分支可有多条语句,可不用花括号{},也可以用。表达式有一个确定的值(不是逻辑值).**例7.2求执行下列程序段后k的值#include<stdio.h>intmain(){ charc=‘2’;intk=1;switch(c+1-'0') {case2: k+=1;case2+1: k+=2;case4:k+=3; } printf("k=%d\n",k); return0;}一般在各个case语句最后应该加一break语句,可使程序流程跳出Switch结构.否则会从入口处一直向下执行.‘0‘的ASCII值为48.Ch7_7_2.c*例7.3执行下列程序,当分别输入A、B、C、E时,求K的值.charc;intk=2;scanf(“%c”,&c);switch(c-’A’){case0:k++;case1:K+=2;break;default:k*=k;case4:k*=3;}printf(“k=%d”,k);Ch7_7_3.c*例7.4输入一字符,如果是Y,N或y,n,则分别执行一输出语句,如果是其他字母则执行另一输出语句。#include<stdio.h>voidmain(){charch;printf("PleaseinputY/N(y/n):");scanf("%c",&ch);….Ch7_7_4.c…. switch(ch) { case'y': case'Y': printf("thisis'Y'or'y'.\n"); break; case'n': case'N': printf("thisis'N'or'n'.\n"); break; default: printf("thisisotherchar.\n"); }}多个case可共用一组执行语句.表达式有一个确定的值(不是逻辑值).**例7.5编写程序,实现如下功能。输入一个实数后,屏幕显示如下菜单:1.输出相反数2.输出平方数3.输出平方根4.退出#include<stdio.h>voidmain(){ inti,c=5; floatm; printf("输入任意一个整型数:\n"); scanf("%f",&m); printf("****************************\n"); printf("1,输出相反数\n"); printf("2,输出平方数\n"); printf(“3,输出开方根\n"); printf("4,退出\n"); printf("****************************\n");……Ch7_7_5.c*….. while(1) { scanf("%d",&c); switch(c) { case1:printf("输出相反数:%f\n",-m);break; case2:printf("输出平方数:%f\n",m*m);break; case3:printf("输出平方根:%f\n",sqrt(m));break; case4:break; default:printf("请输入1~4之间的数字!\n"); } if(c==4)break; }}Ch7_7_5.c**例7.6根据输入字符(0-9及A-F(A~F))显示与该字符所表示的十六进制数相对应的十进制数。(例如,输入‘A’,输出10,输入‘0’,输出0)#include<stdio.h>#include<stdlib.h>intmain(){charch;for(;;){printf(“\n请输入十六进制数0~F(输入Q或q退出):"); scanf("%c",&ch); getchar(); printf("输入的是:%c",ch); ….当输入一个字符,打一个回车后,输入结束.但在输入缓冲区中存在二个字符:输入的字符,还有一个是’\n’.当打了一个回车后(其实是二个动作:回车,换行.c语言会把回车,换行自动转换为’\n’.反之亦然.*switch(ch){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9': printf("十进制数:%d\n",ch-'0');break; case'A':case'B':case'C':case'D':case'E':case'F': printf("十进制数:%d\n",ch-55); break; …Ch7_7_6.cASCII值:‘0’48‘A’65‘a”97*case'a':case'b':case'c':case'd':case'e':case'f': printf("十进制数:%d\n",ch-87);break;case'Q':case'q': printf("退出程序\n");exit(0);default: printf("输入有误!");}}return0;}ASCII值:‘0’48‘A’65‘a”97*示例:输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。*voidmain(){intblank,digit,i,other;charch; blank=digit=other=0;printf("input10characters:");….for(i=1;i<=10;i++){ch=getchar();switch(ch){case‘‘:case’\n‘:blank++;break;case'0':case'1':case'2':case'3‘:case'4':case'5':case'6':case'7':case'8':case'9':digit++;break;default:other++;break;}}printf(“blank=%d,digit=%d,other=%d\n”,blank,digit,other);}*input10characters:Reold123?blank=1,digit=3,other=6例:#include<stdio.h>voidmain(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}以下程序的输出结果是:A.011122B.012C.012020D.120注意所属关系*例7.7编写一个简易计算器.Ch7_7_7.c*#include<stdio.h>#include<stdlib.h>intmain(){floatnumb1=0,numb2=0;intmenu=1,flag;floattotal=0;charcalType;….*for(;;){flag=1;printf("\n\t希望进行哪种运算?\n\n");printf("\t1:加法\n");printf("\t2:减法\n");printf("\t3:乘法\n");printf("\t4:除法\n");printf("\t0:退出计算器\n");printf("\n\t输入你的选择:");….*….scanf("%d",&menu);if(menu==0)exit(0);elseif(menu<1||menu>4)printf("\t无效的选择!\n");else{printf("\t输入两个数中的第一个数:");scanf("%f",&numb1);printf("\t输入两个数中的第二个数:");scanf("%f",&numb2);….退出程序.*switch(menu){case1:total=numb1+numb2;calType='+';break;case2:total=numb1-numb2;calType='-';break;case3:total=numb1*numb2;calType='*';break;case4:if(numb2==0) {printf("\n\t不能被0除\n");flag=0;break;}total=numb1/numb2;calType='/';break;default:printf("无效的选择!\n");}…*if(flag==1){printf("\n\n*************************");printf("\n\n\t%.3f%c%.3f=%.3f",numb1,calType,numb2,total);printf("\n\n**********************\n\n");}}}return0;}Ch7_7_7.c*问输出为?:A)K=3B)K=4C)K=2D)K=0main(){intk=0;charc=‘A’;do{swich(c++){case‘A’:K++;break;case‘B’:K--;case‘C’:k+=2;break;case‘D’:K=K%2;continue;case‘E’:K=K*10;break;default:K=K/3;}K++;}while(c<‘G’);printf(“K=%d\n”,K);}第1次.第2次.3.4.5.6.K=2k=4k=7k=1k=11k=4c=Bc=Cc=Dc=Ec=Fc=G*注:①每次执行switch(C++)时,先取C的值,找到入口,然后C增1.②当执行到continue时,流程跳过do-while语句中当未执行的语句,而直接转向while的条件表达式,判循环是否进行.*练习与实践:1.百分制转换成五分制.#include<stdio.h>intmain(){ intx; printf("请输入学生百分制成绩:\n输入负数结束程序:\n"); scanf("%d",&x); …课本P101:1题* while(x>0) {switch(x/10){ case10:case9:printf("五分制为:\n5\n\n");break; case8:printf("五分制为:\n4\n\n");break; case7:printf("五分制为:\n3\n\n");break; case6: printf("五分制为:\n2\n\n");break; default:printf("五分制为:\n1\n\n");break; } …课本P101:1题* …printf("请输入学生百分制成绩:\n输入负数结束程序:\n"); scanf("%d",&x);} printf("谢谢使用,再见:\n"); return0;}*#include<stdio.h>#include<math.h>intmain(){ doublex,s;inty; printf("Inputanumber:\n"); scanf("%lf",&x); …2.计算sin(),cos(),tan().*… while(1){ printf("您希望进行哪种运算?\n"); printf("1.计算sin(x)\n"); printf("2.计算cos(x)\n"); printf("3.计算tan(x)\n"); scanf("%d",&y); switch(y) {case1:s=sin(x);printf("sin(%f)=%f\n",x,s);break; case2:s=cos(x);printf("cos(%f)=%f\n",x,s);break; case3:s=tan(x);printf("tan(%f)=%f\n",x,s);break; default:printf(“输入有误,请输入1-3之间的数字!\n"); } …*… if(y==1||y==2||y==3) break; }printf("谢谢使用:\n");return0;}*
/
本文档为【C语言switch语句】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索