第四章 选择结构程序设计
C语言有两种选择语句:(1)if语句,用来实现两个分支的选择结构;(2)switch语句,用来实现多分支的选择结构。
例:
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,x1,x2,disc,p,q;
scanf("%lf%lf%lf",&a,&b,&c);//输入双精度浮点型变量的值要用格式声明%lf
disc=b*b-4*a*c;//disc是判别式(b*b-4ac)
if(disc<=0)//若b2-4ac<0
{
printf("傻逼算不出来\n");//无解
}
else//b2-4ac>=0
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;//求这两个解
x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);//输出两个解
}
return 0;
}
if语句的一般形式
(1)if(表达式)语句1 (没有else子句部分)
(2)if(表达式) (有else子句部分)
语句1
else
语句2
(3)if(表达式1) 语句1 (在else部分又嵌套了多层的if语句)
else if(表达式2) 语句2
else if(表达式3) 语句3
#include<stdio.h>
#include<math.h>
int main()
{
printf("1:一次存五年期。\n2:先存两年期,到期后将本息在存三年期.\n3:先存三年期,到期后将本息再存两年期。\n4:存一年期,到期后将本息再存一年期,连续存五次。\n5:存活期存款,活期利息每一季度结算一次。\n你的选择是:");
int a,n1,n2;
n1=2;
n2=3;
//m=1000;
double P,P1;
scanf("%d",&a);
//printf("%d\n",a);
if(a==1)
{
P=1015;//1000*(1+0.015);
printf("连本带利:%f\n",P);
}
else if(a==2)
{
P1=1000*(1+2*0.021);
P=P1*(1+3*0.0275);
printf("连本带利:%f\n",P);
}
else if(a==3)
{
P1=1000*(1+3*0.0275);
P=P1*(1+2*0.021);
printf("连本带利:%f\n",P);
}
else if(a==4)
{
P1=pow(1.015,5);
P=1000*P1;
printf("连本带利:%f\n",P);
}
else if(a==5)
{
P1=pow(1.000875,20);
P=1000*P1;
printf("连本带利:%f\n",P);
}
else
{
printf("没有\n");
}
//printf("连本带利:%f\n",P);
//return 0;
}//if和else是两种情况
//if和else和else if是三种情况
运算逻辑符和逻辑表达式
&&与
||或
!非
a | b | !a | !b | a&&b | a或b |
---|---|---|---|---|---|
真 | 真 | 假 | 假 | 真 | 真 |
真 | 假 | 假 | 真 | 假 | 真 |
假 | 真 | 真 | 假 | 假 | 真 |
假 | 假 | 真 | 真 | 假 | 假 |
逻辑运算真值表
a | b | !a | !b | a&&b | a或b |
---|---|---|---|---|---|
非0 | 非0 | 0 | 0 | 1 | 1 |
非0 | 0 | 0 | 1 | 0 | 1 |
0 | 非0 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | 1 | 0 | 0 |
用switch语句实现多分支选择结构
形如:
switch(表达式)
{
case 常量1:
语句1;
case 常量2:
语句2;
case 常量n:
语句n;
defaule:语句n+1;
}
用switch语句处理菜单命令,假如输入A或a,执行A操作;输入B或a,执行B操作。
#include<stdio.h>
int main()
{
void action1(int,int),action2(int,int);//函数声明
char ch;
int a=15,b=23;
ch=getchar();
switch(ch)
{
case'a':
case'A': action1(a,b);break;//调用action1函数,执行A操作
case'b':
case'B': action2(a,b);break;//调用action2函数,执行B操作
dafult:putchar('\a');//如果输入其他字符,发出警告
}
return 0;
}
void action1(int x, int y)
{
printf("x+y=%d\n",x+y);
}
void action2(int x,int y)
{
printf("x*y=%d\n",x*y);
}
判断2000-2500年的闰年和非闰年
#include<stdio.h>
int main()
{
int a;
int year,b=2500;
for(year=2000;year<=2500 ; year++)
{
if(year%400==0)
a=1;
else
{
if(year%4==0&&year%100!=0)
a=1;
else
a=0;
}
if(a==1)
{
printf("%d 此年为闰年\n",year);
}
else
{
printf("%d 此年不是闰年\n",year);
}
}
return 0;
}
判断条件:普通年份除以4余数为0,世纪年除以400余数为0.