C语言第二章的分支与循环,如何巧妙结合形成高效编程技巧?

2026-04-12 03:182阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2299个文字,预计阅读时间需要10分钟。

C语言第二章的分支与循环,如何巧妙结合形成高效编程技巧?

目录+前言+2.1 分支语句+2.1.1 什么是语句+2.2 分支语句+2.2.1 if语句的语法形式+2.2.2 空白else问题+2.2.3 if书写形式的对比+2.3 switch语句+2.3.1 switch的语法形式+2.3.2 switch与break的关系+2.3.3 switch与default


目录

前言

2.1分支语句

2.1.1什么是语句

2.2分支语句

2.2.1if语句的语法形式

2.2.2悬空else问题

2.2.3if书写形式的对比

2.3switch语句

2.3.1switch的语法形式

2.3.2 switch与break的关系

2.3.3 switch与default的关系


前言

小伙伴们端午安康吖!今天我们要开始新的一章的学习!直接开始学习叭!

C语言第二章的分支与循环,如何巧妙结合形成高效编程技巧?

2.1分支语句

2.1.1什么是语句

在了解语句之前,我们先来了解以下的知识!c语言是结构化的程序设计语言!那么什么是结构化呢又或者结构化都有哪些呢?结构化主要包括:顺序结构,循环结构,选择结构!

编辑

选择结构对应的是分支语句(if switch语句),循环结构对应的是循环语句(while,for,do while)。言归正传,什么是语句呢?用分号隔开的就是语句。c语言的语句分类有以下五种

  • 表达式语句
  • 函数调用语句
  • 控制语句
  • 复合语句
  • 空语句

上代码来具体看看叭!

#include<stdio.h> int main() { 3 + 5;//表达式语句 printf("haha\n");//函数调用语句 ;//空语句 return 0; }

今天我们要讲的就是控制语句!控制语句用于控制程序的执行流程以实现程序的各种结构方式(c语言支持三种结构:顺序结构,选择结构,循环结构)它们有特定的语意符组成,c语言由九种控制语句可以分成以下三类:

  • 条件判断语句也称为分支语句:if语句,switch语句
  • 循环执行语句:while语句, for语句,do while语句
  • 转向语句:break语句 goto语句,return 语句,continue语句

2.2分支语句

2.2.1if语句的语法形式

//if的单分支语法结构 if (表达式) 语句式; //If的双分支的语法结构 if (表达式) 语句式; else 语句式; //if的多分支语法结构 if (表达式) 语句式; else if (表达式) 语句式; else if (表达式) 语句式; else;

以年龄为例,我们具体来看看if的具体使用方式叭!当年龄小于18时我们要进行打印未成年,先用if单分支情况来试试叭

编辑

哦豁,当输入13的时候真的打印了未成年欸,那要是当我们输入大于18时打印出成年人,可以谈恋爱该怎么办呢?再上代码叭

#include<stdio.h> int main() { int age = 0; scanf("%d", &age); if (age > 18) printf("成年人\n"); printf("可以谈恋爱\n"); return 0; }

运行一下看看能不能达到我们的预期叭

编辑

这里来看貌似是按照我们的预期来的!我们再输入一个值看看叭,当我们输入13时又会出现什么结果呢?

编辑

这时竟然也打印了可以谈恋爱!可是13不是成年人呐!这时我们会发现代码出现了错误但是程序在编译时并没有出错!那么我们该怎么改呢?这里会报错是因为If后面默认控制一条语句,当出现了多条语句时要使用大括号!

#include<stdio.h> int main() { int age = 0; scanf("%d", &age); if (age > 18) { printf("成年人\n"); printf("可以谈恋爱\n"); } return 0; }

此时我们再输入13就没有问题啦(同时上面的也是复合语句的写法)

编辑

总结一下:If语句默认控制一条语句,当出现多条语句时要使用大括号!

在用代码来看看If的双分支情况叭

#include<stdio.h> int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年\n"); } else { printf("成年人\n"); } return 0; }

这个语句也很简单,但是有一个需要注意的点:else后面不可以直接跟语句!

#include<stdio.h> int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年\n"); } else(age >= 20)//代码在编译期间会报错 { printf("青年人\n"); } return 0; }

else后面想要跟语句的话得再加一个if,此时就要用到多分支啦,上代码

#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 < 100) { printf("老年人\n"); } else { printf("老年人\n"); } return 0; }

以上的代码有两个需要注意的地方:

  1. else后面不可以直接跟语句,而else if可以直接跟语句(再次强调)!!
  2. 不可以采用数学的写法:50<=age<=100这种写法是错误的·,这种写法才是正确的age>=50&&age<=100

2.2.2悬空else问题

直接上代码!

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

是会打印hehe还是会打印haha1还是二者都打印亦或是二者都不打印呢?我们一起ctrl+f5来看看结果吧!

编辑

这时我们会发现什么也没有进行打印,这是为什么呢!这是因为else只与离得最近的if进行匹配而不是离得最近的!所以我们的代码应该是这个样子的

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

为了更好的理解,也可以在if后面使用{ }

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

从这个代码中我们得出两点:

  1. ·else与离得最近的if进行匹配
  2. 在进行书写代码时要注意代码风格的问题。

关于代码风格的问题推荐酱酱们去看林锐博士写的《高质量c/c++编程》,里面有很好的讲述噢!

2.2.3if书写形式的对比

//第一种 if (condition) { return x; } return y; //第二种 if (condition) { return x; } else { return y; }

这俩种进行对比,酱酱们觉得哪种读起来简单明了呢?没错就是第二种!再次强调一遍一定要去看林锐博士写的《高质量c/c++编程》!

2.3switch语句

2.3.1switch的语法形式

sitch(整型表达式) { 语句项; }

其中语句项由case语句组成!那么case语句的结构是什么样的,上代码!

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

其中值得注意的是:switch里的整型表达式决定了case的入口!

2.3.2 switch与break的关系

题目·:输入1到7可以得出相应的星期,以题目为例来熟悉switch的语法吧

#include<stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期1\n"); case 2: printf("星期2\n"); case 3: printf("星期3\n"); case 4: printf("星期4\n"); case 5: printf("星期5\n"); case 6: printf("星期6\n"); case 7: printf("星期天\n"); } return 0; }

写的很棒,再来运行一下看看结果叭

编辑

我们输入2确实出现了我们想要的星期2,但是为什么还出现星期3到星期天呢?这就不得不要介绍switch与break的关系啦。在switch中,case决定入口,break决定出口。倘如语句中没有break,则会一直执行下去。

#include<stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期1\n"); break; case 2: printf("星期2\n"); break; case 3: printf("星期3\n"); break; case 4: printf("星期4\n"); break; case 5: printf("星期5\n"); break; case 6: printf("星期6\n"); break; case 7: printf("星期天\n"); break; } return 0; }

编辑

此时就可以得到我们想要的结果啦!那要是我们想要把1到星期五都输出weekday,星期六和星期天都输出weekend!还是像之前一样写吗?不不不,我们该做一些变动

#include<stdio.h> 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"); } return 0; }

这样是不是简单多啦!再次进行总结:

  • 在switch中搭配break,可以实现真正的分支
  • break语句的实际效果是把语句列表划分为不同的分支部分

最后再来一个注意事项:在最后一个case语句的后面加上一条break语句,这是为了避免之前一个case语句忘了添加break语句。

2.3.3 switch与default的关系

当输入的值与所有项都不匹配,代码运行时也不进行报错,但是我们又并不想要时此时可以用上default语句。default语句的位置可以写在case语句的任意位置。default语句也要跟上一个break噢,利用代码来看看具体的实现形式叭

#include<stdio.h> 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"); default: printf("输入错误\n"); break; } return 0; }

编辑

浅浅的总结一下叭

  • 当switch表达式的值与所有的case标签的值都不匹配时,default子句后的语句就会执行
  • case与整型常量表达式之间有一个空格

以上就是今天的内容啦,端午安康酱酱们!!


本文共计2299个文字,预计阅读时间需要10分钟。

C语言第二章的分支与循环,如何巧妙结合形成高效编程技巧?

目录+前言+2.1 分支语句+2.1.1 什么是语句+2.2 分支语句+2.2.1 if语句的语法形式+2.2.2 空白else问题+2.2.3 if书写形式的对比+2.3 switch语句+2.3.1 switch的语法形式+2.3.2 switch与break的关系+2.3.3 switch与default


目录

前言

2.1分支语句

2.1.1什么是语句

2.2分支语句

2.2.1if语句的语法形式

2.2.2悬空else问题

2.2.3if书写形式的对比

2.3switch语句

2.3.1switch的语法形式

2.3.2 switch与break的关系

2.3.3 switch与default的关系


前言

小伙伴们端午安康吖!今天我们要开始新的一章的学习!直接开始学习叭!

C语言第二章的分支与循环,如何巧妙结合形成高效编程技巧?

2.1分支语句

2.1.1什么是语句

在了解语句之前,我们先来了解以下的知识!c语言是结构化的程序设计语言!那么什么是结构化呢又或者结构化都有哪些呢?结构化主要包括:顺序结构,循环结构,选择结构!

编辑

选择结构对应的是分支语句(if switch语句),循环结构对应的是循环语句(while,for,do while)。言归正传,什么是语句呢?用分号隔开的就是语句。c语言的语句分类有以下五种

  • 表达式语句
  • 函数调用语句
  • 控制语句
  • 复合语句
  • 空语句

上代码来具体看看叭!

#include<stdio.h> int main() { 3 + 5;//表达式语句 printf("haha\n");//函数调用语句 ;//空语句 return 0; }

今天我们要讲的就是控制语句!控制语句用于控制程序的执行流程以实现程序的各种结构方式(c语言支持三种结构:顺序结构,选择结构,循环结构)它们有特定的语意符组成,c语言由九种控制语句可以分成以下三类:

  • 条件判断语句也称为分支语句:if语句,switch语句
  • 循环执行语句:while语句, for语句,do while语句
  • 转向语句:break语句 goto语句,return 语句,continue语句

2.2分支语句

2.2.1if语句的语法形式

//if的单分支语法结构 if (表达式) 语句式; //If的双分支的语法结构 if (表达式) 语句式; else 语句式; //if的多分支语法结构 if (表达式) 语句式; else if (表达式) 语句式; else if (表达式) 语句式; else;

以年龄为例,我们具体来看看if的具体使用方式叭!当年龄小于18时我们要进行打印未成年,先用if单分支情况来试试叭

编辑

哦豁,当输入13的时候真的打印了未成年欸,那要是当我们输入大于18时打印出成年人,可以谈恋爱该怎么办呢?再上代码叭

#include<stdio.h> int main() { int age = 0; scanf("%d", &age); if (age > 18) printf("成年人\n"); printf("可以谈恋爱\n"); return 0; }

运行一下看看能不能达到我们的预期叭

编辑

这里来看貌似是按照我们的预期来的!我们再输入一个值看看叭,当我们输入13时又会出现什么结果呢?

编辑

这时竟然也打印了可以谈恋爱!可是13不是成年人呐!这时我们会发现代码出现了错误但是程序在编译时并没有出错!那么我们该怎么改呢?这里会报错是因为If后面默认控制一条语句,当出现了多条语句时要使用大括号!

#include<stdio.h> int main() { int age = 0; scanf("%d", &age); if (age > 18) { printf("成年人\n"); printf("可以谈恋爱\n"); } return 0; }

此时我们再输入13就没有问题啦(同时上面的也是复合语句的写法)

编辑

总结一下:If语句默认控制一条语句,当出现多条语句时要使用大括号!

在用代码来看看If的双分支情况叭

#include<stdio.h> int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年\n"); } else { printf("成年人\n"); } return 0; }

这个语句也很简单,但是有一个需要注意的点:else后面不可以直接跟语句!

#include<stdio.h> int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年\n"); } else(age >= 20)//代码在编译期间会报错 { printf("青年人\n"); } return 0; }

else后面想要跟语句的话得再加一个if,此时就要用到多分支啦,上代码

#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 < 100) { printf("老年人\n"); } else { printf("老年人\n"); } return 0; }

以上的代码有两个需要注意的地方:

  1. else后面不可以直接跟语句,而else if可以直接跟语句(再次强调)!!
  2. 不可以采用数学的写法:50<=age<=100这种写法是错误的·,这种写法才是正确的age>=50&&age<=100

2.2.2悬空else问题

直接上代码!

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

是会打印hehe还是会打印haha1还是二者都打印亦或是二者都不打印呢?我们一起ctrl+f5来看看结果吧!

编辑

这时我们会发现什么也没有进行打印,这是为什么呢!这是因为else只与离得最近的if进行匹配而不是离得最近的!所以我们的代码应该是这个样子的

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

为了更好的理解,也可以在if后面使用{ }

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

从这个代码中我们得出两点:

  1. ·else与离得最近的if进行匹配
  2. 在进行书写代码时要注意代码风格的问题。

关于代码风格的问题推荐酱酱们去看林锐博士写的《高质量c/c++编程》,里面有很好的讲述噢!

2.2.3if书写形式的对比

//第一种 if (condition) { return x; } return y; //第二种 if (condition) { return x; } else { return y; }

这俩种进行对比,酱酱们觉得哪种读起来简单明了呢?没错就是第二种!再次强调一遍一定要去看林锐博士写的《高质量c/c++编程》!

2.3switch语句

2.3.1switch的语法形式

sitch(整型表达式) { 语句项; }

其中语句项由case语句组成!那么case语句的结构是什么样的,上代码!

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

其中值得注意的是:switch里的整型表达式决定了case的入口!

2.3.2 switch与break的关系

题目·:输入1到7可以得出相应的星期,以题目为例来熟悉switch的语法吧

#include<stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期1\n"); case 2: printf("星期2\n"); case 3: printf("星期3\n"); case 4: printf("星期4\n"); case 5: printf("星期5\n"); case 6: printf("星期6\n"); case 7: printf("星期天\n"); } return 0; }

写的很棒,再来运行一下看看结果叭

编辑

我们输入2确实出现了我们想要的星期2,但是为什么还出现星期3到星期天呢?这就不得不要介绍switch与break的关系啦。在switch中,case决定入口,break决定出口。倘如语句中没有break,则会一直执行下去。

#include<stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期1\n"); break; case 2: printf("星期2\n"); break; case 3: printf("星期3\n"); break; case 4: printf("星期4\n"); break; case 5: printf("星期5\n"); break; case 6: printf("星期6\n"); break; case 7: printf("星期天\n"); break; } return 0; }

编辑

此时就可以得到我们想要的结果啦!那要是我们想要把1到星期五都输出weekday,星期六和星期天都输出weekend!还是像之前一样写吗?不不不,我们该做一些变动

#include<stdio.h> 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"); } return 0; }

这样是不是简单多啦!再次进行总结:

  • 在switch中搭配break,可以实现真正的分支
  • break语句的实际效果是把语句列表划分为不同的分支部分

最后再来一个注意事项:在最后一个case语句的后面加上一条break语句,这是为了避免之前一个case语句忘了添加break语句。

2.3.3 switch与default的关系

当输入的值与所有项都不匹配,代码运行时也不进行报错,但是我们又并不想要时此时可以用上default语句。default语句的位置可以写在case语句的任意位置。default语句也要跟上一个break噢,利用代码来看看具体的实现形式叭

#include<stdio.h> 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"); default: printf("输入错误\n"); break; } return 0; }

编辑

浅浅的总结一下叭

  • 当switch表达式的值与所有的case标签的值都不匹配时,default子句后的语句就会执行
  • case与整型常量表达式之间有一个空格

以上就是今天的内容啦,端午安康酱酱们!!