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

news2025/1/8 5:47:46

分支语句

  • 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;
}

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

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

相关文章

Studying-代码随想录训练营day26| 491.递增子序列、46.全排列、47.全排列 II、51.N皇后、37.解数独、回溯总结

第26天&#xff0c;回溯part04&#xff0c;昨天休息复习总结回溯内容&#xff0c;&#x1f4aa;(ง •_•)ง&#x1f4aa; 目录 491.递增子序列 46.全排列 47.全排列 II 51.N皇后 37.解数独 回溯总结 491.递增子序列 文档讲解&#xff1a;代码随想录递增子序列 视频讲…

3D Gaussian Splatting代码中的forward和backward两个文件代码解读

3dgs代码前向传播部分 先来讨论一下glm&#xff0c;因为定义变量的时候用到了这个。 glm的解释 glm 是指 OpenGL Mathematics&#xff0c;这是一个针对图形编程的数学库。它的全称是 OpenGL Mathematics (GLM)&#xff0c;主要用于 OpenGL 的开发。这个库是基于 C 的模板库&…

递归算法练习

112. 路径总和 package Tree;import java.util.HashMap; import java.util.Map;class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val val;} }/*** 求 树的路径和* <p>* 递归 递减* <p>* 询问是否存在从*当前节点 root 到叶…

现代工作场所中的睡岗检测算法应用

在现代职场环境中&#xff0c;员工的工作状态直接影响到公司的整体效益。睡岗现象&#xff0c;即员工在工作时间内打瞌睡或睡觉&#xff0c;不仅降低了生产力&#xff0c;还可能带来安全隐患。因此&#xff0c;如何有效地检测和预防睡岗行为成为了企业管理中的一个重要课题。随…

The Sandbox 通过创作者挑战推动社区参与

游戏开发者并不是每天都有机会让自己的作品赢得大奖。但在 The Sandbox&#xff0c;这已经成为一种趋势&#xff01;首届 "创作者挑战 "让顶尖创作者将 150 万 SAND 捧回家。现在&#xff0c;我们要带着另一个巨额奖池回来了&#xff01; 关于首届创作者挑战&#xf…

02.C1W1.Sentiment Analysis with Logistic Regression

目录 Supervised ML and Sentiment AnalysisSupervised ML (training)Sentiment analysis Vocabulary and Feature ExtractionVocabularyFeature extractionSparse representations and some of their issues Negative and Positive FrequenciesFeature extraction with freque…

Vue.js中的计算属性:如何让数据自动更新

引言 在Vue.js的世界里&#xff0c;computed属性就像是你的智能助手&#xff0c;它能自动追踪变化&#xff0c;帮你快速做出反应。想象一下&#xff0c;你在做一道菜&#xff0c;调料&#xff08;数据&#xff09;一变&#xff0c;味道&#xff08;界面&#xff09;立刻跟上。…

leetcode刷题:vector刷题

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;leetcode刷题 1.只出现一次的数字 这道题很简单&#xff0c;我们只需要遍历一次数组即可通过异或运算实现。(一个数与自身异或结果为0&#xff0c;任何数与0异或还是它本身) class Solut…

Linux 实现自定义系统调用,支持参数和结果返回

本文实现一个简单的系统调用实现&#xff0c;支持输入字符串参数&#xff0c;并返回一个结果字符串。 以下是验证步骤&#xff1a; 1. 添加系统调用编号 试验使用的是 x86_64 架构的 Linux 内核。 找到并编辑 arch/x86/entry/syscalls/syscall_64.tbl 文件&#xff0c;在文件…

农业气象站的工作原理

TH-NQ8农业气象站是一种专门用于监测和记录与农业生产密切相关的气象要素的设施。它通过安装各种气象传感器来收集数据&#xff0c;如温度、湿度、风速、风向、降雨量、太阳辐射等&#xff0c;并将这些数据通过传输系统发送到数据中心或用户端&#xff0c;以供农业生产者、研究…

数据库。

数据库安全性 论述题5’ 编程题10’ sql语言实现权限控制 一、概述 1、不安全因素 &#xff08;1&#xff09;⾮授权对数据库的恶意存取和破坏 &#xff08;2&#xff09;数据库中重要的数据泄露 &#xff08;3&#xff09;安全环境的脆弱性 2、⾃主存取控制⽅法 gr…

Java学习 (七) 面向对象--多态、object类

一、多态性 多态在java中的体现是 父类的引用指向子类的对象 格式&#xff1a; 父类类型 变量名 子类对象 1、代码案例 vi Person.java public class Person {public String name;public int age;//新增方法public void eat(){System.out.println("人吃饭");}…

掌握这些快捷键,提升你的编程效率!

文章目录 执行代码行操作移动光标查看源码编辑常用操作类操作方法操作文件操作快捷键组合结语 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文…

Chapter9 更复杂的光照——Shader入门精要学习笔记

Chapter9 更复杂的光照 一、Unity的渲染路径1.渲染路径的概念2.渲染路径的类型①前向渲染路径a. 前向渲染路径的原理b. Unity中的前向渲染c. 两种Pass ②延迟渲染路径a. 延迟渲染路径的原理b. Unity中的延迟渲染c. 两种Pass ③顶点照明渲染路径 二、Unity的光源类型1.光源类型①…

【简单讲解神经网络训练中batch的作用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

IP地址与电商企业

网购作为我们现代生活不可或缺的部分&#xff0c;现如今电商企业蓬勃发展。 IP地址是网络世界中每一台设备的独特标识符&#xff0c;就像现实世界中每家每户的门牌号。对于电商企业而言&#xff0c;它在很多方面方面发挥着作用。 IP地址能够帮助电商企业精准地确定用户所在的地…

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

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

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

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

C++ ariac2 Windows库编译

cd "F:\\aria2" gmp-6.1.2.tar.lz expat-2.2.0.tar.bz2 sqlite-autoconf-3160200.tar.gz zlib-1.2.11.tar.gz c-ares-1.12.0.tar.gz libssh2-1.8.0.tar.gz --enable-libaria2 --enable-static libgnutls-dev&#xff08;对于HTTPS&#xff0c;BitTorrent&#xff0…

探囊取物之多形式注册页面(基于BootStrap4)

基于BootStrap4的注册页面&#xff0c;支持手机验证码注册、账号密码注册 低配置云服务器&#xff0c;首次加载速度较慢&#xff0c;请耐心等候&#xff1b;演练页面可点击查看源码 预览页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/preview/ly4gax38ub9j 演练页…