C语言的循环与分支

描述

我们大家都知道,c语言是一门** 结构化 **的程序设计语言,程序的运行都是以某种结构和顺序为骨架去执行的,那么本期就向大家介绍一下c语言的几种结构。

本期主要介绍分支与循环语句

1.什么是语句

2.if语句

3.switch语句

  • 什么是语句

c语言中用一个分号 ;隔开的就是一条语句。例如:

int main()
{
   int a=0;//语句由分号隔开,一条语句由分号表示结束
   printf ("%d\\n" , a);
   ; //这也是一种语句
   return 0;
}

一个程序基本的组成单位就是语句,值得一提的是 即使一个语句中只有一个分号(如上所示),它也是一条正确的语句,我们后面会有特殊的用法。

  • 分支语句

程序设计语言

如上图,我们在编程中常会遇到上述的结构,它们含有两个或多个分支,如果想准确表达上图所表示的意思,我们就要使用分支语句,其中包含if语句和switch语句。

  • lf语句

if语句的语法结构

if(表达式){
   语句;
}


if(表达式){
  语句1;
}
else
{
  语句2;
}
//多分支
if(表达式1){
  语句1
}
else if(表达式2){
  语句2;
}
else {
  语句3;
}

以上三种结构几乎可用于一切的分支情况。

  • if语句如何执行

对于这种结构的分支语句来说:

if(表达式){
   语句;
}

只需要判断表达式的值是否为真,若表达式为真则执行语句,否则跳出分支语句。

如何判断表达式是否为真?

表达式为零则为假,表达式为非零则为真

对于这种结构的分支语句来说:

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

只需要判断表达式的值是否为真,若表达式为真则执行语句1,否则执行语句2。

对于这种结构的分支语句来说:

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

首先判断表达式1的值是否为真,如果为真则执行语句1,否则判断表达式2的值是否为真,若表达式2的值为真则执语句2,否则执行语句3。

值得一提的是,if自动匹配之后的一条语句,但若超过两条,则需要用”{}“括起来。如下图所示,程序返回了”4“,验证了我们的说法。

#include
int  test(int a)
{
  if (a)
    return 2;//若if包含下一条语句,程序会打印4,若包含两条以上,程序会打印2
  return 4;
}
int main()
{
  int a = 1;
  int b=test(a);
  printf("%d\\n", b);
  return 0;
}
  • switch语句

switch也是一种分支语句。常常用于多分支的情况,例如,下面这种情景:

输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日

switch语句的语法结构

switch(整型表达式)
{
  case 整型表达式值1:
    语句1;
  case 整型表达式值2:
    语句2;
  case 整型表达式值3:
    语句3;
  case 整型表达式值4:
    语句4;
…
  default :
    语句5;
}
  • switch语句如何执行

    switch语句首先判断整型表达式的值,当整型表达式与某个case后的值i相等时,则执行语句i至最后一条语句,当整型表达式的值与任意一个case后的值均不相等,则执行default语句至最后一条语句。

  • switch中的break

    switch语句只能选择从某条语句开始执行,并不能选择只执行某条case后的语句。也就是说,switch语句在开始执行后,除非遇到break或return,否则语句会逐个执行接下来的case语句直到语句结束。这里可以借用break语句来实现多分支。

那么上面打印星期几的问题就可用以下代码来解决:

# include 
int main()
{
  int day;
  printf("请输入day的值\\n");
  scanf_s("%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;
  }
}
  • switch语句的特殊应用场景

那么如果我们的需求变成了”输入15,输出工作日,输入67,输出休息日“的话,我们可以通过调整输出语句和break 语句的位置来实现。如下所示

#include
#include
#include
int main()
{
  int day;
  printf("请输入day的值\\n");
  scanf_s("%d", &day);
  switch (day) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:printf("工作日\\n");break;
  case 6:
  case 7:printf("休息日\\n");break;
  }
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分