【C语言_C语言语句_复习篇】

news2024/9/28 8:35:49

目录

一、C语言的语句有哪些

        1.1 空语句

        1.2 表达式语句

        1.3 函数调用语句

        1.4 复合语句

        1.5 控制语句

 二、分支语句(两种)

        1.1 if语句

                1.1.1  普通分支语句(if、if_else)

                1.1.2  嵌套if语句

                1.1.3  else嵌套if两种写法的比较

                1.1.4  else悬空问题

                1.1.5  if语句的代码可读性

        1.2  switch语句(不常用)

三、循环语句 

         3.1 while循环

         3.2 do_while循环(不常用)

         3.3 for循环

         3.4 循环嵌套的练习

 四、转向语句

        4.1 break 语句

        4.2 continue 语句

        4.3 goto 语句

        4.4 return 语句

五、选择语句_例题

六、循环控制_例题

七、循环打印二维图形_例题


一、C语言的语句有哪些

1. C语言代码由一条条语句构成,每条语句的结束标志是封号

2. C语言的语句有5大类分别是空语句表达式语句函数调用语句复合语句控制语句

1.1 空语句

1. 概念:封号前面什么都不写的一条语句称为空语句。

2. 用法:这里需要一条语句,但不希望这条语句其任何作用。

int main()
{
    ;//空语句
    return 0;
}

 1.2 表达式语句

1. 问:编程语言中表达式可以由什么构成?

    答:一个操作数、一个操作数和一个运算符、两个操作数和一个操作符,多个操作数和多  个操作符,例如:1,i++,1+2,1+2*3,c=a+b。

2. 概念:封号前面是表达式的一条语句称为表达式语句。

int main()
{
    int i = 0;
    int a = 0, b = 0, c = 0;
    1;//表达式语句
    i++;//表达式语句
    1 + 2;//表达式语句
    1 + 2 * 3;//表达式语句
    c = a + b;表达式语句
    return 0;
}

1.3 函数调用语句

1. 概念:封号前面是函数调用的一条语句称为函数调用语句。

2. 用法:在函数中需要利用具有某功能的函数时使用。

int Add(int a, int b)
{
    return a + b;
}

int main()
{
    int a = 1;
    int b = 2;
    int sum = Add(a, b);//自定义函数的函数调用
    printf("%d\n", sum);//库函数的函数调用
    return 0;
}

1.4 复合语句

1. 概念:被{ }包裹起来的所有语句整体被称为复合语句。

2. 补充:一个{ }被称为一个代码块。

//在屏幕上打印用*组成的金字塔,行高列宽均为4

int main()//复合语句1
{
    int i = 0;
    for (i = 0; i < 4; i++)//复合语句2
    {
        int j = 0;
        //空白
        for (j = 0; j < 4 - 1 - i; j++)//复合语句3
        {
            printf(" ");
        }
        //星星
        for (j = 0; j <= i; j++)//复合语句4
        {
            printf("*");
        }
        //换行
        printf("\n");
    }
    return 0;
}

 1.5 控制语句

1. 概念:控制语句共9种,用于控制程序的执行流程,实现顺序、选择和循环结构

    ① 选择语句:if_else语句、switch语句

    ② 循环语句:while语句、do_while语句、for语句

    ③ 转向语句:break语句、continue语句、goto语句、return语句

 二、分支语句(两种)

1.1 if语句

1.1.1  普通分支语句(if、if_else)

1. 如果表达式成立就执行...否则就执行...。

2. if 和 else 默认只能控制一条语句,相同时控制多条语句需使用{ }括起来。

1.1.2  嵌套if语句

1. 如果表达式1成立并且表达式2成立就执行...否则就执行...。

2. 如果表达式1不成立的基础上表达式2成立就执行...否则就执行...。

3. if_else if _else 适用于将主线直接分成几部分的情况。

4.   总之,if语句的嵌套,其实就是将分支单元划分为更小的分支单元。if中直接嵌套if表示条件的条件,eles中嵌套if,普通写法表示将上一个条件不满足的部分划分为更小的分支单元,而 if_else if _else 写法常用于题目中有明显想将主线划分为多个并列分支单元的意向。

1.1.3  else嵌套if两种写法的比较

//else嵌套if两种写法的比较:
//两种写法本质是一个意思,只是在于使用者喜欢怎样去使用
//题目:判断整型n是正数、负数还是0
//写法一:
int main()
{
    int n = 0;
    scanf("%d", &n);
    //判断
    if(n > 0)
    {
        printf("%d是正数\n", n);
    }
    else//else部分就只剩下<=0的情况了
    {
        //理解成剩余部分再划分的写法
        if(n < 0)
        {
            printf("%d是负数\n", n);
        }
        else
        {
            printf("%d是0\n", n);
        }
    }
    return 0;
}
//写法二:
int main()
{
    int n = 0;
    scanf("%d", &n);
    //判断
    if(n > 0)
    {
        printf("%d是正数\n", n);
    }
    else if(n < 0)//理解成主线划分的多个并列的分支写法
    {
        printf("%d是负数\n", n);
    }
    else
    {
        printf("%d是0\n", n);
    }
    return 0;
}

1.1.4  else悬空问题

1. 问题起源:在写C语言题目或读别人的代码时,由于代码可读性差导致我们无法准确判断if语句中的else到底是跟着哪个if,因而造成了else悬空问题。

2. 解决方法:代码从上往下读,只要遇到else就根据else总是与最近的未配对的if配对原则进行匹配即可。

int main() 
{
    int a = 1;
    int b = 2;
    if ( a == 0 )
        if ( b == 2 )
            printf("123\n");
    else
        printf("abc\n");
    return 0;
}
//这段代码在屏幕上什么都不会打印
//是因为该代码中的else与第二个if配对,而不是与第一个if配对

1.1.5  if语句的代码可读性

//示例1:比较变量a和常数3是否相等,相等就在屏幕上打印hehe
int main()
{
    int a = 0;
    if (a = 3)//手误写法,最终会造成表达逻辑有误
    {
        printf("hehe\n");
    }
}
//启示:
//变量和常数比较是否相等时,把常数写在左边,变量写在右边
//这样当我们粗心把==写成=时编译器会报警告,而不是继续编译

//示例2:虽节省空间,但可读性差
int main(){
    int a = 0;
    if (a == 0){
        printf("hehe\n");
    }else{
        printf("haha\n");
}
//启示:
//不能省的空间不要省,无论控制1条还是控制多条语句都写上代码块

//示例3:可读性好
int main()
{
    int arr[] = { 1,2,3 };
    int sz = sizeof(arr) / sizeof(arr[0]);//定义数字后立即计算数组大小
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        if (2 == arr[i])//比较常量和变量是否相等时,常量在左,变量在右
        {
            printf("hehe");//不管控制几条语句,都采用代码块括起来
        }
    }
    return 0;
}

1.2  switch语句(不常用)

1. switch语句可实现多分支,由于使用条件苛刻所以在特定情况下才主动使用switch语句。

2. 苛刻条件:

①switch后面的表达式必须是整型表达式。

②case后面的值必须是整型常量表达式(字符是特殊的整型类型,枚举类型也可以)。

3. 需要理解:

①case和default相当于每个分支的入口,而break相当于每个分支的出口,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,直到遇到break语句或者来到switch语句的结尾才会跳出switch语句。

②当所有case都不满足时,才执行default分支,default分支可依据具体情况选择写还是不写

③每个switch语句只能有一个default分支。

④case和default分支没有顺序要求,但dafault通常写在最后面。

⑤switch语句的最后一个分支可以不写break,但最好是写上。

switch(表达式)
{
case 值1:
    语句1;
    语句2;
    ...
    break;
case 值2:
    语句1;
    语句2;
    ...
    break;
case 值3:
    语句1;
    语句2;
    ...
    break;
...
default:
    语句1;
    语句2;
    ...
    break;
}

三、循环语句 

 3.1 while循环

1. 特点:循环条件总是比循环体多执行一次,且循环变量需在循环体内部调整。

2. 补充:想要一直循环可以将表达式写成恒真的形式,例如:while(1)。

3. 运行过程:先判断while后面的表达式是否为真,如果为真就执行一次循环体的内容,执行完后,程序又会来到while循环的第一行,继续判断while后面的表达式是否为真;如果为假,程序将跳过整个循环体的代码块,不会执行循环体的任何内容。

 3.2 do_while循环(不常用)

1. 特点:循环体至少执行一次,且循环变量需在循环体内部调整。

2. 注意:do_while中while后面的封号别忘记写了。

3. 运行过程:先执行do后面代码块内的所有内容,执行完后来到while所在行,判断while后面的表达式是否为真,如果为真将继续执行一次循环体内的所有内容;如果为假,将跳出循环来到while(表达式)的下一行。

 3.3 for循环

1. 表达式1:循环变量初始化部分

    表达式2:循环是否继续的条件

    表达式3:循环变量的调整

2. 特点:表达式1至执行一次,表达式2总是比循环体多执行一次。

3. 注意:①表达式之间是用封号隔开的 ②表达式1、2、3均可以省略,但并不建议省略 ③for循环的循环条件所含的循环变量不一定要写在表达式3的位置,例如,《国王发金币问题》[NOIP2015]金币_牛客题霸_牛客网 (nowcoder.com)

4. 运行过程:先执行表达式1,再就表达式2的真假判断是否要执行循环体的内容,如果表达式2为真,那么将执行一次循环体内的内容,执行完后,程序将回到for循环的第一行,执行表达式3,执行完后,再次执行表达式2,判断是否要继续执行循环体的内容;如果表达式2为假,程序将跳过整个循环体的代码块,不会执行循环体的任何内容,包括表达式3。

 

//《国王发金币问题》
解法一:
int main()
{
	int k = 0;
	scanf("%d", &k);
	int day = 0;//已计算的天数
	int sum = 0;//发放的金币总和
	for(int money = 1; day < k; money++)
	{
		for(int i = 0; i < money; i++)
		{
			sum += money;
			day++;
			if(day == k)
			{
				break;
			}
		}
	}
	//输出
	printf("%d\n", sum);
	return 0;
}

//解法二:
int main()
{
	int k = 0;
	scanf("%d", &k);
	int day = 0;//已发金币的天数
	int money = 1;
	int sum = 0;
	while (money)
	{
		int i = 0;
		for (i = 0; i < money; i++)
		{
			sum += money;
			day++;
			if (day == k)
			{
				goto next;
			}
		}
		money++;
	}
next:
	//输出结果
	printf("%d\n", sum);
	return 0;
}

 3.4 循环嵌套的练习

//【打印100~200之间的素数】
int main()
{
     int i = 0;
     //循环产⽣100~200的数字
     for(i=101; i<=200; i += 2)
     {
         int flag = 1;//假设每次得到的i是素数
         int j = 0;
         for(j=2; j<=(int)sqrt((double)i); j++)
         {
             if(i % j == 0)
             {
                 flag = 0;
                 break;
             }
         }
         //
         if(flag == 1)
         {
             printf("%d ", i);
         }
     }
     return 0;
}

 四、转向语句

4.1 break 语句

1. 关键字break的作用:只要break在循环体中被执行,就会直接跳出当前所在的一层循环。

4.2 continue 语句

1. 关键字continue的作用:跳过本次循环体中后面的代码。

4.3 goto 语句

1. C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号,goto 语句可以实现在同⼀个函数内跳转到设置好的标号处,标号一定要顶格写。

2. goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以建议能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出使⽤ goto 就⾮常的⽅便了。

4.4 return 语句

1. return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执⾏表达式,再返回表达式的结果。

2. return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况。

3. return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型。

4. return语句执⾏后,函数就彻底返回,后边的代码不再执⾏,如下方图片代码。

5. 如果函数中存在if等分⽀的语句,则要保证每种情况下都有return,否则会出现编译错误。

五、选择语句_例题

[NOIP2008]ISBN号码_牛客题霸_牛客网 (nowcoder.com)

//18.ISBN号码

//打印数组
void Print(char arr[], int sz)
{
	int i = 0;//循环变量
	for (i = 0; i < sz; i++)
	{
		printf("%c", arr[i]);
	}
}

int main()
{
	char arr[13] = { '0' };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int sum = 0;
	int j = 1;
	int i = 0;//循环变量
	for (i = 0; i < sz; i++)
	{
		scanf("%c", &arr[i]);
		if (i != 1 && i != 5 && i != 11 && i != 12)
		{
			sum += (arr[i] - 48) * (j++);
		}
	}
	//
	if (sum % 11 == 10)
	{
		if (arr[sz - 1] == 'X')
		{
			printf("Right\n");
		}
		else
		{
			arr[sz - 1] = 'X';
			Print(arr, sz);
		}
	}
	else
	{
		if (arr[sz - 1] == sum % 11 + 48)
		{
			printf("Right\n");
		}
		else
		{
			arr[sz - 1] = sum % 11 + 48;
			Print(arr, sz);
		}
	}
	return 0;
}

六、循环控制_例题

包含数字9的数_牛客题霸_牛客网 (nowcoder.com)

水仙花数_牛客题霸_牛客网 (nowcoder.com)

变种水仙花_牛客题霸_牛客网 (nowcoder.com)

小乐乐与进制转换_牛客题霸_牛客网 (nowcoder.com)

[NOIP2015]金币_牛客题霸_牛客网 (nowcoder.com)

回文对称数_牛客题霸_牛客网 (nowcoder.com)

//5.求1~2019之间含有数字9的数有几个

int main()
{
	int i = 0;//循环变量
	int count = 0;//计数器
	for (i = 1; i < 2020; i++)
	{
		int i2 = i;//替身
		while (i2)
		{
			if (i2 % 10 == 9)
			{
				count++;
				break;
			}
			i2 /= 10;
		}
	}
	//输出
	printf("%d\n", count);
	return 0;
}
//7.求整数m~n之间的水仙花数

#include <math.h>

int main()
{
	int m = 0, n = 0;
	while (~scanf("%d %d", &m, &n))
	{
		int flag = 1;//如果这组中没有水仙花数
		for (; m <= n; m++)
		{
			int sum = 0;
			int m2 = m;
			while (m2)
			{
				sum += (int)pow(m2 % 10, 3.0);
				//调整
				m2 /= 10;
			}
			if (m == sum)
			{
				flag = 0;
				printf("%d ", m);
			}
		}
		换行
		//printf("\n");//但题目的意思是不用换行
		//
		if (flag)
		{
			printf("no\n");
		}
	}
	return 0;
}
//8.求5位数中的所有变种水仙花数

int main()
{
	int i = 0;//循环变量
	for (i = 10000; i < 100000; i++)
	{
		int j = 0;//被除数
		int sum = 0;
		for (j = 10; j < 100000; j *= 10)
		{
			sum += (i % j) * (i / j);
		}
		if (i == sum)
		{
			printf("%d ", i);
		}
		换行
		//printf("\n");//但题目的意思是不用换行
	}
	return 0;
}
//10.将一个10进制数转化成6进制数并输出

int main()
{
	int n = 0;
	int arr[20] = { 0 };
	int i = 0;
	scanf("%d", &n);
	while (n)
	{
		arr[i++] = n % 6;
		n /= 6;
	}
	//
	for (i--; i >= 0; i--)
	{
		printf("%d", arr[i]);//数组元素里面存的数字仍然是10进制的
	}
	return 0;
}
//11.国王发金币*

int main()
{
	int k = 0;
	scanf("%d", &k);
	int day = 0;//已发金币的天数
	int money = 1;
	int sum = 0;
	while (money)
	{
		int i = 0;
		for (i = 0; i < money; i++)
		{
			sum += money;
			day++;
			if (day == k)
			{
				goto next;
			}
		}
		money++;
	}
next:
	//输出结果
	printf("%d\n", sum);
	return 0;
}
//12.回文对称数

int main()
{
	int n = 0;
	int i = 0;//循环变量
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		int i2 = i;
		int sum = 0;
		while (i2)
		{
			sum = sum * 10 + i2 % 10;
			//调整
			i2 /= 10;
		}
		if (i == sum)
		{
			printf("%d\n", i);
		}
	}
	return 0;
}

七、循环打印二维图形_例题

菱形图案_牛客题霸_牛客网 (nowcoder.com)

K形图案_牛客题霸_牛客网 (nowcoder.com)

//8.菱形图案*

int main()
{
	int n = 0;
	while (~scanf("%d", &n))
	{
		int i = 0;//行
		int j = 0;//列
		//上三角
		for (i = 0; i < n; i++)
		{
			//空格
			for (j = 0; j < n - i; j++)
			{
				printf(" ");
			}
			//星星
			for (j = 0; j <= i; j++)
			{
				printf("* ");
			}
			//换行
			printf("\n");
		}
		//下三角
		for (i = (n + 1); i > 0; i--)
		{
			//空格
			for (j = 0; j < (n + 1) - i; j++)
			{
				printf(" ");
			}
			//星星
			for (j = i; j > 0; j--)
			{
				printf("* ");
			}
			//换行
			printf("\n");
		}
	}
	return 0;
}
//9.K形图案*

int main()
{
	int n = 0;
	while (~scanf("%d", &n))
	{
		int i = 0;//行
		int j = 0;//列
		//上三角
		for (i = n; i > 0; i--)
		{
			for (j = i + 1; j > 0; j--)
			{
				printf("* ");
			}
			//换行
			printf("\n");
		}
		//下三角
		for (i = 0; i < n + 1; i++)
		{
			for (j = 0; j <= i; j++)
			{
				printf("* ");
			}
			//换行
			printf("\n");
		}
	}
	return 0;
}

八、图片

 

本篇已完结。。。。。。 

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

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

相关文章

代码随想录算法训练营第四十七天|动态规划|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

198.打家劫舍 文章 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代…

Docker容器化技术(使用Docker搭建论坛)

第一步&#xff1a;删除容器镜像文件 [rootlocalhost ~]# docker rm -f docker ps -aq b09ee6438986 e0fe8ebf3ba1第二步&#xff1a;使用docker拉取数据库 [rootlocalhost ~]# docker run -d --name db mysql:5.7 02a4e5bfffdc81cb6403985fe4cd6acb0c5fab0b19edf9f5b8274783…

NLP:HanLP的下载与使用

昨天说到要做一个自定义的训练模型&#xff0c;但是很快这个想法就被扑灭了&#xff0c;因为这个手工标记的成本太大&#xff0c;而且我的上级并不是想要我做这个场景&#xff0c;而是希望我通过这个场景展示出可以接下最终需求的能力。换句话来说&#xff1a;可以&#xff0c;…

leetcode代码记录(找到小镇的法官

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 小镇里有 n 个人&#xff0c;按从 1 到 n 的顺序编号。传言称&#xff0c;这些人中有一个暗地里是小镇法官。 如果小镇法官真的存在&#xff0c;那么&#xff1a; 小镇法官不会信任任何…

【数据结构】树与堆 (向上/下调整算法和复杂度的分析、堆排序以及topk问题)

文章目录 1.树的概念1.1树的相关概念1.2树的表示 2.二叉树2.1概念2.2特殊二叉树2.3二叉树的存储 3.堆3.1堆的插入&#xff08;向上调整&#xff09;3.2堆的删除&#xff08;向下调整&#xff09;3.3堆的创建3.3.1使用向上调整3.3.2使用向下调整3.3.3两种建堆方式的比较 3.4堆排…

新 树莓派4B 温湿度监测 基于debian12的树莓派OS

前言 本文旨在完成通过外接温湿度传感器至树莓派使得树莓派不断记录并存储温湿度数据 这个领域有很多文章&#xff0c;但是部分文章已经缺乏了时效性&#xff0c;在最新系统不适用&#xff0c;本文目前适用 硬件 硬件连接 温湿度传感器常选用DHT11和DHT22&#xff0c;淘宝…

MTK的flash_tool.exe中,“Format-Download”、“Firmware-Upgrade”和“Download”是三种不同的刷机模式

在MTK的flash_tool.exe中&#xff0c;“Format-Download”、“Firmware-Upgrade”和“Download”是三种不同的刷机模式。具体分析如下&#xff1a; Format-Download&#xff1a;这种模式会执行全擦除&#xff0c;即清除存储器中的所有数据&#xff0c;然后下载新的固件。这种方…

图片编辑器tui-image-editor

提示&#xff1a;图片编辑器tui-image-editor 文章目录 前言一、安装tui-image-editor二、新建components/ImageEditor.vue三、修改App.vue四、效果五、遇到问题 this.getResolve is not a function总结 前言 需求&#xff1a;图片编辑器tui-image-editor 一、安装tui-image-ed…

DB算法原理与构建

参考&#xff1a; https://aistudio.baidu.com/projectdetail/4483048 Real-Time Scene Text Detection with Differentiable Binarization 如何读论文-by 李沐 DB (Real-Time Scene Text Detection with Differentiable Binarization) 原理 DB是一个基于分割的文本检测算…

IDEA自定义Maven仓库

Maven 是一款广泛应用于 Java 开发的工具&#xff0c;其作用类似于一个全自动的 JAR 包管理器&#xff0c;能够方便地导入开发所需的相关 JAR 包。在使用 Maven 进行 Java 程序开发时&#xff0c;开发者能够极大地提高开发效率。以下是关于如何安装 Maven 以及在 IDEA 中配置自…

电脑远程桌面选项变成灰色没办法勾选怎么办?

有些人在使用Windows系统自带的远程桌面工具时&#xff0c;会发现系统属性远程桌面选项卡中勾选启用“允许远程连接到此计算机”。 导致此问题出现的原因主要是由于组策略或者注册表设置错误造成的。 修复远程桌面选项变灰的两种方法&#xff01; 方法一&#xff1a;设置本地组…

【LeetCode】84. 柱状图中最大的矩形(困难)——代码随想录算法训练营Day60

题目链接&#xff1a;84. 柱状图中最大的矩形 题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,…

Vue3调用钉钉api,内嵌H5微应用单点登录对接

钉钉内嵌H5微应用单点登录对接 https://open.dingtalk.com/document/isvapp/obtain-the-userid-of-a-user-by-using-the-log-free 前端需要的代码 1、安装 dingtalk-jsapi npm install dingtalk-jsapi2、在所需页面引入 import * as dd from dingtalk-jsapi; // 引入钉钉a…

python版本原因导致的grpcio-tools-1.48.2安装失败

因为工作需要使用python开发grpc客户端&#xff0c;在mac电脑上通以下命令安装python的grpc依赖库总是不成功 pip3 install --no-cache-dir --force-reinstall -Iv grpcio1.48.2 grpcio-tools1.48.2 clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG …

【string一些函数用法的补充】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 string类对象的修改操作 我们来看 c_str 返回c格式的字符串的操作&#xff1a; 我们来看 rfind 和 substr 的操作&#xff1a; string类非成员函数 我们来看 r…

安卓之四大组件

组件描述Activity(活动)在应用中的一个Activity可以用来表示一个界面&#xff0c;意思可以理解为“活动”&#xff0c;即一个活动开始&#xff0c;代表 Activity组件启动&#xff0c;活动结束&#xff0c;代表一个Activity的生命周期结束。一个Android应用必须通过Activity来运…

react04- mvc 、 mvvm

MVC与MVVM stackoverflow论坛网站 react前端框架 使用框架前&#xff1a; 操作dom > js获取dom元素&#xff0c;事件侦听&#xff0c;修改数据&#xff0c;设置样式。。。 操作dom问题: 直接操作dom&#xff0c;会造成大量的回流、重绘&#xff0c;消耗大量性能操作起来也…

MySQL基础---SQL语句2(WHERE、AND、OR、ORDER BY、COUNT)

1. WHERE 子句 1. 语法 WHERE 子句用于限定选择的标准 在 slelece、update、delete 语句中&#xff0c;皆可使用 WHERE 子句来限定选择的标准 -- 查询语句 select 列名称 form 表名称 where 列 运算符 值-- 更新语句 update 列名称 form 列新值 where 列 运算符 值-- 删除语句…

Linux——信号量

目录 POSIX信号量 信号量原理 信号量概念 信号量函数 基于环形队列的生产者消费者模型 生产者和消费者申请和释放资源 单生产者单消费者 多生产者多消费者 多生产者多消费者的意义 信号量的意义 POSIX信号量 信号量原理 如果仅用一个互斥锁对临界资源进行保护&#…

Vulnhub靶机:Kioptrix_Level1.2

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;192.168.56.101&#xff09; 靶机&#xff1a;Kioptrix_Level1.2&#xff08;192.168.56.106&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vul…