C语言控制语句

news2024/11/23 19:16:17

文章目录

  • 前言
  • 一、分支语句
    • 1.if语句
    • 2.if else else if
    • 3.switch语句
  • 二、循环语句
    • 1.for循环
    • 2.while循环
    • 3.do-while循环
  • 三、跳转语句
    • 1.break语句
    • 2.continue语句
    • 3.goto语句
  • 四、嵌套语句
    • 1.if语句嵌套
    • 2.for语句嵌套
    • 3.while语句嵌套
  • 总结


前言

C语言中的控制语句是非常重要的一个知识点,其实说白了,C语言中的控制语句就是我们在生活中经常会说到的:如果,否则,或者。。。。其实这些控制语句都是非常贴近于我们的生活的。

一、分支语句

C语言中的分支语句可以根据条件执行不同的代码分支。

其中,常用的分支语句包括:

1.if语句

if语句:用于根据条件的真假执行不同的代码。语法结构如下:

if (条件表达式) {
    // 条件为真时执行的代码
} else {
    // 条件为假时执行的代码
}

其中,条件表达式返回值为非0时为真,为0时为假。
用我们生活中的话这里可以翻译为如果条件表达式是真的那么就执行if括号里面的代码,否则就执行else括号里面的代码。
C语言代码例子:

#include <stdio.h>

int main()
{
	int a = 10;

	if (a > 10)
	{
		printf("a大于10这是对的\n");
	}
	else
	{
		printf("a大于10这是错的\n");
	}

}

运行效果:
在这里插入图片描述

2.if else else if

else if语句的语法结构如下:

if (条件表达式1) {
    // 条件1为真时执行的代码
} else if (条件表达式2) {
    // 条件2为真时执行的代码
} else {
    // 以上条件都不成立时执行的代码
}

当条件表达式1的返回值为非0时,执行if语句后的花括号中的代码;否则判断条件表达式2的返回值,若为真,执行else if后的花括号中的代码;若二者都为假,则执行else后的花括号中的代码。

需要注意的是,else if语句的判断顺序是从上到下,只要找到一个为真的条件,就会执行对应的代码,并跳过后续的else if条件和else语句。
(这里的意思就是当执行了if的话就不会执行下面的else if和else,当执行else if后就不会执行下面的else了,翻译过来就是说只会执行其中的一个分支)

以上是if else else if语句的基本语法和运行原理,需要根据实际情况选择合适的方式实现程序逻辑。

3.switch语句

switch语句:将某个表达式的值与多个case标签所表示的值进行匹配,执行对应的代码。语法结构如下:

switch (表达式) {
    case 标签1:
        // 表达式值与标签1相等时执行的代码
        break;
    case 标签2:
        // 表达式值与标签2相等时执行的代码
        break;
    default:
        // 表达式值都不匹配时执行的代码
        break;
}

注意:在case分支中必须加上break语句,否则将会继续执行下一个case分支中的代码。

代码例子:
使用scanf输入数字,输入1和2可以执行switch中不同的分支。

int main()
{
    int a = 0;

    scanf_s("%d", &a);

	switch (1)
	{
	case 1:
		printf("ONE\n");
		break;
	case 2:
		printf("TOW\n");
		break;
	default:
		break;
	}

}

二、循环语句

1.for循环

语法结构:

for (初始表达式; 循环条件; 更新表达式)
{
    循环体语句;
}

其中,初始表达式是在循环开始前执行的,循环条件是在每次循环开始前测试的,如果循环条件为真,就执行循环体中的语句,然后执行更新表达式,然后再次测试循环条件。如果循环条件为假,则退出循环。

代码示例:
循环打印5次a的值。

int main()
{
    int a = 0;

    for (a = 0; a < 5; a++)
    {
        printf("a = %d\n", a);
    }

}

在这里插入图片描述

2.while循环

语法结构如下:

while (循环条件)
{
    循环体语句;
}

while循环首先测试循环条件,如果循环条件为真,则执行循环体中的语句,然后再次测试循环条件。如果循环条件为假,则退出循环。
代码示例:
while循环打印5次a的值:

int main()
{
    int a = 0;

    while (a < 5)
    {
        printf("a = %d\n", a);
        a++;
    }

}

3.do-while循环

语法结构:

do
{
    循环体语句;
} while (循环条件);

do-while循环会先执行循环体中的语句,然后测试循环条件。如果循环条件为真,则继续执行循环体。如果循环条件为假,则退出循环。

需要注意的是,在使用循环语句时,应注意循环条件的准确性,以避免陷入无限循环的危险。

示例代码:

    do {
        printf("a = %d\n", a);
        a++;
    } while (a < 5);

三、跳转语句

在C语言中,跳转语句可以使程序在不同的位置之间跳转,从而改变代码的执行流程。C语言中主要有三种跳转语句:break、continue和goto。
continue和goto其实在实际开发中用的比较少,这里只做简单介绍。

1.break语句

break语句一般用于循环语句和switch语句中,用于跳出当前的循环或switch语句。当执行到break语句时,程序会立即退出当前的循环或switch语句。

2.continue语句

continue语句用于循环语句中,用于跳过当前循环的剩余部分,直接开始下一次循环。当执行到continue语句时,程序会跳过循环体中remain语句,直接进行下一次循环的测试。

3.goto语句

goto语句可以在程序中跳转到一个标签(label)所指定的位置。它的语法结构如下:

goto label;
...
label: statement;

goto语句会使程序跳转到代码中的标记标签处进行执行,与标签的位置无关。goto语句的使用应当谨慎,因为它容易造成程序流程的混乱,从而使程序更难以理解和维护。

需要注意的是,虽然跳转语句可以使程序流程更加灵活,但过多地使用会增加代码的复杂性,从而降低程序的可读性和维护性。因此,在使用跳转语句时,应当视情况而定,尽量遵循代码风格的规范性和可维护性原则。

四、嵌套语句

在C语言中,嵌套语句指的是在一个语句中,包含了另一个完整的语句,即一个语句中嵌套了另一个语句,这样的语句被称为嵌套语句。嵌套语句可以用来组合多个操作,实现更复杂的功能。C语言中支持多种类型的嵌套语句,常见的有以下几种:

1.if语句嵌套

if语句可以嵌套在另一个if语句或其他语句中。if语句嵌套的语法如下:

if (condition1) {
    // do something
    if (condition2) {
        // do something
    }
}

2.for语句嵌套

for语句也可以嵌套在另一个for语句或其他语句中。for语句嵌套的语法如下:

for (initialization;condition;increment) {
    // do something
    for (initialization;condition;increment) {
        // do something
    }
}

第一个for语句中的初始化表达式、循环条件和更新表达式控制了外层循环的执行过程;而内层的for语句中的初始化表达式、循环条件和更新表达式则控制了内层循环的执行过程。注意,内层循环的循环体语句会在每一个外层循环执行时重复执行。
下面给出一个九九乘法表代码示例:

#include <stdio.h>

int main() {
    for (int i = 1; i <= 9; i++) {     // 控制行
        for (int j = 1; j <= i; j++) { // 控制列
            printf("%d*%d=%d\t", j, i, i*j);
        }
        printf("\n");
    }

    return 0;
}

在这里插入图片描述
这里提一个点for语句嵌套的执行次数为内层次数乘外层次数。

3.while语句嵌套

while语句同样支持嵌套。while语句嵌套的语法如下:

while (condition1) {
    // do something
    while (condition2) {
        // do something
    }
}

需要注意的是,嵌套语句可以让程序的逻辑结构更加清晰,但是嵌套层数过多会降低代码的可读性,导致代码难以理解和维护。因此,在实际使用中应当根据具体情况进行选择,避免过多的嵌套和复杂的代码逻辑。

总结

本篇文章主要带大家学习了C语言的控制语句,这个也是C语言中的一个重点希望大家能够好好理解消化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/465769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM入门必备

1、JVM 的位置 2、JVM 的体系结构 JVM&#xff08;Java虚拟机&#xff09;是Java程序的运行环境&#xff0c;它对于Java平台的运行和跨平台特性的实现有着重要的作用。JVM的体系结构有以下几个部分&#xff1a; 类加载器&#xff08;ClassLoader&#xff09;&#xff1a;负责将…

day4 IP地址与端口号

IP地址及其表示方式 IP地址表示方法&#xff1a; 分类的IP地址&#xff1a; 多归属主机&#xff1a; 当一个主机通过两个网卡同时连接到两网络时&#xff0c;也就是该主机同时拥有两个IP地址&#xff0c;该主机被称为多归属主机&#xff1b; 一个路由器至少连接到两个不同的网…

C++语法(21)---- 模拟map和set

(1条消息) C语法&#xff08;20&#xff09;---- 模拟红黑树_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130296772?spm1001.2014.3001.5501 目录 1.stl中的设计思想 2.模拟set和map 1.set和map的类 2.BRTree的仿函数实现 3.红黑树的迭…

C语言力扣简单题-两数之和

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 两数之和 题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和…

从数据处理到人工智能(常用库的介绍)

Python库之数据分析 ​​​​​​​​​​​​ 可以这么理解pandas通过扩展了对一维数据和二维数据的一种表示&#xff0c;因而能够形成更高层对数据的操作&#xff0c;简化数据分析的运行 Python库之数据可视化 Matplotlib — Visualization with Python seaborn: statistic…

DNS基础:通过dig命令理解DNS域名解析中的A记录,AAAA记录,CNAME记录,MX记录,NS记录

参考博文&#xff1a;https://blog.csdn.net/zxl1990_ok/article/details/125432123 目录 参考资料DNS简介查询过程直接显示DNS寻址结果向特定DNS服务器寻址查询A记录查询AAAA记录CNAME记录MX记录NS记录PTR记录SOA记录查看DNS服务器的主从关系 参考资料 http://ruanyifeng.com…

C++ Primer阅读笔记--异常处理机制

目录 1--异常处理机制 2--throw表达式 3--try语句块 4--标准异常类 5--代码实例 1--异常处理机制 异常处理机制为程序中的异常检测和异常处理这两部分的协作提供支持&#xff1b;在 C 语言中&#xff0c;异常处理包括&#xff1a;throw表达式、try语句块和异常类&#xff…

线程池【Linux】

文章目录 1. 引入2. 应用3. 实现封装线程封装线程池线程函数生产消费逻辑互斥锁条件变量线程函数主线程测试1 4. 优化5. 日志日志的重要性实现日志级别提取参数stdarg.h 头文件日志文件 懒汉实现单例模式什么是懒汉模式什么是单例模式实现 1. 引入 线程池是一种池化技术&#…

Vue后台管理系统-前端登录设计

在做后台管理系统时&#xff0c;登录模块是必不可少的&#xff0c;访模块看似简单&#xff0c;在开发涉及到许多细节&#xff0c;一般来说主要有以下这些&#xff1a; 1. 登录输入的信息要进行正则校验&#xff1b; 2. 密码输入要可以查看明文&#xff1b; 3. 密码输入时要对…

JavaWeb——IP协议的相关特性

目录 一、IP协议 1、地址管理 &#xff08;1&#xff09;、动态分配IP地址 &#xff08;2&#xff09;、NAT机制 &#xff08;3&#xff09;、IPv6协议 2、路由选择 &#xff08;1&#xff09;、定义 &#xff08;2&#xff09;、原理 二、路由器 三、IP地址的组成 1…

Postman登录注册指导

在做后端开发的小伙伴经常需要测试自己写的接口是否可以用 这时Postman就是一个很好的选择 如果您还没有下载 可以参考我的文章 API接口调试工具Postman下载安装步骤 安装好之后 我们就需要处理 它的一个注册和登录 我们点击右上角 这里就有一个创建一个账户 我们点击一下 …

CF - Playing in a Casino

题意&#xff1a;一个数的幸运值计算规则是用里面最大的数字-最小的数字所得值 给出一个范围&#xff0c;求这个范围里幸运值最大的是哪个数 解&#xff1a; 这道题相对来说就很简单了&#xff0c;注意数值限制范围在1道1e6&#xff0c;虽然这道题确实暴力就能做出来&#xf…

手把手教你用几行代码给winform多个控件(数量无上限)赋值

前言&#xff1a; 我们在开发winform程序的过程中&#xff0c;经常会遇到这样一个场景&#xff0c;我们设计的界面&#xff0c;比如主窗体有一百多个TextBox&#xff0c;然后初始化的时候要对这个一百多个TextBox的Text属性赋值&#xff0c;比如赋个1&#xff0c;如果是winfor…

CAD DLL 15 crack增加了对SLDASM、FSAT

CAD DLL 15 crack增加了对SLDASM、FSAT 改进的3D&#xff1a; 提高了打开三维文件的速度。 提高了SAT、STEP、SLDPRT、X_T、X_B、OBJ格式的阅读能力。 增加了对SLDASM、FSAT、SAB、SMT、IPT、IFC格式的支持。 增加了导出为SAT、SAB、STL、OBJ格式的功能。 改进了SAT、STE…

系统错误 无法启动此程序,因为计算机中丢失MSVCP140_1.dll。尝试重新安装该程序已解决此问题

Qt系列文章目录 文章目录 Qt系列文章目录前言一、解决方法 前言 我在windows10系统&#xff0c;使用Qt5.15.2 打包命令&#xff1a;windeployqt.exe ImageManageSys.exe &#xff0c;把ImageManageSys.exe 拷贝到windows7系统下&#xff0c;报错&#xff1a;ImageManageSys.ex…

红海云CEO孙伟解密智能化人力资源新范式

4月25日&#xff0c;由广州人力资源服务协会联合HRflag主办的“2023广州人力资源创新与科技展”在广州越秀国际会议中心举办&#xff0c;大会邀请红海云CEO孙伟出席并发表主题演讲&#xff0c;分享人力资源数字化的创新&#xff0c;实践以及思考。 红海云持续高增长的密码 在…

jsp内置对象

request 将要介绍request对象的作用范围及其常用的方法。用户每访问一个页面&#xff0c; 就会产生一个HTTP请求。这些请求中一般都包含了请求所需的参数值或者信息&#xff0c; 如果将request对象看作是客户请求的一个实例&#xff0c; 那么这个实例就包含了客户请求的所有数…

Nuxt3 布局layouts和NuxtLayout的使用

Nuxt3是基于Vue3的一个开发框架&#xff0c;基于服务器端渲染SSR&#xff0c;可以更加方便的用于Vue的SEO优化。 用Nuxt3 SSR模式开发出来的网站&#xff0c;渲染和运行速度非常快&#xff0c;性能也非常高&#xff0c;而且可SEO。 接下来我主要给大家讲解下Nuxt3的layouts布…

CF - Li Hua and Pattern

题意&#xff1a;给出了矩阵&#xff0c;里面每个位置分为蓝色或红色&#xff08;数据上用1和0体现了&#xff09;&#xff0c;给出了一个操作次数&#xff0c;每次可以改变一个坐标的颜色&#xff0c;问能否通过操作使得图像旋转180度后不变。 解&#xff1a;很容易想到&…

修改DaemonSet 的/args参数后多个pod重启的顺序

理论 当您修改了DaemonSet的/args参数时&#xff0c;DaemonSet控制器会自动触发Pod的滚动更新。滚动更新的过程是逐个将旧的Pod删除并创建新的Pod&#xff0c;以确保应用程序的高可用性和稳定性。 在进行滚动更新时&#xff0c;DaemonSet控制器会按照以下步骤逐个重启Pod&…