c语言switch语句的用法问题

发布网友 发布时间:2022-04-22 00:04

我来回答

6个回答

热心网友 时间:2022-04-30 16:33

case(c>=90&&c<=100):
case后面的必须是一个常量。
你这个可以先将成绩除以10,再用switch
#include"stdio.h"
voidmain()
{
charc;/*这里别用char,改成:intc,d;*/
scanf("%c",&c);/*这一句也改成scanf("%d",&c);最好前面再加一句,printf("请输入成绩:");在这句后面加一句d=c/10;*/
switch(c)/*然后switch里面用d来判断,switch(d)*/
{
case(c>=90&&c<=100):printf("成绩的等级为:a.\n");
break;/*改成:case(10):
case(9):printf("成绩的等级为:a.\n");break;
case(c>=80&&c<=):printf("成绩的等级为:b.\n");
break;/*改成:case(8):printf("成绩的等级为:b.\n");break;
}
}
因为90到100之间的数经过除以10再取整以后就变成了9;100/10等于10,又因为case调用同一个语句的时候允许就在最后一个语句写上那个语句,而将前面的那几个省略掉,所以case(10):后面的就省掉了,当然写上也不会错。
你的补充的那个,你可以把它分开表示,就像我给你弄的那个case(c>=90&&c<=100):printf("成绩的等级为:a.\n");
break;/*改成:case(10):
case(9):printf("成绩的等级为:a.\n");break;
虽然有点纠缠不清的感觉,但是希望对解决你的疑问有一定的帮助,呵呵。。。

热心网友 时间:2022-04-30 17:51

case语句是执行到break,跳出switch,一开始n=0,s=0,跳到case
0:空语句,继续执行(没有break),到case
1,执行s+=1,s=1,没有break,继续,s+=2,s=3,有break,跳出switch,所以第一个输出的是3,n=1,s=3,执行s+=3,s=6,没有break,继续,执行s+=4,s=10,没break,继续跳出switch,所以第二个输出10,n=2,s=10,跳到default(不满足上述case,跳到这),执行s+=4,s=14,所以第三个是14,n=3跳出循环,结束

热心网友 时间:2022-04-30 19:26

1.case2:case3:语句1;break;
这样的语句,当表达式满足2或3的时候,都要执行语句1
因为case2中为空语句,它没有break语句,继续执行case3的语句,直到遇见break语句为止,case3中有break语句所以终止了,如果没有继续往下执行,
2.题目中I<=100000时,如I=50000时,t=0,执行case0语句,注意:当I=100000(仅此一个取值)时t=1,但是你不能因此就把处理语句写在case1中,应为case1中还包括100000<I<200000的情况,可以把I=100000时的情况与100000<I<200000的情况一起处理,放在case1中如答案:bonus=bon1+(i-100000)*0.075;break;i=100000时(i-100000)*0.075=0,只有bon1=100000*0.1的利润,不影响处理结果,而你的处理方法就忽略了100000<I<200000也是t=1的情况,从而每次都把case语句错位了
100000<I<=200000时,如I=150000你的t=I/100000;t是整形的,所以t=1或2(t=2的情况留到后面与200000<I<300000,t=2的情况一起处理),因此应该把你的处理写在case1中。
200000<I<=400000,t=2或3或4(4的情况后面处理)所以程序中case2与case3要执行相同语句。
400000<I<=600000时t=4或5或6(6的情况后面处理),case4和case5执行相同语句,语句要写在case5中。
600000<I<=1000000时t=6,7,8,9,10(10的情况后面处理)case6,7,8,9执行相同语句,语句要写在case9中。
最后,你只需将上面t=10的情况与I>1000000d的情况一起处理,应该把你的处理写在case10中。

热心网友 时间:2022-04-30 21:17

第1次循环时,进到switch,s=0。由于case
0/case
1没有break;,所以会执行s+=1和s+=2,此时s=3
第2次循环时,进到switch,s=3。由于case
3
没有break;,所以会执行s+=3和s+=4,此时s=10
第3次循环时,进到switch,s=10。走default,s+=4,此时s=14

热心网友 时间:2022-04-30 23:25

switch语句在没有遇到break时会一直向下执行,一开始S=0,往下执行后s就等于1,再执行case2之后s就等于3

热心网友 时间:2022-05-01 01:50

当n
=0时,执行:s+=1,s+=2,所以结果为:s
=
3;
当n=
1时,执行:s+=3;s+=4,所以结果为:s
=
10;
当n=2时,执行:s+=4;,所以结果为:s
=
14;
其实主要看break;
若有break,则跳出

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com