分支结构
语法
本内容C语言实现的一般形式为:
单分支结构
if(判断)
{
语句;
}
双分支结构
if(判断)
{
语句;
}
else
{
语句;
}
多分支结构
if(判断)
{
语句;
}
else if(判断)
{
语句;
}
...
else
{
语句;
}
判断所用的关系用算符有 < <= > >= == !=,尤其注意后两个的使用;
与此相关的还有逻辑运算符 逻辑与(&&),逻辑或(||)
例题及代码实现
- 例题一
#include<stdio.h>
int main (void){
float x, y;
scanf("%f",&x);
if ( x == 10 )
{
y = 0.1;
}
else {
y = x;
}
printf("f(%.1f) = %.1f\n", x, y );
return 0;
}
- 例题二
#include<stdio.h>
int main()
{
float sala;
double tax;
scanf("%f",&sala);
if(sala<=1600)
{
tax=0;
}
else if(sala<=2500)
{
tax = 0.05 * (sala-1600);
}
else if(sala<=3500)
{
tax = 0.10 * (sala-1600);
}
else if(sala<=4500)
{
tax = 0.15 * (sala-1600);
}
else
{
tax = 0.20 * (sala-1600);
}
printf("%.2f",tax);
return 0;
}
疑难点
一 符号错误
经常用一个关系符,例如逻辑与(&&)与相等(== ),经常在if后的判断中写一个,以后一定要谨记&&,==。
二 情况讨论不全
有时候对所有的范围不能全部说明,例如
#include<stdio.h>
int main()
{
int lower,upper;
double celsius;
scanf("%d %d",&lower,&upper);
if(lower<=upper&&upper<=100)
{
printf("fahr celsius\n");
for(lower;lower<=upper;l+=2)
{
celsius=1.0*5*(l-32)/9;
printf("%d%6.1f\n",lower,celsius);
}
}
else
{
printf("Invalid.\n");
}
return 0;
}
如果先找补集,可能会漏掉,导致答案部分正确
三 难题
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
if(a==0&&b==0&&c!=0)
{
printf("Not An Equation");
}
else if(a==0&&b!=0&&c!=0)
{
printf("%.2f\n",-c/b);
}
else if(a==0&&b!=0&&c==0)
{
printf("%.2f\n",-c/b);
}
else if(a==0&&b==0&&c==0)
{
printf("Zero Equation");
}
else
{
double m=pow(b,2)-4*a*c;
if(m>0)
{
printf("%.2f\n",(-b+sqrt(m))/(2*a));
printf("%.2f\n",(-b-sqrt(m))/(2*a));
}
else if(m==0)
{
printf("%.2f\n",(-b)/(2*a));
}
else
{
m=(-m);
double real = (-b)/(2*a);
double image = sqrt(m)/(2*a);
if(real == 0) real = 0;
printf("%.2f+%.2fi\n",real,image);
printf("%.2f-%.2fi\n",real, image);
}
}
return 0;
}
疑难点
1.数学知识欠缺,复数根求解;
2.讨论情况比较多,容易遗漏。
循环