c语言修炼第二章--分支与循环

这篇具有很好参考价值的文章主要介绍了c语言修炼第二章--分支与循环。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

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的关系


前言

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

2.1分支语句

2.1.1什么是语句

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

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单分支情况来试试叭

c语言修炼第二章--分支与循环

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

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

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

c语言修炼第二章--分支与循环

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

c语言修炼第二章--分支与循环

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

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

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

c语言修炼第二章--分支与循环

 总结一下: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来看看结果吧!

c语言修炼第二章--分支与循环

 这时我们会发现什么也没有进行打印,这是为什么呢!这是因为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;
}

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

c语言修炼第二章--分支与循环

 我们输入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;
}

c语言修炼第二章--分支与循环

 此时就可以得到我们想要的结果啦!那要是我们想要把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;
}

c语言修炼第二章--分支与循环

 浅浅的总结一下叭

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

以上就是今天的内容啦,端午安康酱酱们!!文章来源地址https://www.toymoban.com/news/detail-505938.html

到了这里,关于c语言修炼第二章--分支与循环的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GO语言圣经 第二章习题

    向tempconv包添加类型、常量和函数用来处理Kelvin绝对温度的转换,Kelvin 绝对零度是−273.15°C,Kelvin绝对温度1K和摄氏度1°C的单位间隔是一样的。 conv.go tempconv.go 写一个通用的单位转换程序,用类似cf程序的方式从命令行读取参数,如果缺省的话则是从标准输入读取参数,然后

    2024年02月11日
    浏览(48)
  • 《python语言程序设计基础》(第二版)第二章课后习题参考答案

    第二章 Python程序实例解析 2.1 温度转换 2.2 汇率兑换 优化: 优化的主要改动: 将货币符号和金额分离出来,使代码更加清晰易读。 将条件判断改为根据货币符号进行判断,避免重复判断。 2.3 绘制彩色蟒蛇 2.4 等边三角形的绘制 代码一: 代码二: 2.5 叠加等边三角形的绘制

    2024年03月19日
    浏览(60)
  • 第二章:指令:计算机的语言(防遗忘)

    指令 :计算机硬件所能理解并服从的命令。 存储程序概念 :多种类型的指令和数据均以数字形式存储于存储器中的概念。 字 :计算机中的基本访问单位,通常是32位为一组,在MIPS体系结构中与寄存器大小相同。 数据传送指令 :在存储器和寄存器之间移动数据的命令 地址

    2024年02月05日
    浏览(52)
  • ChatGPT技术原理 第二章:自然语言处理基础

    目录 2.1 语言模型 2.3 词嵌入 2.4 注意力机制 2.5 生成式模型

    2024年02月02日
    浏览(44)
  • 【Java入门合集】第二章Java语言基础(一)

    博主:命运之光 专栏:Java零基础入门 学习目标 掌握变量、常量、表达式的概念,数据类型及变量的定义方法; 掌握常用运算符的使用; 掌握程序的顺序结构、选择结构和循环结构的使用; 掌握数组的定义及使用方法; 掌握基本的输入输出方法; 提示:不要去强记

    2024年02月02日
    浏览(39)
  • 【Java入门合集】第二章Java语言基础(三)

    博主:命运之光 专栏:Java零基础入门 学习目标 掌握变量、常量、表达式的概念,数据类型及变量的定义方法; 掌握常用运算符的使用; 掌握程序的顺序结构、选择结构和循环结构的使用; 掌握数组的定义及使用方法; 掌握基本的输入输出方法; Java中的语句有很多种形式

    2024年02月03日
    浏览(58)
  • 谭浩强【C语言程序设计】第二章习题详解

      目录 ​编辑 1,什么是算法?试从日常生活中找3个例子,描述它们的算法。 2,什么叫结构化的算法?为什么要提倡结构化的算法? 3,试述3种基本结构的特点,请另外设计两种基本结构(要符合基本结构的特点)。 4,用传统流程图表示求解以下问题的算法。 (1)有两个

    2024年02月01日
    浏览(47)
  • 《综合与Design_Compiler》学习笔记——第一章综合综述 第二章verilog语言结构到门级的映射 第三章 使用DC进行综合

    2023.6.25 2023.6.27 和之前学的芯动力mooc中很多内容相似,这篇整理的逻辑更好些 将RTL代码转换到基于工艺库的门级网表。一般分为如下三个步骤。 (1)逻辑级综合 设计被描述成 布尔等式 的形式,触发器、锁存器这样的基本单元采用元件例化(instantiate)的方式表达出来,下面是

    2024年02月12日
    浏览(56)
  • 第二章(第二节):无穷小量和函数

    若 lim f(x) = 0 , 则称函数 f(x) 当 x → x 0 时是无穷小量,简称: 无穷小 。      x→ x 0 定理1. 有限多个 无穷小量的代数和仍是无穷小量 定理2. 有限多个 无穷小量的积也是无穷小量 定理3.常数与无穷小量的积也是无穷小量 定理4.有界变量与无穷小量的积是无穷小量 当 x→

    2024年02月08日
    浏览(53)
  • 第二章 翻译

    Section Ⅲ Translation Directions: In this section, there is a text in English. Translate it into Chinese. Write your translation on ANSWER SHEET 2. (15points) “Sustainability” has become a popular word these days, but to Ted Ning, the concept will always have personal meaning. Having endured a painful period of unsustainability in his own life made it

    2024年02月08日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包