C语言期末考试复习PTA数据类型及表达式-分支结构程序-循环结构-数组经典选择题

 目录

 

 

第一章:C语言数据类型和表达式

第一题:

第二题:

第三题:

第四题:

第五题:

第六题:

第七题:

第八题:

第九题:

第二章:分支结构程序设计

第一题:

第二题:

第三题:

第四题:

第五题:

第六题:

第七题:

第八题:

第九题:

第三章:循环结构

第一题:

第二题:

第三题:

第四题:

第五题:

第六题:

第四章:数组

第一题:

第二题:

第三题:

第四题:

第五题:

第六题:

第七题:

第八题:

第九题:

第十题:

第十一题:

第十二题:


 

 

第一章:C语言数据类型和表达式

第一题:

设x 、y均为f1oat型变量,则以下不合法的赋值语句是 ( )。


A.
x*=y+8;


B.
x=y=0;


C.
y=(x%2)/10;


D.
y=1+x;

分析:对于c,取余运算两边必须是整型;

第二题:

下面四个选项中,均是合法整形常量的选项是( )


A.
160 、 -0xffff 、 011


B.
-01 、 986,012 、 0668


C.
-0xcdf 、 01a 、 0xe


D.
-0x48a 、 2e5 、 0x

分析:首先你要知道十六进制的数怎么表示,它是以0x为前缀使用 0-9 和 A-F(或 a-f)这些字符来表示数字 0-15,然后八进制是以0为前缀,使用数字 0-7 来表示数字 0-7

所以b错在0668,八进制中出现了8,

c错在01a,八进制出现了字母

d错在2e5,是一个浮点数,不是整数,0x是不完整的十六进制表示

第三题:

表达式

下面的程序段将输出 ▁▁▁▁▁。

double pi = 22 / 7, r = 2, g;
g = 2 * pi * r;
printf("%.2f\n", g);

A.
12.57


B.
0.00


C.
12.00


D.
13.00

分析:

22/7,因为双方都是整数,所以得出结果也是整数不会保留小数,所以22/7=3,然后最后是输出12.00

第四题:

为表示“a和b都不等于0”,应使用的C语言表达式是()。


A.
(a!=0) || (b!=0)


B.
a || b


C.
!(a=0)&&(b!=0)


D.
a && b

分析:首先读懂题,翻译成a和b都不等于0时为真,所以d肯定对

接下来分析a,b,c

a用||逻辑符,就是只要两边一个满足就为真,那么a不等于0是为真,这个时候b可以为0,照样表达式成立

b同上

c的表达式就已经错了,因为()里面表达式应该是判断,而不是进行赋值

第五题:

设 x、y、t均为int型变量,则执行语句:x=y=3; t= ++x || ++y; 后,y的值为____。


A.
1


B.
不定值


C.
3


D.
4

 

分析:执行语句t=++x || ++y;,根据短路逻辑运算符的特性,如果第一个表达式的值为真(非零),则不会执行第二个表达式。先把++x赋给t之后,这个表达式为真不会进行++y。

第六题:

设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )


A.
n=(n*100+0.5)/100.0


B.
n=n*100+0.5/100.0


C.
n=(n/100+0.5)*100.0


D.
m=n*100+0.5,n=m/100.0

分析:这道题看起来抽象,其实原理很简单,举个例子

假设n的值为3.4567。

按照选项A的表达式,首先计算 3.4567 * 100 = 345.67,将小数点后两位的数值变为整数部分。

接着加上0.5,得到 345.67 + 0.5 = 346.17,进行了四舍五入运算。

最后将结果除以100.0,得到 346.17 / 100.0 = 3.4617,将整数部分转换回小数点后两位的数值。

因此,选项A的表达式 (n*100+0.5)/100.0 能够实现将n中的数值保留小数点后两位,并进行四舍五入运算。

第七题:

表达式

下面的程序段将输出 ▁▁▁▁▁ 。

int n = 4, s;
s = 1 / 2 * n * (n + 1);
printf("%d\n", s);

A.
10


B.
0.025


C.
0.625


D.
0

思路:

写这种题,要明白优先运算的优先顺序,看s,先算小括号里的,然后从左至右一次运算,即先算1/2,但是1和2是整数运算得出0.5然后取整变成0,因此会输出0.

第八题:

表达式(x%3)等价于表达式( )。


A.
x%3 == 2


B.
x%3 == 0


C.
x%3 == 1


D.
x%3 != 0

 

 思路:

写这种题记住一点,无需想太多,要想表达式x%3成立,那么x%3的结果就不能为0,因为我们规定表达式值为0就为假,因此表达式等价D。

第九题:

下列不合法的用户标识符是


A.
j2_KEY


B.
_8_


C.
4d_a


D.
Double

思路:用户标识符遵循特定规则:

  1. 用户标识符只能包含字母(大小写敏感)、数字和下划线。
  2. 用户标识符不能以数字开头。
  3. 用户标识符不能包含空格或其他特殊字符。

因此选C

第二章:分支结构程序设计

第一题:

若a为int类型,且其值为3,则执行完表达式a+= a-= a*a后,a的值是__。


A.
9


B.
-3


C.
6


D.
-12

思路:

明白运算符的优先顺序,*的优先级高于=和+,因此先从a*a开始运算,a的值为3,a*a=9,然后,a-=9,相当于a=a-9,这个时候a还是3,然后3-9=-6即把-6赋给了a,然后a这个时候的值为-6,然后进行最后一语句,a+=-6,a这个时候是-6,这个表达式相当于a=a-6,所以最后a=-12;

 

 

第二题:

定义int score = 75; 则表达式 80 > score > 70 的值是:


A.
0


B.
true


C.
1


D.
false

思路:

从左至右依次进行,首先80>75为真,那么这个时候表达式返回1,即变成1>70为假,所以返回0

第三题:

下列运算符中优先级最低的是__.


A.
II


B.
>=


C.
~


D.
!=

思路:这里给大家整这道题,也是想给大家总结这个运算符的优先级,记住常见的。

4112528002e9414f89efe3022c94f3e3.png

67cf2a6ec8ab4a4788f29372ba7cfc39.png

37dd18c2f3ac4fedab7c7ab270f26ac0.png

观察规律,一目运算符>二目运算符>三目运算符,算术运算符就是+ - * / 这些,关系运算符就是> < 这些,并且记住赋值运算符比 逗号运算符强。

因此这道题选择A

第四题:

设有定义:

int a = 1, b = 2, c = 3, d = 4, m = 2, n = 2;
则执行表达式

(m = a > b) && (n = c > d);
后,n的值为____。


A.
0


B.
3


C.
1


D.
2

 

思路:

由上述介绍了运算符的优先级,那么这道题就如同探囊取物,看表达式,先是a>b,即1>2,为假,返回0,即变成m=0,就是把0赋给了m,表达式为真,然后呢c>d即3>4为假返回0,0赋给了n为真,所以n等于0 对吗?不对,为什么?错就错在你还未理解&&这个运算符,必须两边同时成立才为真,但当左边的表达式为假的时候,他根本不会进行第二个表达式的运算,所以n还是原来的值2,因此这道题为D

这就是逻辑运算符的短路原则,对于||只要第一个操作数为假则不会进行第二个操作数.

对于逻辑或运算符 ||,如果第一个操作数为真(非零),则整个表达式的值为真,不会再计算第二个操作数。只有当第一个操作数为假(0)时,才会计算第二个操作数。

 

 

第五题:

设 int x=1, y=1; 表达式(!x||y--)的值是( )。


A.
-1


B.
0


C.
1


D.
2

思路:

根据上题给大家介绍的逻辑运算符的短路规则,这道题很easy了吧

在这个表达式中,x 的值为 1,非零,所以 !x 为假(0)。因此,整个表达式 (!x || y--) 的值取决于 y-- 的结果。

y-- 表示先将 y 的值赋给表达式,然后再将 y 的值减 1。由于后缀自减运算符的优先级较低,所以 y-- 的值为 1,并且 y 的值被减 1 变为 0。

因此,(!x || y--) 的值为 0 || 1,即 1

答案是 C. 1。

 

第六题:

已知int i, a; 执行语句i=(a=2*3,a*5),a+6;后,变量i的值是( )。


A.
6


B.
30


C.
36


D.
12

思路:

还是考察运算符的优先级,之前给大家介绍=的优先级比 , 高,因此先执行逗号表达式a=2*3,a*5,其中a首先被赋值为6,然后计算a*5返回结果30,所以整个逗号表达式的值是30。接着,将这个值赋给变量i,即i=30

最后,执行语句a+6,但并没有把其结果赋给任何变量,所以该语句的执行对i的值没有影响。

因此,变量i的值是30,选项B正确。

 

第七题:

若变量已正确定义,表达式 (j=3, j++) 的值是____。


A.
5


B.
4


C.
6


D.
3

思路:

在表达式(j=3, j++)中,逗号操作符,会先执行左边的表达式j=3,将3赋值给变量j,然后再执行右边的表达式j++

但是需要注意的是,后置递增运算符++会在整个表达式执行完之后才生效。所以在这个表达式中,尽管执行了j=3的赋值操作,但是j++的递增操作并没有影响到整个表达式的值。

因此,表达式(j=3, j++)的值是3,选项D正确。

 

第八题:

设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d 的结果为( )。


A.
3


B.
4


C.
2


D.
1

思路:

对于这种多目运算的怎么分析?

答案就是一步步来,首先我们把这个值带进去,1<2为真所以a为表达式的值不执行后面。这里给大家延申一些,如果我是说如果,a<b为假的话,那么就会执行c<d,然后根据c<d是否为真进行判断是执行a还是执行d

 

第九题:

假设所有变量均为整型,则表达式(a = 2, b = 5, b++, a+b)的值是( )


A.
2


B.
7


C.
6


D.
8

思路:

在这个表达式中,首先执行 a = 2,将 2 赋给变量 a。然后执行 b = 5,将 5 赋给变量 b。接下来执行 b++,将 b 的值增加 1,此时 b 的值为 6。最后执行 a + b,即 2 + 6,结果为 8。

因此,表达式 (a = 2, b = 5, b++, a+b) 的值为 8。

在这里大家可能会有疑问,为什么不是7,因为b++只要不执行这个语句的时候b已经变成了6。如果说是还在b++这个语句里面,就是先用6然后再加1

 

第三章:循环结构

第一题:

下面这段程序,若scanf输入k的值为50,则程序将循环有限次,在打印输出有限行之后,程序将正常结束。

#include <stdio.h>
int main(){
    int k;
    scanf("%d", &k);
    int i=100;
    while(i > k){
        printf("%d ", i);
        i++;
    }
    return 0;
}

思路:

这道题,可能很多人都是一知半解,觉得i>k为真,并且i还自增,必然一直循环下去,但是要知道int类型的数据所表达的范围有限。

在这段程序中,如果 scanf 输入的 k 值为 50,并且 i 的初始值为 100,循环条件 i > k 成立,循环体内的语句会被执行。

每次循环中,会打印输出 i 的值,并将 i 的值递增 1。由于 i 是使用整型变量声明的,整型变量在大多数系统中的范围是有限的。当 i 递增到超过整型变量所能表示的最大值时,整型溢出会发生。

对于大多数系统来说,int 类型的范围是 -2,147,483,648 到 2,147,483,647。当 i 的值增加到超过这个范围时,它将溢出并变成一个负值。

因此,当 i 递增到超过 int 类型所能表示的最大值时,循环会终止,程序将正常结束。

 

第二题:

下面这段程序中的循环将是无限循环,程序将始终运行、无法结束(假设运行该程序的计算机系统永远不会发生意外情况而崩溃或断电)。

#include "stdio.h"
int main(){
    for(long num=1; num>0; num++)
        printf("%ld\n", num);
    return 0;
}

思路:

这道题也是与上道题,同理

 

第三题:

下列程序段输出结果为 ____。

下列程序段输出结果为 ____。

int a=1,b=2,c=2,t;
while(a<b<c) {    t=a; a=b; b=t; c--;    }
printf( "%d,%d,%d", a, b, c);

思路:

首先看while循环条件,a<b即1<2为真返回1,变成1<c,即1<2为真然后进入循环体

然后看循环体前三条语句实际就是把a和b的值进行了交换,没看明白的可以画个图模拟一下,然后c--,这个时候c的值变成了1,接着再次进行循环条件的判断,a<b,因为a和b的值已经交换了,所以变成了2<1即为假,返回0,所以变成了0<c,c的值为1,所以0<1即为真,那么再次进入循环体,然后再次把a和b的值交换,这个时候a再次变成1b再次变成2,c再次--,c就变成了0,所以最终输出2,1,0

 

第四题:

 

对于循环while(!e) 语句,!e等价于____。


A.
e!=1


B.
e==0


C.
e!=0


D.
e==1

思路:

之前的内容讲过类似的,再次整出这道题想大家都整,明白,看懂代码,以后可能也需要写出这样的代码。

这次由大家自行解答,若有问题回到前文再看解析。

第五题:

设有程序段

int m=20; while (m=0) m=m++;
则下面描述中正确的是( )。


A.
循环体语句一次也不执行


B.
循环体语句执行一次


C.
while 循环执行 10 次


D.
循环是无限循环

思路:

这道题和前面的类似,答案由你来书写。

第六题:

执行下面的程序后变量a的值是

#include <stdio.h>
int main(void)
{
    int a, b;
    for (a = 1, b = 1; a <= 100; a++) {
        if (b > 10)break;
        if (b % 3 == 1) {
            b += 3;
            continue;
        }
        b -= 3;
    }
    printf("%d\n", a);
    return 0;
}

A.
8


B.
5


C.
7


D.
6

思路:

这道题考察就是简单循环的理解,建议大家重新理一遍这道题的逻辑,不要直接用编译器来求答案,理解代码的逻辑。看懂代码。

 

第四章:数组

第一题:

在对数组全部元素赋初值时,不可以省略行数,但能省略列数。


T

F

思路:

对于二维数组,行数可以省略,列数不能省略,举个例子,arr[][3]={{1,2},{1,2,3}},省略了行数,并不影响我们的理解,明显可以得出行数为2。列数不能省略,如果不指定列数, 它就不能知道一行放几个数据了。

第二题:

若有定义float a[6]={1,2,3};,则数组中含有3个元素。


T

F

 

思路:

数组有6个元素,只不过只指定了前三个元素,那么后三个元素的值。

后三个元素的值不确定。

第三题:

调用strcmp函数比较字符串大小时,通常较长的字符串会较大。


T

F

思路:

字符串比较大小是按照字典序来比较,不是说字符串长就大。

第四题:

一维数组定义的一般形式如下,其中的数组长度是一个整型常量表达式,给定数组的大小。

类型名 数组名[数组长度];

T

F

思路:

记住即可,数字长度只能放常量不能放变量,比方说int a=100,arr[a]={0} 是错误的。因为a是变量。

第五题:

若字符数组s1和s2中均已正确存储字符串,则可以使用 if(s1>s2) 进行两字符串大小的比较。


T

F

思路:

不能直接通过关系运算符进行比较,除非在c++里面,可以通过strcmp来比较。

第六题:

一维数组定义的一般形式如下:

类型名 数组名[数组长度];
数组元素引用的一般形式如下:

数组名[下标]
在引用数组元素时,下标的合理取值范围是[0,数组长度-1],下标不能越界。


T

F

思路:

这个大家记住即可,答案为T

第七题:

"a" 和 'a'是等价的。


T

F

思路:

第一个是字符串,第二个是字符元素

第八题:

下面描述正确的是


A.
字符个数多的字符串比字符个数少的字符串大


B.
字符串“ STOP”和“STOP”相等


C.
字符串“That”小于字符串“The”


D.
两个字符串所包含的字符个数相同时才能比较字符串

思路:

看c因为第一个和第二个字符都相同,比较第三个,因为a的ascll小于e的ascll所以,第一个字符串小于第二个。

第九题:

以下关于二维数组初始化的说法,正确说法的个数是( )

(1)语句int a[2][3]={0}; 能将int型数组a中的每个元素全部初始化为0。

(2)语句int a[2][3]=0; 能将int型数组a中的每个元素全部初始化为0。

(3)语句int a[2][3]; 能将int型数组中a的每个元素全部初始化为0。

(4)语句int a[2][3]={{1,2},{3,4},{5,6}};能将int型数组元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2]依次初始化为1,2,3,4,5,6。

(5) 语句int a[][3]={1,2,3,4,5,6};能将int型数组元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2]依次初始化为1,2,3,4,5,6。

(6)语句int a[][3]={{1,2,3},{4,5,6}};能将int型数组元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2]依次初始化为1,2,3,4,5,6。

思路:

正确说法的个数是3。

(1)语句int a[2][3]={0}; 能将int型数组a中的每个元素全部初始化为0。—— 对,

(2)语句int a[2][3]=0; 能将int型数组a中的每个元素全部初始化为0。—— 错误,这种语句是错误的,无法用这种方式对二维数组进行整体赋值。

(3)语句int a[2][3]; 能将int型数组中a的每个元素全部初始化为0。—— 错误,这种方式只会在栈上分配空间,但不会对每个元素进行初始化。

(4)语句int a[2][3]={{1,2},{3,4},{5,6}};能够将int型数组元素a[0][0],a[0][1],a[1][0],a[1][1],a[0][2],a[1][2]依次初始化为1,2,3,4,5,6,因此是原来的选项是错的

(5) 语句int a[][3]={1,2,3,4,5,6};能将int型数组元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2]依次初始化为1,2,3,4,5,6。—— 对,。

(6)语句int a[][3]={{1,2,3},{4,5,6}};能将int型数组元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2]依次初始化为1,2,3,4,5,6。—— 正确,这种方式可以对二维数组进行逐个初始化。



第十题:

对于定义 char str[] = "abc\000def\n"(注:其中0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是:


A.
3 ,9


B.
3 ,11


C.
12 ,13


D.
3 ,4

思路:

对于定义 char str[] = "abc\000def\n"; ,字符串 str 的长度 len 是指有效字符的个数,不包括字符串结束符 \0。数组 str 的大小 size 则是指整个数组占用的内存空间大小。

在这种情况下,字符串 str 的长度 len 为 3,因为 "abc" 是由三个有效字符组成。

数组 str 的大小 size 可以通过使用 sizeof 运算符来获取。sizeof 运算符返回的是数组在内存中所占用的字节数。

因为 str 是一个字符数组,所以它占用的内存空间大小等于每个元素的大小乘以元素的个数。每个字符元素的大小为 1 字节。

因此,数组 str 的大小 size 取决于编译器和操作系统的实现。通常情况下,它将是 11 字节(包括字符串结束符 \0)。

并且\0和\n看作是一个字符,字符串末尾还有一个\0为显示。

第十一题:

有说明语句int  a[4][5]; ,则a[2]+3表示__。


A.
a数组行下标为2、列下标为3的元素的值


B.
a数组第3行的首地址


C.
a数组第2行的首地址


D.
a数组行下标为2、列下标为3的元素的地址

思路:

a[2]+3实际上表示a数组第3行的首地址,并且向后偏移3个元素的地址。因此,a[2]+3可以表示a数组行下标为2、列下标为3的元素的地址。

所以,选项D.a数组行下标为2、列下标为3的元素的地址是正确的答案。

第十二题:

以下定义语句中不正确的是__。


A.
int y[5]={0,1,3,5,7,9};


B.
double x[5]={2.0, 4.0, 6.0, 8.0, 10.0};    


C.
char c1[]={'1', '2', '3', '4', '5'};    


D.
char c2[]={'\x10', '\xa', '\x8'};

思路:

很明显A的数组越界了,因为数组下标从0,开始,最终最大也是y[4],只能存五个元素,而出现了6个就会越界。

 

 

最后,笔者能力有限,如有错误,请指出,一定改正一起进步。

 

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

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

相关文章

2023.12.7 关于 MySQL 事务详解

目录 事务的四大特性 原子性 一致性 持久性 隔离性 事务并发执行 脏读 不可重复读 幻读 四个隔离级别 read uncommitted read committed repeatable read serializable 事务的四大特性 原子性 一个事务中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部…

一篇文章带你快速入门 Nuxt.js 服务端渲染

1. Nuxt.js 概述 1.1 我们一起做过的SPA SPA&#xff08;single page web application&#xff09;单页 Web 应用&#xff0c;Web 不再是一张张页面&#xff0c;而是一个整体的应用&#xff0c;一个由路由系统、数据系统、页面&#xff08;组件&#xff09;系统等等&#xff0…

16mic圆形麦克风阵列电路与声源定位算法设计

16mic圆形麦克风阵列电路与声源定位算法设计 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙耳机音频&#xff0c;DSP音频项目核心开发资料, 1 实…

多线程并发Ping脚本

1. 前言 最近需要ping地址&#xff0c;还是挺多的&#xff0c;就使用python搞一个ping脚本&#xff0c;记录一下&#xff0c;以免丢失了。 2. 脚本介绍 首先检查是否存在True.txt或False.txt文件&#xff0c;并在用户确认后进行删除&#xff0c;然后从IP.txt的文件中读取IP地…

灵活性与可靠性:SaaS云开发与定制开发小程序的优缺点解析

随着移动互联网的快速发展&#xff0c;微信小程序作为一种轻量级的应用程序&#xff0c;逐渐成为了企业开展业务和提升用户体验的重要工具。对于企业而言&#xff0c;选择通过SaaS云开发或定制开发的方式开发小程序&#xff0c;都是为了更好地实现业务目标。在这篇文章中&#…

【数据结构】插入排序,希尔排序,选择排序,堆排序,冒泡排序

1.插入排序 思路&#xff1a;插入排序将一个数插入一个有序的数组里面&#xff0c;将这个数和数组元素挨着比较&#xff0c;直到他插入到合适的位置。 动画演示&#xff1a; 步骤&#xff1a;1.定义一个变量tmp保存要插入的数据 2.在循环中用tmp和有序数组中的元素比较&#…

Spring全面详解

目录 1. Spring 概述 1.1 Spring是什么 1.2 Spring的作用 1.3 Spring IoC是什么 2. Spring 快速入门 3. Spring Bean 3.1 的实例化方式 空参构造器 3.2 的属性注入 全参构造器注入 setter方法注入 策略模式 3.3 注解管理 3.4 注解方式的属性注入 1. Spring 概述 …

聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化

聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化 目录 聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于谱聚类(Spectral Cluster)的聚类算法可视化&#xff08;完…

计算机毕业设计 基于SpringBoot的高校毕业与学位资格审核系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Facebook自动回复脚本编写教程

在数字时代&#xff0c;社交媒体已经成为人们交流和建立联系的重要渠道&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;拥有数十亿的用户&#xff0c;为企业和个人提供了无限的社交可能性。 然而&#xff0c;对于企业和个人来说&#xff0c;在Facebook上保持…

整合消息队列RabbitMQ

为什么使用消息队列MQ&#xff1f; 因为使用消息队列有多个好处&#xff1a;可以实现系统服务的解耦、异步和削峰&#xff1a; 异步通信&#xff1a;消息队列提供了一种异步通信的方式&#xff0c;发送方可以将消息发送到队列中&#xff0c;然后继续执行其他任务&#xff0c;…

C++STL的string模拟实现

文章目录 前言string的成员变量成员函数构造函数拷贝构造赋值重载 模拟实现string各种接口print迭代器普通迭代器const迭代器 string比较大小push_backinsert 和 eraseinserterase reserve和resizereserveresize swapfindcout和cincoutcin 前言 今天要讲string的底层实现&…

docker---资源控制

docker的资源控制 对容器使用宿主机的资源进行限制。 三种控制方向&#xff1a;CPU 内存 磁盘I/O docker使用linux自带的功能cgroup&#xff1b;control groups是linux内核系统提供的一种可以限制记录&#xff0c;隔离进程所使用的物理资源机制。 docker借助此…

每日一练 | 华为认证真题练习Day145

1、一台路由器通过RIP、OSPF和静态路由都学习到了到达同一目的地址的路由。默认情况下&#xff0c;VRP将最终选择通过哪种协议学习到的路由&#xff1f; A. 三种协议学习到的路由都选择 B. 静态路由 C. OSPF D. RIP 2、如果网络管理员没有配置骨干区域&#xff0c;则路由器…

el-table 表格多选(后端接口搜索分页)实现已选中的记忆功能。实现表格数据和已选数据(前端分页)动态同步更新。

实现效果&#xff1a;&#xff08;可拉代码下来看&#xff1a;vue-demo: vueDemo&#xff09; 左侧表格为点击查询调用接口查询出来的数据&#xff0c;右侧表格为左侧表格所有选择的数据&#xff0c;由前端实现分页。 两个el-table勾选数据联动更新 实现逻辑&#xff1a; el-…

MQTT协议对比TCP网络性能测试模拟弱网测试

MQTT正常外网压测数据---时延diff/ms如下图&#xff1a; MQTT弱网外网压测数据 TCP正常外网压测数据 TCP弱网外网压测数据 结论&#xff1a; 在弱网场景下&#xff0c;MQTT和TCP的网络性能表现会有所不同。下面是它们在弱网环境中的对比&#xff1a; 连接建立&#xff1a;M…

华清远见嵌入式学习——QT——作业2

作业要求&#xff1a; 代码运行效果图&#xff1a; 登录失败 和 最小化 和 取消登录 登录成功 和 X号退出 代码&#xff1a; ①&#xff1a;头文件 #ifndef LOGIN_H #define LOGIN_H#include <QMainWindow> #include <QLineEdit> //行编辑器类 #include…

Rust测试字符串的移动,Move

代码创建了一个结构体&#xff0c;结构体有test1 字符串&#xff0c;还有指向字符串的指针。一共创建了两个。 然后我们使用swap 函数 交换两个结构体内存的内容。 最后如上图。相同的地址&#xff0c;变成了另外结构体的内容。注意看指针部分&#xff0c;还是指向原来的地址…

想转行IT,有前途吗?

作为一个在工程领域工作了三年的人&#xff0c;我深知转行到 IT&#xff0c;尤其是网络安全领域&#xff0c;不是一件轻松的事。我的经历或许能为你提供一些启示。 在我之前的工作中&#xff0c;虽然工作量大、压力重&#xff0c;但总觉得缺少了某种成就感和动力。我意识到&a…

Flutter代码补全

有的时候属性不经常使用&#xff0c;就想不起来该用啥&#xff0c;只有点点印象&#xff1b;只能用代码补全功能&#xff0c;但我用了AS的默认操作发下并不好使&#xff0c;估计是快捷键冲突了。刚开始是不是下面的效果&#xff1a;这肯定不是我们想要的。 不怕&#xff0c;接下…