详解C语言分支与循环语句

分支语句

  • if else
  • switch

循环语句

  • while
  • for
  • do while

goto语句

文章目录

  • 1.什么是语句
  • 2.分支语句(选择结构)
  • 2.1 if语句
      • 2.1.1 悬空else
      • 2.1.3 练习
  • 2.2 switch语句
      • 2.2.1 在switch语句中的break
      • 2.2.2 default子句
  • 3.循环语句
    • 3.1 while循环
      • 3.1.1 while语句中的break和continue
    • 3.2 for循环
      • 3.2.1 语法
      • 3.2.2 break和continue在for循环中
      • 3.2.3 for语句的循环控制变量
      • 3.2.4 一些for循环的变种
      • 3.2.5 试题
    • 3.3 do...while()循环
      • 3.3.1 do...while()循环语法
      • 3.3.2 执行流程
      • 3.3.3 do语句的特点
      • 3.3.4 do while 循环中的break和continue
    • 3.4 习题
      • 3.4.3 猜数字游戏
  • 4.goto语句

1.什么是语句

在C语言当中语句可以分为以下5类:

  • 表达式语句
  • 函数调用语句
  • 控制语句
  • 复合语句
  • 空语句
    控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句符号符组成,C语言有9种控制语句:

1.条件判断语句也叫分支语句:if else 语句 switch语句
2.循环执行语句:for语句 while语句 do while语句
3.转向语句:break语句 continue语句 return语句 goto语句

2.分支语句(选择结构)

这样吧,你先在steam搜索“千恋*万花”点击购买安装好后立即运行打开千恋万花,在主页面点击开始游戏进入游戏页面,然后依次选择“说实话”、“不好说”、“觉得很可爱”、“单独行动”、“摸摸头”、“有点担心”和“安抚”进入丛雨路线
没错,galgame中的选项就是选择语句。
分支语句

达成对应的条件后就进入对应的结果。

2.1 if语句

if语句的语法结构

//单分支
if(exp1)
	语句;
//双分支
if(exp1)
	语句1;
else
	语句2;

//多分支
if(exp1)
	语句1;
else if(exp2)
	语句2;
else
	语句3;

实例演示:

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

//代码2
#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<60)
	{
		printf("中年\n");
	}
	else if(age>=60&&age<80)
	{
		printf("老年\n");
	}
	else
	{
		printf("寿星\n");
	}
	return 0;
}

在C语言中0表示假,非0表示真
值得注意的是:If只能管理后面一条语句,所有我们要多用{}进行匹配,防止使人误解.
{}就是一个代码块。

2.1.1 悬空else

看下面这个代码:

#include <stdio.h>
int main()
{
	int a = 0;
	if(a)
	   if(a==0)
		   printf("hello\n");
	else
		printf("hi\n");
	return 0;
}

你觉得会打印什么呢?
答案是:什么都不打印,这里的else是和第二个if进行匹配的。
为了避免这种情况,我们要让代码好好对齐或者加入{}来避免误解


//代码对齐
#include <stdio.h>
int main()
{
	int a = 0;
	if(a)
	    if(a==0)
		   printf("hello\n");
	    else
			printf("hi\n");
	return 0;
}

//利用{}
#include <stdio.h>
int main()
{
	int a = 0;
	if(a)
	{
	    if(a==0)
		   printf("hello\n");
		else
			printf("hi\n");
	}
	return 0;
}

else的匹配:else是和离他最近的if匹配的

2.1.3 练习

1.判断一个数是否是奇数。
2.输出1~100之间的奇数。

//1.判断一个数是否是奇数。
#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d",&a);
	if(a%2==1)
	{
		printf("是奇数!\n");
	}
	else
	{
		printf("不是奇数!\n");
	}
	return 0;
}

//2.2.输出1~100之间的奇数。
#include <stdio.h>
int main()
{
	//利用while循环
	int i = 1;
	while(i<=100)
	{
		if(i%2==1)
		{
			printf("%d ",i);
		}
		++i;
	}
	return 0;
}


//方法2
#include <stdio.h>
int main()
{
	//利用while循环
	int i = 1;
	while(i<=100)
	{
		printf("%d ",i);
		i+=2;
	}
	return 0;
}

2.2 switch语句

switch语句也是一种分支语句,常常用于多分支的情况。

switch(整型表达式)
{
	case 整型常量表达式://case是整型常量表达式 也可以是char 因为底层为ASCII码也算
		语句;
}

比如,让你根据数字输出对应的星期。

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

//当我们输入5时
/*
打印结果:
星期五
星期六
星期日
*/

这是为什么呢?因为在switch中我们只有利用了break才能实现真正的分支。

2.2.1 在switch语句中的break

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%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;
	}
	return 0;
}
//当我们输入5时
/*
打印结果:
星期五
*/

break语句的实际效果是把语句列表划分为不同的分支部分。
思考:如果有人在这个程序运行时输入8会怎么样?

2.2.2 default子句

答案:当输入的值与所有case都不匹配时,就直接退出switch,然后继续程序。
但是如果你不想要忽略不匹配这种情况。
你可以在语句列表中增加一个default子句。
可以写在任何一个case标签可以出现的位置,switch里面的判断可以没有顺序。

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%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;
		default:
			printf("输入错误!\n");
			break;//建议加上	
	}
	return 0;
}

switch允许嵌套使用。

3.循环语句

  • while
  • for
  • do while
    简单的循环结构

简单的循环语句

3.1 while循环

while(条件)
	语句;

当条件满足时,循环就会执行下去。
while语句执行流程:
while语句的执行流程

打印1-10数字

#include <stdio.h>
int main()
{
	//利用while循环
	int i = 1;
	while(i<=10)
	{
		printf("%d ",i);
		i++;
	}
	return 0;
}
//打印结果
//1 2 3 4 5 6 7 8 9 10

3.1.1 while语句中的break和continue

break介绍
在循环中只要执行了break,就会直接终止循环,直接跳出循环体。

#include <stdio.h>
int main()
{
	//利用while循环
	int i = 1;
	while(i<=10)
	{
		if(i==5)
			break;
		printf("%d ",i);
		i++;
	}
	return 0;
}
//打印结果
//1 2 3 4 

continue介绍

continue是用来终止本次循环的,也就是本次循环中continue后面的代码不会执行,
而是直接跳转到while语句的判断部分。进入下一次循环。

//代码1
#include <stdio.h>
int main()
{
	//利用while循环
	int i = 1;
	while(i<=10)
	{
		if(i==5)
			continue;
		printf("%d ",i);
		i++;
	}
	return 0;
}
//打印结果
//1 2 3 4 4 4 4 4 4 4 4....

//代码2
#include <stdio.h>
int main()
{
	//利用while循环
	int i = 1;
	while(i<=10)
	{
		i++;
		if(i==5)
			continue;
		printf("%d ",i);
	}
	return 0;
}
//打印结果
//2 3 4 6 7 8 9 10

3.2 for循环

了解完while循环后,for可以说是while的整合。

3.2.1 语法

for(expr1;expr2;expr3)
	循环语句;

exp1
为初始化部分,用来初始化循环变量的。
exp2
为条件判断部分,用于判断循环终止的
exp3
为调整部分,用于循环条件的调整。

打印1-10

//代码1
#include <stdio.h>
int main()
{
	int i = 0;
	for(i = 1;i<=10;++i)
	{
		printf("%d ",i);
	}
	return 0;
}
//打印结果:1 2 3 4 5 6 7 8 9 10

//代码2
#include <stdio.h>
int main()
{
	for(int i = 1;i<=10;++i)//在里面初始化是c++里的写法,但在c99标准后引入
	{
		printf("%d ",i);
	}
	return 0;
}
//打印结果:1 2 3 4 5 6 7 8 9 10

for执行流程图
for语句的执行流程

for与while循环的对比

#include <stdio.h>
int main()
{
	int i = 0;
	while(i<=10)
	{
		printf("%d ",i);
		++i;
	}
	for(i = 1;i<=10;++i)
	{
		printf("%d ",i);
	}
	return 0;
}

循环的3个必要条件,无论是while循环还是for都是有的,但是while的三部分比较分散。
查找修改就不够集中于方便,对此,for循环的风格更胜一筹。

3.2.2 break和continue在for循环中

可以发现的是,在for和在while循环里面是没有特别大区别的,但由于for独特的执行调整步骤和while还是略有差异

//continue在while
#include <stdio.h>
int main()
{
	//利用while循环
	int i = 1;
	while(i<=10)
	{
		if(i==5)
			continue;
		printf("%d ",i);
		i++;
	}
	return 0;
}
//打印结果
//1 2 3 4 4 4 4 4 4 4 4....

//continue在for循环
#include <stdio.h>
int main()
{
	//利用for循环
	int i = 1;
	for(i = 1;i<=10;++i)
	{
		if(i==5)
			continue;
		printf("%d ",i);
	}
	return 0;
}
//打印结果
//1 2 3 4 6 7 8 9 10

for循环里的continue在跳过本次循环时,是无法跳过for()中的调整语句的。

3.2.3 for语句的循环控制变量

建议(不是必须):

1.不要在for循环体内修改循环变量,防止for循环失去控制
2.建议for语句的循环变量的取值采用 前闭后开区间的写法

int i = 0;
//前闭后开
for(i = 0;i<10;++i)
{}
//前闭后闭
for(i = 0;i<=9;++i)
{}

3.2.4 一些for循环的变种

#include <stdio.h>
int main()
{
	//利用for循环
	int i = 1;
	for(;;)//for省略判断即为判断恒为真
	{
		printf("hello\n");
	}
	//代码2
	int i = 0;
	int j = 0;
	//打印多少个hello呢?
	for(i = 0;i<10;++i)
	{
		for(j = 0;j<10;++j)
		{
			printf("hello\n");
		}
	}
	//100个
	
	//代码3
	int i = 0;
	int j = 0;
	//打印多少个hello呢?
	for(;i<10;++i)
	{
		for(;j<10;++j)
		{
			printf("hello\n");
		}
	}
	//10个
	
	//代码4 
	int x,y;
	for(x = 0,y = 0;x<2&&y<5;++x,++y)//使用多个变量控制循环
	{
		printf("hello\n");
	}
	
	return 0;
}
//打印结果
//hello hello hello...

3.2.5 试题

//循环多少次
#include <stdio.h>
int main()
{
	int i = 0;
	int k = 0;
	for(i = 0,k = 0;k=0;++i,++k)
		k++;
	return 0;
}


//0次

3.3 do…while()循环

3.3.1 do…while()循环语法

do
{
	循环语句;
}while(表达式);

3.3.2 执行流程

do while的执行流程

3.3.3 do语句的特点

循环至少执行一次,使用场景有限,不常使用。

打印1-10

#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		printf("%d ",i);
		++i;
	}while(i<=10);
	return 0;
}
// 打印结果:
//1 2 3 4 5 6 7 8 9 10

3.3.4 do while 循环中的break和continue

//代码1
#include <stdio.h>
int main()
{
	int i = 10;
	do
	{
		if(i == 5)
			break;
		printf("%d ",i);
		
	}while(i<10);
	return 0;
}

//代码2
#include <stdio.h>
int main()
{
	int i = 10;
	do
	{
		if(i == 5)
			continue;
		printf("%d ",i);
		
	}while(i<10);
	return 0;
}

3.4 习题

1.计算n的阶乘
2.计算1!+2!+…+10!
3.在一个有序数组中查找具体某个数n
4.编写代码,演示多个字符从两端移动,向中间汇聚。

//1.
#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d",&n);
	int ret = 1;
	for(int i = 1;i<=n)
	{
		ret*=i;
	}
	printf("%d\n",ret);
	return 0;
}

//2.1
#include <stdio.h>
int main()
{
	int sum = 0;
	for(int n = 1;n<=10;++n)
	{
		int ret = 1;
		for(int i = 1;i<=n;++i)
		{
			ret*=i;
		}
		sum+=ret;
	}
	printf("%d\n",sum);
	return 0;
} 

//2.2
#include <stdio.h>
int main()
{
	int sum = 0;
	int ret = 1;
	for(int n = 1;n<=10;++n)
	{
		ret *= n;
		sum+=ret;
	}
	printf("%d\n",sum);
	return 0;
}

//3.1
#include <stdio.h>
int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	int x = 0;
	scanf("%d",&x);
	for(int i = 0;i<10;++i)
	{
		if(x==arr[i])
		{
			printf("找到了,下标为%d\n",i);
			break;
		}
	}
	if(i==10)
	{
		printf("没找到!\n");
	}
	return 0;
}
//3.2二分查找
#include <stdio.h>
int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	int x = 0;
	scanf("%d",&x);
	int left = 0,right = 9;
	int flag = 0;
	while(left<=right)
	{
		int mid = (left+right)/2;
		if(arr[mid]==x)
		{
			printf("找到了,下标为%d\n",mid);
			flag = 1;
			break;
		}
		else if(arr[mid]<x)
		{
			left = mid+1;
		}
		else
		{
			right = mid-1;
		}
	}
	if(flag == 0)
	{
		printf("找不到!\n");
	}
	return 0;
}

//4
#include <stdio.h>
int main()
{
	char arr1[] = "hello world!";
	char arr2[] = "************";
	int n = sizeof(arr1);
	int left = 0;
	int right = n - 1;
	for (left = 0, right = n - 1; left <= right; ++left, --right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
	}
	return 0;
}

3.4.3 猜数字游戏

学以上的内容,我们可以写一个简单的猜谜游戏

#include <stdio.h>
#include <stdlib.h>//srand和rand的头文件
#include <time.h>//time的头文件
void menu()
{
	printf("**********************\n");
	printf("*****1.paly***********\n");
	printf("*****0.exit***********\n");
	printf("**********************\n");
}
void game()
{
	int r = rand() % 100 + 1;//rand可以产生随机数,但因为rand的随机数是根据srand所提供的种子生成,所以我们还要使用srand,但是由由于srand所提供的种子也要输入数字才可以生成,为此我在使用了time函数生成当前时间的时间戳数来充当输入的数字,以达到rand生成随机数的效果。
	int guess = 0;//玩家要猜测的数
	printf("游戏开始\n");
	while (1)//直到猜中
	{
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜小了\n");
		}
		else if (guess > r)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你,猜中了!\n");
			break;
		}
	}
}
int main()
{
	int input = 0;
	srand((unsigned)time(NULL));
	do//进入循环
	{
		menu();//打印菜单
		printf("请选择_>");//提示信息
		scanf("%d", &input);//根据提示选择进入还是退出
		//根据输入进入相应区域,用到多分支语句switch
		switch (input)
		{
		case 1:
			game();//进入游戏
			break;
		case 0:
			printf("已退出游戏!\n");
			break;
		default:
			printf("输入错误!\n");
			break;
		}
	} while (input);


}

4.goto语句

C语言中提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上来讲goto语句是没有必要的,实际中没有goto语句也可以很容易的写成代码。
但是在某些场合下goto语句还是用的着的,最常见的用法就是终止某些深层嵌套的结构。
例如一次性跳出多层循环。
多重循环下使用break是达不到目的的,break只能从最内层循环退出到上一层循环。

for(...)
{
	for(...)
	{
		for(...)
		{
			if(disaster)
				goto error;
		}
	}
}
error:
	if(disaster)
		//处理错误情况

大部分部分使用goto的情况是可以利用循环代替的。

//代码1
#include <stdio.h>
int main()
{
again:
	//...
	if(...)
	{
		//...
		break;
	}
	else
	{
		goto again;
	}
	return 0;
}

//代码2
#include <stdio.h>
int main()
{
	while(1)
	{
		if(...)
		{
			//...
			break;
		}
	}
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024广州智能音箱展|广州蓝牙耳机展

2024广州智能音箱展|广州蓝牙耳机展 时间&#xff1a;2024年11月29日-12月1日 地点&#xff1a;广州琶洲保利世贸博览馆 【展会简介】 中国是全球最大的音频产品制造基地和消费市场&#xff0c;随着国内外互联网巨头纷纷瞄准音频行业并投入巨资布局AI产品矩阵&#xff0c;音…

Static Timing Analysis(STA)概述

文章目录 Preface一、Design Objects二、Timing Paths三、Delay Calculation1. cell delay2. net delay 四、Constraint Checks五、Timing Exceptions1. Setting false paths2. Setting Maximum and Minimum Path Delays3. Setting Multicycle Paths Summary Preface Static t…

Yolov8可视化界面使用说明,含代码

⭐⭐ YOLOv8改进专栏|包含主干、模块、注意力机制、检测头等前沿创新 ​ ⭐⭐ YOLOv8可视化界面如下 使用需要安装opencv-python、torch、numpy及PySide6(python版本>3.9) pip install PySide6 pip install numpy pip install opencv-python 使用说明 运行下方代码&#xf…

C - Popcorn(abs358)

题意&#xff1a;有n个摊子&#xff0c;m个爆米花&#xff0c;想花费最少去的店铺买到所有的口味的爆米花&#xff0c;找到每一列都为‘o’的最少行数。 分析&#xff1a;用dfs寻找最少路径 #include<bits/stdc.h> using namespace std; typedef long long ll; char x;…

那些好用的 Vue3 的工具搭子!!【送源码】

2020 年 9 月 18 日 Vue3 的正式发布已经过去了大约 3 年 9 个月左右&#xff01;&#xff01;&#xff01; 随着 Vue3 版本的逐渐成熟&#xff0c;我们的前端世界也迎来了一系列令人振奋的更新和工具。Vue 生态圈的持续扩大&#xff0c;无疑为前端开发人员带来了前所未有的便…

【自用】CentOS7.6 安装 node-RED 4.0.2 教程(各种坑都摆脱的版本)

步骤总览 1.下载安装 nodejs 2.安装并配置 node-RED 3.重启服务器&#xff0c;验证 node-RED 是否安装 and 配置成功 一、下载安装 nodejs 1.下载 nodejs 18 为什么要下载 nodejs 18 呢&#xff1f; 因为 node-RED 4.0.1 支持的最低 nodejs 版本就是 nodejs 18。 当然了&a…

javaEE——Servlet

1.web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行交互 2.java后端开发环境搭建 web后端(javaEE)程序需要运行在服务器中的&#xff0c;这样前端才可以访问得到 3.服务器是什么&#xff1f; ①服务器就是一款软件&#xff0c;可以向其发送请求&#…

基于Canvas的Html5多时区动态时钟实战

目录 前言 一、关于Canvas技术 1、Canvas是什么 2、Canvas的属性及渲染特性 二、Canvas动态多时区展示 1、新建html页面 2、创建Canvas对象 3、绘制所有的时钟 总结 前言 出差旅行相信大家一定会住酒店&#xff0c;大家在酒店的前台进行预订的时候&#xff0c;是不是都…

【开发篇】明明配置跨域声明,为什么却仍可以发送HTTP请求

一、问题 在SpringBoot项目中&#xff0c;明确指定仅允许指定网站跨域访问&#xff1a; 为什么开发人员却仍旧可以通过HTTP工具调用接口&#xff1f; 二、为什么 在回答这个问题之前&#xff0c;我们首先要了解一下什么是CORS&#xff01; 1、什么是CORS CORS的全称为跨域资源…

TOGAF培训什么内容?参加TOGAF培训有什么好处?考试通过率多少?

TOGAF培训什么内容&#xff1f;参加TOGAF培训有什么好处&#xff1f;考试通过率多少&#xff1f; TOGAF培训哪些内容&#xff1f; 通过本课程&#xff0c;你将掌握TOGAF的理论和实践&#xff0c;理解企业架构的影响&#xff0c;能够评估、启动、设 计、执行新一轮企业和IT架构…

实用软件分享-----一款免费的投屏软件(支持手机投屏到电脑)Aiseesoft Phone Mirror 2.2.36 x64

专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…

燃料电池混合电源的能量管理系统

这个例子显示了燃料电池混合电源的能量管理系统。 这个例子展示了燃料电池混合电源的能量管理系统。 电路描述 本文给出了基于燃料电池的多电动飞机应急动力系统的仿真模型。随着MEA中起落架和飞控系统的电气化程度的提高&#xff0c;常规应急电源系统(冲压式空气涡轮或空气驱…

分解+降维+预测!多重创新!直接写核心!EMD-KPCA-Transformer多变量时间序列光伏功率预测

分解降维预测&#xff01;多重创新&#xff01;直接写核心&#xff01;EMD-KPCA-Transformer多变量时间序列光伏功率预测 目录 分解降维预测&#xff01;多重创新&#xff01;直接写核心&#xff01;EMD-KPCA-Transformer多变量时间序列光伏功率预测效果一览基本介绍程序设计参…

WSL2安装ContOS7并更新gcc

目录 WSL2安装CentOS7下载安装包安装启动CentOS7 CentOS7更换国内源gcc从源码安装gcc卸载gcc CMake中使用gcc关于linux配置文件参考 WSL2安装CentOS7 Windows11官方WSL2已经支持Ubuntu、Open SUSE、Debian。但是没有centos&#xff0c;所以centos的安装方式略有不同。 下载安…

cesium 聚合

cesium 聚合(下面附有源码) 示例代码 <html lang="en"><head><!-- Use correct character set. -->

你喜欢波段交易吗?

波段交易的核心在于精准捕捉市场中的长期趋势波动&#xff0c;以实现更为稳健的收益。与剥头皮和日内交易不同&#xff0c;波段交易者更倾向于持有交易头寸数日乃至数周&#xff0c;以更宽广的视角把握市场动态。 这种交易方式的优势在于&#xff0c;它降低了对即时市场反应的…

思考如何学习一门编程语言?

一、什么是编程语言 编程语言是一种用于编写计算机程序的人工语言。通过编程语言&#xff0c;程序员可以向计算机发出指令&#xff0c;控制计算机执行各种任务和操作。编程语言由一组语法规则和语义规则组成&#xff0c;这些规则定义了如何编写代码以及代码的含义。 编程语言…

详解反向传播(BP)算法

文章目录 what&#xff08;是什么&#xff09;where&#xff08;用在哪&#xff09;How&#xff08;原理&&怎么用&#xff09;原理以及推导过程pytorch中的反向传播 what&#xff08;是什么&#xff09; 反向传播算法&#xff08;Backpropagation&#xff09;是一种用于…

鸿蒙开发Ability Kit(程序访问控制):【安全控件概述】

安全控件概述 安全控件是系统提供的一组系统实现的ArkUI组件&#xff0c;应用集成这类组件就可以实现在用户点击后自动授权&#xff0c;而无需弹窗授权。它们可以作为一种“特殊的按钮”融入应用页面&#xff0c;实现用户点击即许可的设计思路。 相较于动态申请权限的方式&am…

【聊聊原子性,中断,以及nodejs中的具体示例】

什么是原子性 从一个例子说起&#xff0c; x &#xff0c;读和写 &#xff0c; 如图假设多线程&#xff0c;线程1和线程2同时操作变量x&#xff0c;进行x的操作&#xff0c;那么由于写的过程中&#xff0c;都会先读一份x数据到cpu的寄存器中&#xff0c;所以这个时候cpu1 和 c…