c语言中switch语句问题 大侠们帮帮忙。 为何过程中先判断switch了为default,输出2个 Y/N ???
default语句始终是最后执行。
测试程序如下:
#include
int main(void)
{
int num;
while (1)
{
printf("please input :
");
scanf("%d",&num);
switch(num)
{
case -1:
printf("the value is -1
");
break;
case 1:
printf("the value is 1
");
break;
case 0:
printf("the value is 0
");
break;
default:
printf("the value is others
");
break;
}
printf("please input :
");
scanf("%d",&num);
switch(num)
{
default:
printf("the value is others
");
break;
case -1:
printf("the value is -1
");
break;
case 1:
printf("the value is 1
");
break;
case 0:
printf("the value is 0
");
break;
}
}
}
运行结果:
please input :
1
the value is 1
please input :
1
the value is 1
结果分析:第一个swith语句的default语句在最后,第二个swith语句的default语句在最前面。输入的值都为1,输出结果是相同的。说明default语句的位置对输出结果没有影响,始终是最后运行。
输入的成绩不符合要求,比如18738或负数
在printf("是否求%dx^2+%dx+%d=0的根? Y/N ",a,b,c);后加一句 fflush(stdin);
因为你scanf("%d",&c);的时候按了回车,这个回车还存在输入缓存里。。。当你ch=getchar();
的时候,回车才出来,
fflush(stdin)作用是清除标准输入设备stdin的缓存,差不多那意思吧,呵呵。你可以看下MSDN里的简介,或者搜搜这方面的资料。
帮你改了两个地方,注释标明了
#include<stdio.h>
#include<math.h>
void main()
{
int a,b,c,o,t;
float x1,x2;
char ch;
printf("求ax^2+bx+c=0的根\n");
do
{
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
printf("c=");
scanf("%d",&c);
printf("是否求%dx^2+%dx+%d=0的根? Y/N ",a,b,c);
getchar(); //等待输入
do
{
ch=getchar();
switch(ch)
{
case 'y':t=1;break;//大小写方便些
case 'Y':t=1;break;
case 'n':t=0;break;
case 'N':t=0;break;
default:t=2;printf(" Y/N ");break;
}
}while(t==2);
}while(t==0);
o=b*b-(4*a*c);//o为判别式//
if(o<0)
{
printf("Null\n");
}
if(o==0)
{
x1=(float)b*(-1)/(2*a);
printf("x1=x2=%f\n",x1);
}
if(o>0)
{
x1=(b*(-1)+sqrt(o))/(2*a);
x2=(b*(-1)-sqrt(o))/(2*a);
printf("x1=%f x2=%f\n",x1,x2);
}
}
c语言中switch的用法
在C语言中,switch语句是一种常用的控制结构,用于根据不同的条件执行不同的代码块。它的基本语法如下:switch (expression) { case value1:\/\/ 当expression的值等于value1时,执行这里的代码 \/\/ ...break;case value2:\/\/ 当expression的值等于value2时,执行这里的代码 \/\/ ...break;\/\/ 可以有...
c语言switch的用法
c语言switch的用法就是根据表达式的值,选择执行相应的语句序列。C语言中,switch语句是一种常用的流程控制语句。它的作用是根据一个表达式的值,判断其是否等于一系列常量值中的任意一个,并执行相应的代码块。其中,expression表示要被测试的表达式,可以是任何整数类型(char、short、int、long)或枚举类型...
C语言中的switch和default是什么意思
switch和default是C语言中的关键词,通常联合使用。switch语句的语法规则:其中switch、case、break、default都是关键字。switch作为开关,当变量表达式的值对应case中的值时,执行case后面的语句后跳出switch语句,如果都不符合则执行default后面的语句后跳出switch语句。
求教c语言中switch 语句的详细用法
在C语言编程中,switch语句是一种关键的控制结构,用于根据条件选择执行不同的代码块。其基本语法涉及switch关键字,后面跟着一个控制表达式,如int或char类型,然后是多个case标签,每个标签对应一个可能的值,当控制表达式的值匹配到某个case的值时,便会执行该case下的语句。如果都不匹配,则会执行...
c语言switch的用法
c语言switch的用法如下:在C语言中,switch语句是开关语句,一般与case、break、default配合使用,对流程进行控制。switch作为一个开关,当变量表达式的值对应case中的值时,执行case后面的语句后跳出switch语句,如果都不符合则执行default后面的语句后跳出switch语句。switch语句用法规则:1.在一个switch中可以...
求教c语言中switch语句的详细用法
C语言中switch语句的详细用法 一、基本格式 switch语句在C语言中用于基于不同的情况执行不同的代码块。其基本格式如下:c switch { case constant1:\/\/ 代码块1 break;case constant2:\/\/ 代码块2 break;\/\/ 可以有多个case语句 ...default: \/\/ 可选的,当没有任何case的expression值匹配时使用 \/...
c语言中switch怎么用?
c switch(expression) { case value1:\/\/ 成分子句1 break;case value2:\/\/ 成分子句2 break;\/\/ ... 重复至 case valueN case valueN:\/\/ 成分子句N break;default:\/\/ 当expression的值不匹配任何一个case时,执行此成分子句 \/\/ 成分子句N+1 break;} C语言中的switch语句非常灵活,其功能取决...
if语句和switch语句的区别有哪些?
在C语言中,if语句和switch语句都是非常重要的控制结构。它们之间有一些相似之处和差异。相似之处:都可以实现条件判断,都有分支结构,可以根据某个表达式的值进行条件转移。不同之处:if语句可以进行复杂的条件判断,例如嵌套if-else、多重if等;而switch语句只支持有限的条件转移,比如多值判断,而无法...
switch是什么意思
switch的意思是转换。Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。汉语翻译:n. 开关, 电闸, 转换, 软枝, 鞭子, 道岔vt. 转变, 切换, 摆动, 转换, 使转轨vi. 转换, 变换, 摆动相关词组:switch sb onswitch sb offswitch sth out of sb's handasleep at...
switchc语言的用法
c语言switch的用法如下:1、在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。2、case 后的 类型 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。3、当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break ...
应蚀克林: int i=3; switch(i%3){case 0:printf("0"); //如果不加break程序会一直向下执行,知道break才跳出break;case 1:printf("1");break;case 2:printf("2");break}
西盟佤族自治县18091568443: C语言关于SWITCH语句的问题 - ?
应蚀克林: 因为C语言设计的时候,为了灵活性,switch的语法是反人性的,一个分支不加break的话,是不会自己跳出来的.这个跟想象中的分支的含义不太一样.这种语法的目的,仅仅是类似这种:case 'a':case 'b': DO SOMETHING; break; 表示条件 a 或者 b 其中任何一个成立,就执行,语言的实现方便.按照正常人喜欢的逻辑,最好能这么写:case 'a' || 'b' : DO SOMETHING; // 然后不用写break 不过这样就不是C语言了 我完全理解lz发这个问题的心情,要学就继续忍受,比这郁闷的坑多着
西盟佤族自治县18091568443: c语言中的switch语句 - ?
应蚀克林: 首先外部switch语句中x=1,所以执行case 1:里面的语句,接着又一个switch语句判断y=0,所以进入case 0:里面的语句,由a++得到a=1;接着break,退出该switch语句,因为case 1后面没有break,所以继续执行case2: a++;b++,这个时候的a=2,b=1,然后一个break语句结束外层的switch语句,最后输出a=2,b=1;
西盟佤族自治县18091568443: C语言中的switch问题 - ?
应蚀克林: 简单的说switch语句也是属于判断语句,if else语句适合3个以内的判断,但是多了用if就不太方便了,所以这时3个以上的判断用switch语句就比较方便了,结构就像楼上的兄弟们那样写的,大概怎么用我举个例子你就懂了.例:判断一周的食谱...
西盟佤族自治县18091568443: C语言中的switch语句问题,需详解 - ?
应蚀克林: 第一个是x值是2 你定义的case0语句后面后没break说明x为0的时候不仅要执行case0的代码还要执行case1的x的值就会变化..但是x为2所有就执行默认的default:y=3;x=1 结果是y=3x=1z=1 同理第二个 就执行case 1:x=4;break;结果是x=4y=3z=0
西盟佤族自治县18091568443: C语言中的switch语句该怎么理解? - ?
应蚀克林: SWITCH 语句就是一个开关 我给你举个例子吧!你是计算机,我写命令控制你!SWITCH(命令) {CASE 向左转:你向左转;BREAK;//就是执行完之后停下来,不要再做下面的命令了!如果没有这句,你就跟着执行向右转了.有了这句,你就跟着等下条命令!CASE 向右转:你向右转;BREAK; }
西盟佤族自治县18091568443: C语言switch case语句 急问 - ?
应蚀克林: 不会的,你可以 case 常量:语句1;语句2;...;break; case 常量:语句1;语句2;...;break; case 常量:语句1;语句2;...;break; ..... default:语句1;语句2;...;break;
西盟佤族自治县18091568443: C语言switch问题 - ?
应蚀克林: 1:不一定要有default.但是一般来说外国的教材喜欢在每个switch中加一个default这是良好习惯的显示,因为default的意思是输入除case以外的字符的情况程序如何运行.2:可以的3:不可以,你得说明要输入什么类的数据,比如switch(a),这...
西盟佤族自治县18091568443: C语言 switch语句问题 - ?
应蚀克林: LZ 想 执行8遍,就应该把 switch 语句 放在 for 循环里面 .
西盟佤族自治县18091568443: c语言for里面的switch语句输出结果问题 - ?
应蚀克林: 第一个执行B K++并break; 跳出switch 输出# 第二个执行的是第4个字母 也就是第二个C 因为上边多了一次K++ 所以输出& 第三个执行字母D 先输出*然后再执行C即这次输出是*& 第四个执行字母A 输出%所以结果是#&*&%