c语言基础之分支和循环语句(1)

简介: C语言中由一个分号; 隔开的就是一条语句。

分支语句和循环语句


什么是语句?


C语言中由一个分号; 隔开的就是一条语句。 比如:

printf("hehe"); 
1+2;

分支语句(选择结构

如果你好好学习,校招时拿一个好offer,走上人生巅峰。如果你不学习,毕业等于失业,回家卖红薯。

这就是选择!


if语句


那if语句的语法结构是怎么样的呢?

语法结构:
if (表达式)
语句;
if (表达式)
语句1; else
语句2;
//多分支 if(表达式1)
语句1;
else if (表达式2)
语句2; else
语句3;


** 演示:**

#include <stdio.h>
//代码1 int main()
{
  int age = 0; scanf("%d", &age); if (age < 18)
  {
    printf("未成年\n");
  }
}
//代码2
#include <stdio.h> int main()
{
  int age = 0; scanf("%d", &age); if (age < 18)
  {
    printf("未成年\n");
  }
  else
  {
    printf("成年\n");
  }
}
//代码3
#include <stdio.h> int main()
{
  int age = 0; scanf("%d", &age); if (age < 18)
  {
    printf("少年\n");
  }
  else if (age >= 18 && age < 30)
  {
    printf("青年\n");
  }
  else if (age >= 30 && age < 50)
  {
    printf("中年\n");
  }
  else if (age >= 50 && age < 80)
  {
    printf("老年\n");
  }
  else
  {
    printf("老不死\n");
  }
}

解释一下: 如果表达式的结果为真,则语句执行。

在C语言中如何表示真假?

0表示假,非0表示真。

如果条件成立,要执行多条语句,怎应该使用代码块。

#include <stdio.h> int main()
{
if (表达式)
{
  语句列表1;
}
else
{
  语句列表2;
}
return 0;
}

这里的一对 { } 就是一个代码块。

悬空else

#include <stdio.h> int main()
{
  int a = 0; int b = 2; 
  if (a == 1)
    if (b == 2)
    printf("hehe\n");
  else
    printf("haha\n"); 
  return 0;
}

改正:

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要#include <stdio.h>
int main()
{
  int a = 0; int b = 2; if (a == 1)
  {
    if (b == 2)
    {
      printf("hehe\n");
    }
  }
  else
  {
    printf("haha\n");
  }
  return 0;
}

if书写形式的对比

//代码1
if (condition) {
  return x;
}
return y;
//代码2 if(condition)
{
  return x;
}
else
{
  return y;
}
//代码3
int num = 1; if (num == 5)
{
  printf("hehe\n");
}
//代码4
int num = 1; if (5 == num)
{
  printf("hehe\n");
}

代码2和代码4更好,逻辑更加清晰,不容易出错。


switch语句


switch语句也是一种分支语句。 常常用于多分支的情况。

比如:


输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期七


那我没写成if…else if …else if 的形式太复杂,那我们就得有不一样的语法形式。 这就是

switch 语句。


switch(整型表达式)

{

语句项;

}

而语句项是什么呢?

//是一些case语句:

//如下:

case 整形常量表达式: 语句;


在switch语句中的 break


在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。

比如:

#include <stdio.h> int main()
{
int day = 0; 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;
}

有时候我们的需求变了:

1.输入1-5输出的是“weekday”;

2.输入6-7输出“weekend”

所以我们的代码就应该这样实现了:

#include <stdio.h>
//switch代码演示int main()
{
int day = 0; 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;
}

break语句的实际效果是把语句列表划分为不同的部分。


编程好习惯


在最后一个 case 语句的后面加上一条 break语句。 (之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)。


default子句


如果表达的值与所有的case标签的值都不匹配怎么办? 其实也没什么,结构就是所有的语句都被跳过而已。程序并不会终止,也不会报错,因为这种情况在C中并不认为适合错误。但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢? 你可以在语句列表中增加一条default子句,把下面的标签写在任何一个case标签可以出现的位置。当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。

#include <stdio.h>
int main()
{
  int n = 1; int m = 2; 
  switch (n)
  {
  case 1:
    m++;
  case 2:
    n++;
  case 3:
    switch (n)
    {//switch允许嵌套使用
    case 1:
      n++;
    case 2:
      m++; 
      n++;
      break;
    }
  case 4:
    m++;
    break;
  default:
    break;
  }
  printf("m = %d, n = %d\n", m, n); 
  return 0;
}

image.png

从运行结果中我们可以看出,每次只用遇到break之后才算一个语句完成,否则会一直进行,不管判断条件,直到遇到下一个break


while循环


我们已经掌握了,if语句.当条件满足的情况下,if语句后的语句执行,否则不执行。但是这个语句只会执行一次。 但是我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。那我们怎么做呢? C语言中给我们引入了:while语句,可以实现循环。

//while 语法结构
while(表达式)
循环语句;

image.png

比如我们实现:在屏幕上打印1-10的数字。

#include <stdio.h> 
int main()
{
  int i = 1; while (i <= 10)
{
  printf("%d ", i); i = i + 1;
}
  return 0;
}

这个代码已经帮我了解了while语句的基本语法,那我们再了解一下:



目录
相关文章
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
75 5
|
2月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
33 8
|
2月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
44 6
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
17 0
|
2月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
C语言
《C语言及程序设计》实践项目——三种循环语句
返回:贺老师课程教学链接  【项目1:利用循环求和】求1000以内所有偶数的和要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。[参考解答]【项目2:求阶乘】输入n,求 n! 并输出[参考解答] 【项目3:输出这样的整数】输出1000以内能被3整除且个位数为6的所有整数。请在下面代码的基础上完成程序: #include &lt;stdio.h&gt; i
1022 0
|
2月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
37 3
|
9天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
33 6