程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言條件控制語句(三)

C語言條件控制語句(三)

編輯:關於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!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved