C语言语句之分支语句

简介: C语言语句之分支语句

C语言是一门结构化的程序设计语言,包括顺序、选择、循环三种语言结构。


什么是语句?


1.表达式语句;


2.函数调用语句;


3.控制语句;


4.复合语句;


5.空语句;


接下来的几篇博客介绍的是控制语句


控制语句可以分成以下三类共九种语句


1.条件判断语句:if语句 switch语句


2.循环执行语句:do while 语句 while语句 for语句


3.转向语句:break 语句 goto 语句 continue语句 return语句


分支语句(条件判断语句)


如果你好好写博客,每天练题敲代码等到大三校招时拿个好offer走上人生巅峰


如果你每天摆烂,校招时作为一个三无人员只能卖红薯!


这就是选择!!!


if 语句

语法结构:

单分支

if(表达式)
    语句;


双分支

if(表达式)
    语句1;
else
    语句2;


多分支

if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;


例:多组输入年龄判断是否成年,如果年龄大于等于18输出成年,反之输出未成年;

int main()
{
  int age = 0;
  while (scanf("%d", &age)!=EOF)
  {
    if (age >= 18)
    {
      printf("成年\n");
    }
    else
    {
      printf("未成年\n");
    }
  }
  return 0;
}


e2be24de90b148e59615c2dd5b18a6e4.png


注意:

(1)  else 后面想要加条件必须加if

(2)  if和else语句后面默认只管理一条语句

int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
    printf("不能交女朋友\n");
  printf("交女朋友\n");
  return 0;
}


4419ca2f882f4423866471e983f18896.png

(3)  悬空else(else只与最近的if匹配)

int main()
{
  int a = 0;
  int b = 0;
  if (a == 1)
    if (b == 2)
      printf("hehe\n");
  else
    printf("haha\a");
  return 0;
}


333e187982e440afa1f54b0221a2cf88.png


打印结果为空并不是haha;

在书写分支代码时候一定不要吝啬大括号的使用避免造成难以找到的bug,以及养成良好的代码风格;

给大家推荐一本能促成大家养成良好代码风格的书籍https://vrlab.org.cn/~zhuq/download/%E9%AB%98%E8%B4%A8%E9%87%8F%E7%BC%96%E7%A8%8B%E6%8C%87%E5%8D%97.pdf

经典题目

判断一个数是否为奇数

int main()
{
  int i = 0;
  while (scanf("%d", &i) != EOF)
  {
    if (i % 2 == 1)
    {
      printf("奇数\n");
    }
    else
    {
      printf("偶数\n");
    }
  }
  return 0;
}


输出1-100之间的奇数

int main()
{
  int i = 1;
  while (i < 101)
  {
    if (i % 2 == 1)
    {
      printf("%d ", i);
    }
    i++;
  }
  return 0;
}


我们可以将上面的代码进行优化让i=1,每次只打印i+2

int main()
{
  int i = 1;
  while (i < 101)
  {
    printf("%d ", i);
    i+=2;
  }
  return 0;
}


一个小tips:我们在运用if语句时经常会进行两个数值的判断(==),但在实际情况中难免会出错只写了一个=,编译器并不会报错,我们可以按下面的方法写,编译器会识别出我们的错误

if(5==i)//将数字写在前面
{
    语句;
}


switch语句

语法结构:

switch(整形表达式)
{
    语句项:
}


例:输入数字输出对应的星期数

int main ()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
    printf("星期一\n");
  case 2:
    printf("星期二\n");
  case 3:
    printf("星期三\n");
  case 4:
    printf("星期四\n");
  case 5:
    printf("星期五\n");
  case 6:
    printf("星期六\n");
  case 7:
    printf("星期七\n");
  }
  return 0;
}


74e3800fa6bc4b95b56e77f1596791aa.png


switch语句中break中的作用

我们会发现输入1并不是只输出星期一,而是全部输出;并不是我们想要的结果,解决这个问题其实很简单只要在每个语句项后面加个break就可以实现;因为switch语句在语句项中知道遇见break才会停止,否则会运行到最后一条语句;

int main ()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
    printf("星期一\n");
    break;
  case 2:
    printf("星期二\n");
    break;
  case 3:
    printf("星期三\n");
    break;
  case 4:
    printf("星期四\n");
    break;
  case 5:
    printf("星期五\n");
    break;
  case 6:
    printf("星期六\n");
    break;
  case 7:
    printf("星期七\n");
    break;
  }
  return 0;
}


ad30d34e27d44225aa5ddd0e63468053.png

例:输入一个数字当其小于等于5时输出weekday,6-7输出weekend;

int main ()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    printf("weekday\n");
    break;
  case 6:
  case 7:
    printf("weekend\n");
    break;
  }
  return 0;
}


bae118e357bd4ea6b8ac03f8f6880adc.png


这样就能体现出break在switch中的重要作用

default在switch中的作用

加入我们在上面的代码中输入8呢?程序该怎么走?那我们就可以用default语句来解决

int main ()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    printf("weekday\n");
    break;
  case 6:
  case 7:
    printf("weekend\n");
    break;
  default :
    printf("输入错误\n");
  }
  return 0;
}


47b6df8ed2ee4dfd98a717b39f323a74.png

注:default在switch中可以放在任意位置

总结:以上便是C语言控制语句中的的if 语句和switch 语句主要在进行选择使用

下一篇预告:循环语句

相关文章
|
4月前
|
C语言
C语言之分支结构
C语言之分支结构
45 0
|
4月前
|
C语言 数据安全/隐私保护
C语言初阶②(分支语句和循环语句)编程练习
C语言初阶②(分支语句和循环语句)编程练习
49 1
|
3月前
|
C语言
【C语言基础】:分支与循环
【C语言基础】:分支与循环
|
28天前
|
C语言
【C语言篇】分支语句详解(超详细)
在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
|
1月前
|
C语言
C语言分支语句
C语言分支语句
16 4
|
3月前
|
C语言
C语言循环与分支
C语言循环与分支
36 5
|
4月前
|
C语言
C语言分支与循环
C语言分支与循环
34 2
|
4月前
|
编译器 C语言
C语言(3)----分支和循坏以及操作符
C语言(3)----分支和循坏以及操作符
45 1
|
3月前
|
C语言
C语言-----分支和循环
C语言-----分支和循环
|
4月前
|
C语言 数据安全/隐私保护
C语言初阶①(分支语句和循环语句)知识点(下)
C语言初阶①(分支语句和循环语句)知识点
35 1