C语言条件控制语句(三)

3.3.2switch语句
if语句只能处理从两者间选择之一,当要实现几种可能之一时,就要用if...elseif甚至多重的嵌套if来实现,当分支较多时,程序变得复杂冗长,可读性降低。C语言提供了switch开关语句专门处理多路分支的情形,使程序变得简洁。
switch语句的一般格式为:
switch<表达式>
case常量表达式1:语句序列1;
break;
case常量表达式2:语句序列2;
break;
⋯⋯
case常量表达式n:语句n;
break;
default:语句n+1;
其中常量表达式的值必须是整型,字符型或者枚举类型,各语句序列允许有多条语句,不需要按复合语句处理,若语句序列i为空,则对应的break语句可去掉。图3-7是switch语句的流程图。
特殊情况下,如果switch表达式的多个值都需要执行相同的语句,可以采用下面的格式:

switch(i)
{
case1:
case2:
case3:语句1;
break;
case4:
case5:语句2;
break;
default:语句3;
}

当整型变量i的值为1、2或3时,执行语句1,当i的值为4或5时,执行语句2,否则,执行
语句3。
[例3-9]输入月份,打印1999年该月有几天。
程序如下:
#include<stdio.h>
main()
{
int month;
int day;
printf("please input the month number:");
scanf("%d",&month);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;
break;
case 4:
case 6:
case 9:
case 11:day=30;
break;
case 2:day=28;
break;
default:day=-1;
}
if day=-1
printf("Invalid month input !\n");
else
printf("1999.%dhas%ddays\n",month,day);
}
3.3.3程序应用举例
[例3-10]解一元二次方程ax2+bx+c=0,a、b、c由键盘输入。
分析:对系数a、b、c考虑以下情形
1)若a=0:
①b<>0,则x=-c/b;
②b=0,则:①c=0,则x无定根;
②c<>0,则x无解。
2)若a<>0;
①b2-4ac>0,有两个不等的实根;
②b2-4ac=0,有两个相等的实根;
③b2-4ac<0,有两个共轭复根。
用嵌套的if语句完成。程序如下:
#include<math.h>
#include<stdio.h>
main()
{
float a,b,c,s,x1,x2;
doublet;
printf("please input a,b,c:");
scanf("%f%f%f",&a,&b,&c);
if(a==0.0)
if(b!=0.0)
printf("the root is:%f\n",-c/b);
elseif(c==0.0)
printf("x is inexactive\n");
else
printf("no root !\n");
else
{
s=b*b-4*a*c;
if(s>=0.0)
if(s>0.0)
{
t=sqrt(s);
x1=-0.5*(b+t)/a;
x2=-0.5*(b-t)/a;
printf("There are two different roots:%fand%f,\xn1",x2);
}
else
printf("There are two equal roots:%f\n",-0.5*b/a);
else
{
t=sqrt(-s);
x1=-0.5*b/a;/*实部*/
x2=abs(0.5*t/a);/*虚部的绝对值*/
printf("There are two virtual roots:");
printf("%f+i%f\t\t%f-i%f\n",x1,x2,x1,x2);
}
}
}
运行结果如下:
RUN
please input a,b,c:123
There are two virtual roots:
-1.000000+i1.000000-1.000000-i1.000000
RNU
pleaseinputa,b,c:253
There are two different roots:-1.500000and-1.000000
RNU
please input a,b,c:003¿
No root!

时间: 2024-12-12 17:18:44

C语言条件控制语句(三)的相关文章

C语言条件控制语句(一)

在程序的三种基本结构中,第二种即为选择结构,其基本特点是:程序的流程由多路分支组成,在程序的一次执行过程中,根据不同的情况,只有一条支路被选中执行,而其他分支上的语句被直接跳过. C语言中,提供if语句和switch语句选择结构,if语句用于两者选一的情况,而switch用于多分支选一的情形. 3.3.1 if语句 1.if语句的两种基本形式首先,我们看一个例子,由此了解选择结构的意义及设计方法. [例3-5]输入三个数,找出并打印其最小数. 分析:设三个数为A.B.C,由键盘读入,我们用一个变

C语言条件控制语句(二)

3.if...elseif语句 实际应用中常常面对更多的选择,这时,将if...else扩展一下,就得到if...elseif结构,其一般形式为: if<表达式1> 语句1 else if<表达式2> 语句2 else if<表达式3> 语句3 else 语句4 对应的流程图见图3-4. [例3-7]货物征税问题,价格在1万元以上的征5%,5000元以上1万元以下的征3%,1000元以上5000以下的征2%,1000元以下的免税,读入货物价格,计算并输出税金. 分析:读

linux语句if条件控制语句

问题描述 linux语句if条件控制语句 if [ -s $MAIL_FILE -a ""$MAILOUT"" = ""TRUE"" ]谁能帮我解释一下这条语句,详细的.灰常感谢 解决方案 字丑了点,将就一下哈 解决方案二: if [ -s $MAIL_FILE -a ""$MAILOUT"" = ""TRUE"" ].""-s

PHP条件控制语句实例程序

PHP条件控制语句一共有三种: 第一种:if语句: 第二种:switch语句: 第三种:三元操作符: 分别讲解下这三种条件控制语句. 第一种:if语句. if语法有以下几种格式: 1). if (表达式一) {  //满足条件执行以下程序段 执行语句; } 例如:  代码如下 复制代码 <?php if ($a > $b) { echo "a is bigger than b"; $b = $a; } ?> 2). if (表达式一){   //满足条件执行以下程序段

java-eclipse按ctrl+shift+f格式化代码,如何让条件控制语句不换行

问题描述 eclipse按ctrl+shift+f格式化代码,如何让条件控制语句不换行 例如我有这样的语句:写在一行的if.for.while语句.每次按ctrl+shift+F格式化代码的时候,一行就会变成两行,深深的觉得屏幕小,一行就可以 .所以怎么设置,按ctrl+shift+F格式化代码的时候,if,for.while等语句不会自定换行 ? 解决方案 格式化里一个处理一行的.这个应该是默认的,只能手动改吧. 解决方案二: 设置格式里有自定义设置 解决方案三: eclipse的window

c语言基础问题-三个数的四则运算用c语言怎么写。只要思路

问题描述 三个数的四则运算用c语言怎么写.只要思路 如何判断优先级来进行三个数的四则运算..只用printf scanf switch 和if语句.想了好久了计算器"> 解决方案 lz你读入运算的方式是什么啊,可以在这上面做一些判断 解决方案二: 四则运算(C语言)大数四则运算(C语言) 解决方案三: 根据题主要求,需要如下限制: 1.三个数以内的运算,需要进行输入数判断(即三个数以上的情况时要么直接截断不允许输入,要么输入无效化); 2.四则运算,需要对符号做判别,可用if或者switc

谈谈Go语言的反射三定律_Golang

简介 Reflection(反射)在计算机中表示 程序能够检查自身结构的能力,尤其是类型.它是元编程的一种形式,也是最容易让人迷惑的一部分. 虽然Go语言没有继承的概念,但为了便于理解,如果一个struct A 实现了 interface B的所有方法时,我们称之为"继承". 类型和接口 反射建立在类型系统之上,因此我们从类型基础知识说起. Go是静态类型语言.每个变量都有且只有一个静态类型,在编译时就已经确定.比如 int.float32.*MyType.[]byte. 如果我们做出

(二十九)java条件控制语句培训笔记

java结构控制语句示例:if,if else,switch case 定义三个变量:   1:在这个例子中,if并列,则每一次都会进行判断,条件为true则输出里边的内容 ,因此,这里会输出one和four   2:这里的if后边跟的是else if,当有一个条件满足时,之后的条件就不会继续执行;因此这里只会输出one,尽管第四个条件是true,但是因为程序走不到这里,所以不会执行;并且,因为a和c只存在等于和不等于两种情况,所以这段程序必定会走前两条之一,后两条也就永远不会执行了   3:s

条件(三目)运算符 (?:)

条件|运算   根据条件执行两个语句中的其中一个. test ? 语句1 : 语句2 参数 test 任何 Boolean 表达式. 语句1 当 test 是 true 时执行的语句.可以是复合语句. 语句2 当 test 是 false 时执行的语句.可以是复合语句. 说明 ?: 运算符是 if...else 语句的快捷方式.它通常被用作较大表达式的一部分,而在此处使用 if...else 语句是不协调的.例如: var now = new Date();var greeting = "Goo