当前位置: 首页 > article >正文

C++研发笔记13——C语言程序设计初阶学习笔记11

        从今天开始我们开始第三模块《分支语句和循环语句》的学习,在本模块中我们将会涉及到以下9个内容:什么是语句、分支语句——if语言、分支语句——switch语句、循环语句——while循环、循环语句——for循环、循环语句——do while循环、折半查找算法、猜数字游戏、goto语句。

第三部分  分支语句和循环语句


一、什么是语句

/*
什么是语句?
	C语言中由一个分号 ; 隔开的就是一条语句。 
比如:
	printf("hehe");
	1 + 2;
*/

/*
C语言中的语句主要分为五类
1、表达式语句
2、函数调用语句
3、控制语句
4、复合语句
5、空语句

而我们在第三部分《分支语句和循环语句》中学习到的都是控制语句。

控制语句用于控制程序的执行流程,以实现程序的各种结构方式。
C语言是一门结构化的程序设计语言。支持三种结构——顺序结构、选择结构、循环结构
控制语句由特定的语句定义符组成,C语言有九种控制语句,又可细分以下三类:
1、条件判断语句(分支语句):if语句、switch语句
2、循环执行语句:do while语句、for语句、while语句
3、转向语句:break语句、goto语句、continue语句、return语句

接下来我们将详细的学习这九种语句。
*/

二、分支语句——if语句

(一)、if语句的语法结构
/*
if 语句的语法结构
1、标准结构:
	if(表达式)
    	语句;
2、单分支选择结构:
	if(表达式)
    	语句1;
	else
    	语句2;
3、多分支选择结构:    
	if(表达式1)
    	语句1;
	else if(表达式2)
    	语句2;
	else
    	语句3;
当表达式的结果为真时,则执行对应的语句。
在C语言中,0表示假,非0表示真。
另外if语句也支持嵌套。
*/

// 下面我用一个实例——“年龄的判断”,通过不断完善其功能展现if语句的语法结构
// 第一步:当输入的年龄小于18时,显示“未成年”
#include <stdio.h>

int main()
{
	int age = 0;
	printf("请输入一个年龄:");
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	return 0;
}

// 上面这段代码,展现了一个if语句的标准结构
// 第二步:当输入的年龄小于18时,显示“未成年”;否则显示“成年”
#include <stdio.h>

int main()
{
	int age = 0;
	printf("请输入一个年龄:");
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else
		printf("成年\n");
	return 0;
}

// 这是一个标准的单分支选择语句语法结构
// 第三步:将成年继续细分成四个阶段

#include <stdio.h>
int main()
{
	int age = 0;
	printf("请输入一个年龄:");
	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");
	return 0;
}

// 这是一个标准的多分支选择语句语法结构

// 上面的代码的执行语句都是单句话,如果要执行多条语句,则应该使用代码块
// 比如下面我用一段代码来展现C语言中if语句的嵌套与执行多条语句

#include<stdio.h>

int main()
{
	int choice1 = 0;
	int choice2 = 0;
	printf("请选择你是否准备认真学习(1代表认真学习,0代表不学习) >> ");
	scanf("%d", &choice1);
	if (1 == choice1)
	{
		printf("你选择了一条正确的道路.\n");
		printf("你将获得一个好offer!\n");
	}
	else if (0 == choice1)
	{
		printf("请选择你家是否有百亿家产 (1代表有,0代表没有) >> ");
		scanf("%d", &choice2);
		if (1 == choice2)
			printf("呵呵\n");
		else
			printf("那你只能卖红薯了\n");
	}
	else
		printf("输入错误,请输入0或1\n");
	return 0;
}
(二)、悬空else以及if书写的代码习惯
// 我们来看下面这段代码
#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;
}

// 这就是悬空else ,是一种非常不好的代码习惯

/*
 悬空else 是指在有多个 if 语句嵌套的情况下,else 语句与哪个 if 语句匹配不明确的情况。
 这种情况通常发生在没有使用大括号 {} 明确指定代码块的范围时。
 悬空 else 会导致代码的逻辑难以理解,并且可能产生意料之外的结果。
*/

// 我们应当适当的使用{ }使代码的逻辑更清晰
// else 实际上是与最近的if进行匹配的,所以上面的代码等价于下面这样
#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 (condition)
{
	return x;
}
return y;

// 代码二
if (condition)
{
	return x;
}
else
{
	return y;
}

// 代码一和代码二的实际含义以及效果是一模一样的
// 但是代码二的形式明显优于代码一,代码一往往会让人产生误解

// 代码三
int num = 5;
if (num == 5)
{
	printf("hehe\n");
}

// 代码四
int num = 5;
if (5 == num)
{
	printf("hehe\n");
}

// 代码三和代码四的实际含义以及效果是一模一样的
// 但是我们建议当比较一个变量和一个常量是否相等的时候
// 把常量放在等式的左边
// 这样增强了代码的可读性和一致性,同时也避免了将“==”写成“=”而造成的错误
(三)、练习

1、判断一个数是否为奇数

#include<stdio.h>

int main()
{
	int num = 0;
	printf("请输入一个整数:");
	scanf("%d",&num);
	if (1 == num % 2)
		printf("奇数");
	else
		printf("不是奇数");
	return 0;
}

2、输出1-100之间的奇数

#include<stdio.h>

int main()
{
	int i = 1;
	while (i <= 100)
	{
		if (1 == i % 2)
			printf("%d ", i);
		i++;
	}
	return 0;
}

另外一种写法:

#include<stdio.h>

int main()
{
	int i = 1;
	while (i <= 100)
	{
		printf("%d ", i);
		i += 2;
	}
	return 0;
}
// 这个代码的效率明显高于上面的代码,因为其省略了判断的步骤和循环的次数

        以上便是本篇笔记的全部内容,我们对第三部分的学习进行了一个开篇,介绍了什么是语句以及对分支语句——if语句进行了详细的讲解。在下一篇笔记中,我们将继续第三部分的学习。


http://www.kler.cn/a/393661.html

相关文章:

  • 认识一下Unicorn
  • HBase使用create创建表时报错ERROR: KeeperErrorCode = NoNode for /hbase/master
  • 豆瓣均分9:不容错过的9本大模型入门宝藏书籍,非常详细收藏我这一篇就够了
  • 微服务(二)
  • 虚拟机安装Ubuntu 24.04服务器版(命令行版)
  • MySql结合element-plus pagination的分页查询
  • MongoDB新版本安装配置教程(7.0.15版本-zip下载)
  • 构建Spring Boot编程训练系统:全面指南
  • springboot初体验
  • [Docker#5] 镜像仓库 | 命令 | 实验:搭建Nginx | 创建私有仓库
  • 加入GitHub Spark需要申请
  • Hive基础
  • JUC学习笔记
  • 零基础Java第十六期:抽象类接口(二)
  • 【NLP】2024 年十大 RAG 框架 Github
  • Redis设计与实现 学习笔记 第十七章 集群
  • 2024 kali操作系统安装Docker步骤
  • 【论文复现】交通路口智能监测平台实现
  • Ajax 获取进度和中断请求
  • 华为OD机试真题-仿LISP计算
  • GitHub每日最火火火项目(11.14)
  • 服务器硬件介绍
  • 自动驾驶系列—从数据采集到存储:解密自动驾驶传感器数据采集盒子的关键技术
  • Ubuntu上nginx常用命令
  • 电子制造行业Top5贴片机品牌
  • [DB] Project-1-MySQL