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语句的基本语法,那我们再了解一下:



目录
相关文章
|
1月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
66 5
|
26天前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
28 8
|
26天前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
34 6
|
1月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
1月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
15 0
|
1月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
33 3
|
C语言 SDN
《C语言及程序设计》程序阅读——用循环累加
返回:贺老师课程教学链接  写出下面程序运行的结果。(1) #include &lt;stdio.h&gt; int main( ) { int i,m=1; for(i=5; i&gt;=1; i--) { m=(m+1)*2; printf("m=%d\n",m); } return 0; } (2)#include
795 0
|
C语言
《C语言及程序设计》实践项目——用循环累加
返回:贺老师课程教学链接  【项目1:分数的累加】编程序,输出1/3-3/5+5/7-7/9…+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条“由易到难”的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来。(1)1+2+...+20  ——这个应该会(2)1+1/2+1/3+…+1/20  ——分数的累加,注意两个整型相除,商也为整型,而显然求和结果应该是小数(3)1/2
985 0