【C语言期末】题目+解析

文章目录

    • 题目
      • 1.下面哪个不是C语言的基本数据类型?( B )
      • 2.C语言的标识符应以字母或( A )开头。
      • 3.如果需要在C程序里调用标准函数库中的printf函数,则应该在程序的开头包含哪个头文件?( A )
      • 4.C语言源程序的扩展名是( B )。
      • 5.若变量已正确定义并赋值,表达式( A )不符合C语言语法。
      • 6.以下选项中不属于C语言的类型的是( D )。
      • 7.以下选项中合法的用户标识符是( B )。
      • 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是( A )。
      • 9.+=、*=运算符
      • 10.以下选项中,与k=n++完全等价的表达式是(A )。
      • 11.阅读下面的程序
      • 12.若有以下定义和语句:
      • 13.执行下列程序段后的输出结果是( A )。
      • 14.以下关于运算符优先顺序的描述中正确的是( C )。
      • 15.若int K=3;,且有下面的程序片段:
      • 16.设char CH;,其值为A,且有下面的表达式:
      • 17.有如下程序
      • 18.若有以下定义:
      • 19.以下程序的运行结果是( A )。
      • 20.若有以下说明:
      • 21.如有说明:`char s1[5],s2[7];` ,要给数组s1和s2整体赋值,下列语句中正确的是( B )。
      • 22.在定义int a\[5][4]; 之后,对a数组元素的引用正确的是( C )。
      • 23.在C语言中,设有数组定义:char array[ ]="China"; 则数组array所占的空间为( C )。
      • 24.定义如下变量和数组:
      • 25.以下程序的输出结果是( A )。
      • 26.下面程序段的运行结果是( A )。
      • 27.若有以下程序:
      • 28.定义为void类型的函数,其含义是( A )。
      • 29.对于C程序的函数,( A )的叙述是正确的。
      • 30.以下程序的运行结果是( C )。
      • 31.若已定义“int a[9],*p=a;”并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是( A )。
      • 32.有如下程序段:
      • 33.设有如下定义:
      • 37.假设有如下定义:
      • 38.设有以下语句:
      • 39.设有定义语句“char c1=49,c2=49;”,则以下表达式中值为0的是( B )。
      • 40.在位运算中,操作数每左移一位,其结果相当于( A )。
      • 41.以下程序的输出结果是( D )。
      • 42.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是( B )。
      • 43.下列程序执行后的输出结果是( B )。
      • 44.以下程序的输出结果是( C )。
      • 45.以下程序的运行结果是( B )。
      • 46.在宏定义:#define PI 3.141592中,用宏名PI代替一个( )。
      • 47.设有以下说明语句,则下面的叙述不正确的是( C )。

视频传送门

题目

1.下面哪个不是C语言的基本数据类型?( B )

A.整型; B.逻辑型; C.浮点型; D.字符型;

解析:A:整型简单理解就是整数,int a=1,a就是一个值为1的整型变量B:逻辑型,在C语言里没有专门的逻辑型。布尔表达式的结果为0相当于是false,非0则真。C:float b=2.5; b就是一个值为2.5的浮点型变量,简单理解就是有小数。D.字符型,char ch='a'; 

2.C语言的标识符应以字母或( A )开头。

A.下划线;B.波浪线;C.字符*;D.字符#;

解析:标识符定义规则有三点1.不能数字开头2.不能是保留字。比如int、float这种3.可以是下划线和字母开头。做题的话还有一点不能加特殊符号,比如.号
扩展:1.自己实际写用的最多的还是驼峰起名法ABlogOfCMakesYouCanPassExam每个词的开头大写2.手撕源码遇到保留字,在前边加个my_比如my_LinkededList

3.如果需要在C程序里调用标准函数库中的printf函数,则应该在程序的开头包含哪个头文件?( A )

A.stdio.h; B.math.h; C.stdlib.h; D.不用包含任何头文件;

4.C语言源程序的扩展名是( B )。

A…cpp; B..c; C…obj; D…exe;

5.若变量已正确定义并赋值,表达式( A )不符合C语言语法。

A.3%2.0 B.a*b/c C.2/b D.a/b/c

解析:模运算:就是求余数。5除以3余2,所以5%3=2C语言里边,两个整型相除,不保留小数,5/3=1你真得觉得对浮点型进行模运算合理吗?
扩展:5/2.0=2.5;当一个整型和另一个浮点型运算的时候,会有整型提升,整型提升成浮点型。相当于5变成5.0了两个浮点型的相除。。。5/2.0反正能算出来是2.5

6.以下选项中不属于C语言的类型的是( D )。

A.signed short int B.unsigned long int C.unsigned int D.long short

解析:int表示的范围是有限的long:不够用了,可以用long,它的范围更大,再不够用,还有long long ,再不够用还可以用数组存,不用担心你的钱多到银行的系统存不了。short:感觉用int太浪费空间,可以考虑用short,节约空间unsigned:int不是4个字节吗?32个比特位,里边其实固定有一位是用来表示符号的。unsigned可以把符号位当成数来用。。。能表示的正数的范围会扩大,不能表示负数

7.以下选项中合法的用户标识符是( B )。

A.long B._2Test C.3Dmax D.A.dat

	解析:见2题

8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是( A )。

A.字符A B.字符a C.字符e D.非法的常量

	解析:详解见视频。这题把8进制的101转成10进制就行

101 = 1 ∗ 8 2 + 0 ∗ 8 1 + 1 ∗ 8 0 = 64 + 1 = 65 101=1*8^2+0*8^1+1*8^0=64+1=65 101=182+081+180=64+1=65

9.+=、*=运算符

int main(){int k=2,i=2,m;​     m=(k+=i*=k);printf("%d,%d\n",m,i);return 0;
}

执行后的输出结果是( C )。

A.8,6 B.8,3 C.6,4 D.7,4

原式展开
i*=ki=i*k
k+=ik=k+i
	要点:1.不熟练就先展开2.留意视频里讲的等效替代,看代码的动态变化——进阶必备。i*=k算完之后,就相当于是k+=几?要看成这样

10.以下选项中,与k=n++完全等价的表达式是(A )。

A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1

11.阅读下面的程序

#include<stdio.h>void main(){int i,j;i=010;j=9;printf("%d,%d",i-j,i+j);}

则程序的运行结果是( D )。

A.1,19 B.-1,19 C.1,17 D.-1,17

	解析:0开头表示8进制的数0x开头16进制0b开头二进制这题,你先把010转成8进制,不会?。。。1、2、3、4、5、6、7、108进制逢8进1,不8题乃种解法,一个一个数也能数出来

12.若有以下定义和语句:

  int a=010, b=0x10, c=10;printf("%d,%d,%d\n",a,b,c);

则输出结果是( B )。

A.10,10,10 B.8,16,10 C.8,10,10 D.8,8,10

13.执行下列程序段后的输出结果是( A )。

  int x=1,y=1,z=1;x+=y+=z;printf("%d\n",x<y?y:x);

A.3 B.2 C.1 D.4

	解析:?号左边是一个布尔表达式,真假决定去冒号左边的值还是右边还是第9题乃样,?:运算完之后,就相当于x<y?y:x 变成 x了,而x又等于3,所以就打印3喽

14.以下关于运算符优先顺序的描述中正确的是( C )。

A.关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符

B.逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符

C.赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符

D.算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符

	赋值运算符:形如=、+=逻辑运算符:&&(并且)、||(或者)关系运算符:大于号、小于号算术运算符:加减乘除

15.若int K=3;,且有下面的程序片段:

if(K<=0) printf("####");else printf("&&&&");

上面程序片段的输出结果是( B )。

A.#### B.&&&& C.####&&&& D.有语法错误,无输出结果

解析:二选一,选哪个看真假

16.设char CH;,其值为A,且有下面的表达式:

CH=(CH>='A' && CH<='Z')?(CH+32):CH
法1:一点一点看,CH为A,肯定和A相等,所以&&左边为真,CH当然也小于Z了,所以右边也为真
法2:看语义,如果CH是一个大写字母,布尔表达式的结果就为真

则表达式的值是( B )。

A.A B.a C.Z D.z

17.有如下程序

int main() { int a=2,b=-1,c=2; if(a<b)if(b<0) c=0; else c++;printf("%d\n",c);return 0;
}

该程序的输出结果是( C )。

A.0 B.1 C.2 D.3

	解析:1.if后边如果只有一句可以不写大括号。2.else和结构上(不是距离上)紧挨着的if配对,当if条件为假的时候,就会执行else里的语句只能说:动(手)的都懂

18.若有以下定义:

float x;int a,b;

则正确的switch 语句是( C )。

A.switch(x){case 1.0:printf("*\n");  case 2.0:printf("**\n");}B.switch(x){case 1,2:printf("*\n");case 3:printf("**\n");}C.switch(a+b)  {case 1:printf("\n"); case 1+2:printf("**\n");}D.switch(a+b);{case 1:printf("*\n");case 2:printf("**\n");}
	解析:case的条件别写小数

19.以下程序的运行结果是( A )。

int main(){int n;for(n=1;n<=10;n++){if(n%3==0) continue;printf("%d",n);}return 0;
}

A.12457810 B.369 C.12 D.1234567890

	建议:看视频,有讲for循环的基础概念语义:打印1到10之间,不能整除3的数

20.若有以下说明:

char s1[ ]={"tree"},s2[]={"flower"}; 

则以下对数组元素或数组的输出语句中,正确的是( C )。

A.printf(“%s%s”,s1[5],s2[7]);

B.printf(“%c%c”,s1,s2);

C.puts(s1);puts(s2);

D.puts(s1,s2);

	简单理解:想打印字符串,用%s或者puts函数。补充:字符串经常用string表示

21.如有说明:char s1[5],s2[7]; ,要给数组s1和s2整体赋值,下列语句中正确的是( B )。

A.s1=getchar(); s2=getchar();

B.scanf("%s%s",s1,s2);

C.scanf(“%c%c”,s1,s2);

D.gets(s1,s2);

	简单理解:想调键盘,接受一个字符串,用%s(gets我当时就用的少,都用的scanf和printf这俩,后来也不用C语言了,有必要了再研究吧)

22.在定义int a[5][4]; 之后,对a数组元素的引用正确的是( C )。

A.a[2][4] B.a[1,3] C.a[4][3] D.a[5][0]

	解析:访问数组元素,下标别越界哥,基操

23.在C语言中,设有数组定义:char array[ ]=“China”; 则数组array所占的空间为( C )。

A.4个字节 B.5个字节 C.6个字节 D.7个字节

	解析:字符串结尾是斜杠0,你不写有人帮你写。China看上去是5个,还有隐藏的斜杠0,一共6个

24.定义如下变量和数组:

int i;int x[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

则下面语句的输出结果是( C )。

for(i=0;i<4;i++) printf("%3d",x[i][3-i]);

A.1, 5 ,9 ,13 B.1, 6, 11, 16 C.4 ,7 ,10, 13 D.4,8 ,12 ,16

25.以下程序的输出结果是( A )。

#include<stdio.h>void main(){int i,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++) printf("%d,",x\[i][i]);printf("\n"); 
}

A.1,5,9, B.1,4,7, C.3,5,7, D.3,6,9,

	可以看视频。也可以参考前边的题。

26.下面程序段的运行结果是( A )。

char *s="abcde";s+=2;printf("%s",s);
	建议看视频,有讲指针的基础知识

A.cde B.字符’c’ C.字符’c’的地址 D.无确定的输出结果

27.若有以下程序:

int main(){int m[][3]={1,4,7,2,5,8,3,6,9};int i,j,k=2;for (i=0;i<3;i++){printf("%d",m[k][i]); }return 0;
} 

程序运行后输出结果是( C )。

A.4 5 6 B.2 5 8 C.3 6 9 D.7 8 9

28.定义为void类型的函数,其含义是( A )。

A.调用函数后,被调用的函数没有返回值

B.调用函数后,被调用的函数不返回

C.调用函数后,被调用的函数的返回值为任意的类型

D.以上3种说法都是错误的

29.对于C程序的函数,( A )的叙述是正确的。

A.函数定义不能嵌套,但函数调用可以嵌套

B.函数定义可以嵌套,但函数调用不能嵌套

C.函数定义与调用均不能嵌套

D.函数定义与调用均可以嵌套

30.以下程序的运行结果是( C )。

void f(int a,int b){int t;t=a;a=b;b=t;
}int main(){int x=1,y=3,z=2;if(x>y) f(x,y);else if(y>z)f(y,z);elsef(x,z);printf(%d,%d,%d\n”,x,y,z);return 0;
}

A.1,2,3 B.3,1,2 C.1,3,2 D.2,3,1

	解析:函数分值传递和地址传递。

31.若已定义“int a[9],*p=a;”并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是( A )。

A.a++ B.a+1 C.p+1 D.++p

	【记住这句话】数组名是数组首元素地址

32.有如下程序段:

int *p,a=10,b=1;p=&a; a=*p+b;

执行该程序段后,a的值为( B )。

A.12 B.11 C.10 D.编译出错

33.设有如下定义:

struct Date{ int year; int month;int day;};struct Teacher{ char name[20];char sex;struct Date birthday;}person;

对结构体变量person的出生年份进行赋值时,下面的赋值语句正确的是( C )。

A.year=1975; B.birthday.year=1975; C.person.birthday.year=1975; D.person.year=1975;

34.若有下面的定义:这个题有问题

struct Test{int s1;float s2;char s3;union uu{char u1[10];int u2[2];}ua;
}stu;

则sizeof(struct Test)的值是( A )。

A.19 B.17 C.14 D.27

35.以下各选项要说明一种新的类型名,其中正确的是( A )。

A.typedef int i1; B.typedef int=i2; C.typedef i1 int i3; D.typedef i4;

36.假设有如下定义:

struct {int a;float b;}data,*p;

若有p=&data,则对data中的a域的正确引用是( )。

A.(*p).data.a B.p->data.a C.(*p).a D.p.data.a

	*号,叫解引用,可以根据地址拿出来那里存的值

37.假设有如下定义:

struct City{char *name;long total;}city[]={"Guangzhou",800,"Meizhou",600,"Shanghai",500,"Hangzhou",400};

能正确输出字符串Meizhou的语句是( D )。

A. printf(“%c”,city[1].name)

B. printf(“%s”,city[1].name[1]);

C. printf(“%s”,city.name[1]);

D. printf("%s",city[1].name);

	city是城市数组,city[1]才是一个城市对象

38.设有以下语句:

char x=3,y=6,z; 
z=x^y<<2;

则z的二进制值是( A )。

A.00011011 B.00010100 C.00011100 D.00011000

39.设有定义语句“char c1=49,c2=49;”,则以下表达式中值为0的是( B )。

A.c1&&c2 B.c1^c2 C.c1&c2 D.c1|c2

40.在位运算中,操作数每左移一位,其结果相当于( A )。

A.操作数乘以2 B.操作数除以2 C.操作数除以4 D.操作数乘以4

41.以下程序的输出结果是( D )。

#include<string.h>void main( ){char *p1, *p2, str[50]="ABCDEFG";p1="abcd"; p2="efgh";strcpy(str+1, p2+1); strcpy(str+3, p1+3);printf("%s", str);
}

A.AfghdEFG  B.Abfhd   C.Afghd    D.Afgd

解析:执行strcpy(str+1, p2+1);后,str所对应的字符串变为“Afgh”,再执行strcpy(str+3, p1+3);后,str所对应的字符串变为“Afgd”

42.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是( B )。

void main( ){int a[10]={6, 7, 2, 9, 1, 10, 5, 8, 4, 3}, *p=a, i;for(i=0; i<10; i++, p++)if(________) \*a=\*p;printf("%d", *a);
}

A.p>a     B.*p>a[0]     C.*p>*a[0]     D.*p[0]> *a[0]

43.下列程序执行后的输出结果是( B )。

void main( ){int a\[3][3], *p, i;p=&a\[0][0];for(i=0; i<9; i++) p[i]=i+1;printf("%d\n", a\[1][2]);
}

A.3   B.6   C.9   D.随机数

44.以下程序的输出结果是( C )。

#include <stdio.h>
void fun(int *s){static int j=0;dos[j]+=s[j+1];while (++j<2);
}void main( ){int k, a[10]={1, 2, 3, 4, 5};for(k=1; k<3; k++) fun (a);for(k=0; k<5; k++) printf ("%d", a[k]);
}

A.34756     B.23445     C.35745     D.12345

45.以下程序的运行结果是( B )。

#define MIN (x, y) (x) < (y) ? (x) : (y)
void main ( ){int i = 10, j = 15, k;k = 10 * MIN (i, j);printf("%d\n", k); 
}

A.10 B.15 C.100 D.150

解析:语句k = 10 * MIN (i, j);在预编译时将进行宏替换为:k = 10 * (i) < (j) ? (i) : (j);因i = 10,j = 15,所以语句等价于k = 10 * 10 < 15 ? 10 : 15;,10*10比15大,因此k的值将是15。故正确答案是B。

46.在宏定义:#define PI 3.141592中,用宏名PI代替一个( )。

这个题有问题
A.常量B.单精度数C.双精度数D.字符串

47.设有以下说明语句,则下面的叙述不正确的是( C )。

struct stu{int a;float b;
} stutype;

A.struct是结构体类型的关键字

B.struct stu是用户定义的结构体类型

C.stutype 是用户定义的结构体类型名

D.a和b都是结构体成员名

解析:stutype是类型为struct stu的结构体变量,不是结构体类型名。故选择答案是C。

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

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

相关文章

学习Linux(2)-学习Linux命令

Linux目录结构 Linux目录结构-菜鸟教程 /bin&#xff1a;bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot&#xff1a;这里存放的是启动 Linux 时使用的一些核心文件&#xff0c;包括一些连接文件以及镜像文件。 /dev &#xff1a;dev 是 De…

TensorFlow 常用代码

TensorFlow 是由 Google 开发的一个用于数值计算的开源软件库&#xff0c;主要用于构建和训练机器学习模型。它的核心是使用数据流图来描述计算任务。数据流图是由节点和边组成的有向图&#xff0c;每个节点表示一个计算任务&#xff0c;每条边表示数据传输。 TensorFlow 支持…

Dockerfile文件

什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Docke…

C语言-字符串操作函数-附加使用方式

文章目录 前言字符串复制-strcpy字符串复制&#xff08;按照位数&#xff09;-strncpy字符串比较-strcmp字符串比较(按照位数)-strncmp不区分大小写的字符串比较-strcasecmp不区分大小写的比较(前n位)-strncasecmp字符串按照格式写入-sprintf字符串按照格式和个数写入-snprintf…

JUC包(面试常问)

1. Callable接口 类似于Runnable接口&#xff0c;Runnable描述的任务&#xff0c;不带返回值&#xff1b;Callable描述的任务带返回值。 public class Test {//创建线程&#xff0c;计算12...1000public static void main(String[] args) throws ExecutionException, Interru…

js/jQuery常见操作 之各种语法例子(包括jQuery中常见的与索引相关的选择器)

js/jQuery常见操作 之各种语法例子&#xff08;包括jQuery中常见的与索引相关的选择器&#xff09; 1. 操作table常见的1.1 动态给table添加title&#xff08;指定td&#xff09;1.1.1 给td动态添加title&#xff08;含&#xff1a;获取tr的第几个td&#xff09;1.1.2 动态加工…

KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(23)

接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(22) 上一回讲解了i915_gem_object_lookup_rcu函数的第1个参数struct drm_file *file,本回讲解其第2个参数u32 handle。 (2)参数u32 handle 说起来,handle要比struct drm_file *file参数好理解多了…

怎么更改android的包名,使其可以变成另外一个app

在 Android 中更改应用的包名并不是一项简单的任务&#xff0c;因为包名在应用的整个代码和配置文件中都被广泛使用。但是&#xff0c;你可以通过以下步骤来更改应用的包名&#xff1a; 注意&#xff1a;在更改包名之前&#xff0c;请确保备份你的项目&#xff0c;以防发生意外…

thinkphp 结合swoole 聊天开发实例

好的&#xff0c;下面我为您介绍使用ThinkPHP和Swoole开发聊天应用的实例。 环境搭建 首先需要安装PHP和Swoole扩展&#xff0c;可以使用以下命令&#xff1a; yum install php php-devel php-pear pecl install swoole新建项目 使用composer新建一个ThinkPHP项目&#xff…

每日一练【三数之和】

一、题目描述 15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可…

【开题报告】基于SSM的校园体育管预约系统的设计与实现

1.选题背景 随着社会的发展和人们对健康生活的追求&#xff0c;体育锻炼在大学生群体中越来越受到重视。校园体育场馆是大学生进行体育活动和锻炼的主要场所之一。然而&#xff0c;由于校园体育场馆资源有限&#xff0c;管理不善和预约流程繁琐等问题&#xff0c;导致场馆利用…

【数据结构(九)】线索化二叉树(3)

文章目录 1. 前言——问题引出2. 线索二叉树的基本介绍3. 线索二叉树的应用案例3.1. 思路分析3.2. 代码实现 4. 遍历线索化二叉树4.1. 代码实现 1. 前言——问题引出 问题&#xff1a;     将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. &#xff08;n17个空指针域&…

1688API接口系列,商品详情数据丨搜索商品列表丨商家订单类丨1688开放平台接口使用方案

1688商品详情接口是指1688平台提供的API接口&#xff0c;用于获取商品详情信息。通过该接口&#xff0c;您可以获取到商品的详细信息&#xff0c;包括商品标题、价格、库存、描述、图片等。 要使用1688商品详情接口&#xff0c;您需要先申请1688的API权限&#xff0c;并获取ac…

老有所依:TSINGSEE青犀养老院智能视频监管方案

养老院智能监控方案是为了提高养老院内老人的安全和护理质量&#xff0c;利用智能技术与监控设备进行全方位的监控和管理&#xff0c;可以加强对老人的监护和护理&#xff0c;提高养老院的服务质量和安全性。 旭帆科技基于视频技术与AI智能分析技术构建的养老院智能视频监控方…

[动态规划]最长公共子序列

题目六 最长公共子序列 题目描述 我们称一个字符的数组S为一个序列。对于另外一个字符数组Z,如果满足以下条件&#xff0c;则称Z是S的一个子序列&#xff1a;&#xff08;1&#xff09;Z中的每个元素都是S中的元素&#xff08;2&#xff09;Z中元素的顺序与在S中的顺序一致。…

22 FlexSPI—读写外部 SPI NorFlash

文章目录 22.1 SPI 协议简介22.1.1 SPI物理层22.1.2 协议22.1.3 CPOL/CPHA 及通讯模式22.1.4 扩展 SPI 协议22.1.5 SDR 和 DDR 模式 22.2 RT1052 的 FlexSPI 特性及架构22.2.1 RT1052 的 FlexSPI 外设简介22.2.2 RT1052 的 FlexSPI 架构剖析22.2.2.1 通讯引脚22.2.2.2 指令查找…

如何将html网页免费转为excel?

一、直接复制。 直接复制是最简单有效、快捷的解决方案&#xff0c;操作方法如下&#xff1a; 1、用鼠标像平常复制文本一样&#xff0c;将整个网页表格选中。 2、点击右键&#xff0c;点击“复制”。 3、打开excel软件&#xff0c;鼠标点击任意单元格。 4、点击右键&#…

Power BI - 5分钟学习拆分列

每天5分钟&#xff0c;今天介绍Power BI拆分列功能。 什么是拆分列&#xff1f; 有时导入Power BI的数据表中&#xff0c;某列内容都包含同样的特殊字符如 /&/-/_等&#xff0c;可以利用这个特殊字符进行拆分列的操作&#xff0c;获得我们想要的信息。 操作举例&#xf…

【从编译器的角度看多态的底层实现原理】

系列文章目录 欢迎读者订阅《计算机底层原理》、《从JVM看Java》系列文章、能够帮助到大家就是对我最大的鼓励&#xff01; 文章目录 目录 系列文章目录 文章目录 前言 一、编译器做了什么&#xff1f; 1.词法分析 2.语法分析 3.语义分析 4.中间代码生成 5.优化 6.目标代码生成…

SugarCRM 任意文件上传漏洞复现(CVE-2023-22952)

0x01 产品简介 SugarCRM是美国SugarCRM公司的一套开源的客户关系管理系统(CRM)。该系统支持对不同的客户需求进行差异化营销、管理和分配销售线索,实现销售代表的信息共享和追踪。 0x02 漏洞概述 SugarCRM index.php接口存在安全漏洞,该漏洞源于安装组件中存在授权绕过和P…