5.1用于分支控制的条件语句
//单分支,求两个整数的最大值
if(a>b)
max=a;
if(a<=b)
max=b;
//双分支
if(a>b)
max=a;
else
max=b;
//条件运算符和条件表达式
max=a>b?a,b;
//多分支求二元一次方程的根
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define ESP 1e-6
/*
浮点数并非真正意义上的实数,只是某种范围的近似,因此也只能用某种近似的方法将实数与0进行比较。
*/
int main()
{
float a,b,c,disc,p,q;
scanf("%f,%f,%f",&a,&b,&c);
if(fabs(a)<=1e-6)
{
exit(0);//终止程序的执行,返回操作系统。
}
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(fabs(disc))/(2*a);
if(fabs(disc)<=ESP)
{
printf("x1=x2=%.2f\n",p);
}
else
{
if(disc>ESP)
{
printf("x1=%.2f,x2=%.2f",p+q,p-q);
}
else
{
printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n".p,q,p,q);
}
}
}
//switch分支结构进行加减乘除
#include<stdio.h>
int main()
{
int date1,date2;
char op;
scanf("%d%c%d",&date1,&date2,&op);
switch(op)
{
case '+':
printf("%d\n",date1+date2);
break;
case '*':
printf("%d\n",date1*date2);
break;
case '-':
printf("%d\n".date1-date2);
break;
case '/:
if(date2==0)
{
printf("error!\n");
}
else
{
printf("%d\n",date1/date2);
}
break;
default:
printf("error!\n");
}
}
//&&和||短路特性
/*
a>1&&b++>2,如果a>1为假,就不执行后面的部分了。
*/