用if语句实现分支结构
单分支:if…
if(表达式)
单语句;
if(表达式)
{
单语句或复合语句;
}

- 功能
- 若表达式值为True(非0),则执行表达式后面的语句。执行玩该语句后继续执行if语句后的语句。
- 若表达式值为0,则不执行表达式后面的语句而直接执行if语句后面的语句。
- 说明:
- 如果表达式(条件表达式)后面的是复合语句,则要用一对花括号{}括起来。单语句可有可无。
- 案例
- 要求:计算并输出下列分段函数的值

- 流程图:

- 代码:
#include <stdio.h>
int main()
{
double x,y=-2;
printf("请输入一个整数作为x的值:\n");
scanf("%lf",&x);
if(x>=0)
y=2;
printf("x=%lf,y=%ld\n",x,y);
return 0
}
- 案例:
要求:有a,b,c三个数,要求从控制台输入,并且求最大值
分析:
- 通过控制台给a,b,c赋值
- 创建一个变量max,用来存放a,b,c中的最大值,默认a是最大值(这样可以减少一次判断)
- 让a,b和max进行比较,让最大值存入max
代码:
#include <stdio.h>
int main(int argc,char *argv[])
{
int a,b,c;
printf("请在控制台输入三个整数:\n");
scanf("%d%d%d",&a,&b,&c);
int max = a;
if (max < b)
{
max = b;
}
if (max < c)
{
max = c;
}
printf("%d,%d,%d中的最大值是%d\n",a,b,c,max);
return 0;
}
有可能产生的问题:
1. scanf()同时输入多个变量时,默认时使用空格或者回车换行。
2. 在变量赋值前使用变量,导致运算结果错误(莫名输出随机数)