计算机二级C语言的注意事项及相应真题-6-程序修改

目录

    • 51.从整数10到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回
    • 52.先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面
    • 53.统计s所指维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果
    • 54.删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据
    • 55.在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出
    • 56.根据以下公式求值,并作为函数值返回
    • 57.读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行
    • 58.将形参str所指字符串中的数字字符按从前往后出现的次序从左往右拼接成一个整数,返回主函数输出
    • 59.求S的值

51.从整数10到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回

给定程序modi1.c中函数fun的功能是:从整数10到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
int fun( int  *b )
{  int   k,a1,a2,i=0;for(k=10; k<=55; k++) {
/************found************/a2=k/1O;//0写成了大写的O,a1=k-a2*10;if((k%3==0 && a2==5)||(k%3==0 && a1==5)){  b[i]=k; i++; }}
/************found************/return  k;//最后返回的应该是这些数的个数}
main( )
{  int  a[100],k,m;m=fun( a );printf("The result is :\n");for(k=0; k<m; k++) printf("%4d",a[k]);  printf("\n");getchar();
}

解题思路:
0写成了O挺像新手会犯的错,毕竟在键盘上也挨得挺近的,在记事本上也很像

答案:

#include <stdio.h>
int fun( int  *b )
{  int   k,a1,a2,i=0;for(k=10; k<=55; k++) {
/************found************/a2=k/10;a1=k-a2*10;if((k%3==0 && a2==5)||(k%3==0 && a1==5)){  b[i]=k; i++; }}
/************found************/return  i;}
main( )
{  int  a[100],k,m;m=fun( a );printf("The result is :\n");for(k=0; k<m; k++) printf("%4d",a[k]);  printf("\n");getchar();
}

测试:
在这里插入图片描述

52.先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面

给定程序modi1.c中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。

例如:当s中的字符串为:"ABCDE"时,则t中的字符串应为:“EDCBAABCDE”。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
#include <string.h>void fun (char  *s, char  *t)
{
/************found************/int   i;//这里可以明显看到是少定义了一个变量sl,注意是sl,l是字母,不是数字1,在有的字符格式里l和1可谓格外相似,这里建议大家看到题目代码有的直接复制比较好i=0;sl = strlen(s);for (; i<sl; i++)
/************found************/t[i] = s[sl-i];//数组下标是从0开始的,所以对应得倒序元素下标应为sl-i-1for (i=0; i<sl; i++)//接上正序的字符串t[sl+i] = s[i];t[2*sl] = '\0';
}main()
{  char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);getchar();
}

解题思路:
虽然修改书写错误很简单,这种错误更多考的是细心

答案:

#include <stdio.h>
#include <string.h>void fun (char  *s, char  *t)
{
/************found************/int i,sl;i=0;sl = strlen(s);for (; i<sl; i++)
/************found************/t[i] = s[sl-i-1];for (i=0; i<sl; i++)t[sl+i] = s[i];t[2*sl] = '\0';
}main()
{  char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);getchar();
}

测试:
在这里插入图片描述

53.统计s所指维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果

给定程序MODI1.C中,函数fun()的功能是统计s所指维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1.C:

#include  <stdio.h>
void  fun( int  *s, int  n )
{
/**********found**********/int  i,  one=0, zero ;//zero在后面都是累加的,所以必须要初始化为0for(i=0; i<n; i++)
/**********found**********/switch( s[i] );//switch()后面是不带分号的{
/**********found**********/case  0  :  zero++;//case语句后面不加break的话,后面的语句就都会执行,直到遇到break语句或switch语句结束case  1  :  one ++;}printf( "one : %d    zero : %d\n", one,  zero);
}
main()
{  int  a[20]={1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0}, n=20;fun( a,  n );getchar();
}

解题思路:
主要考察switch-case的结构

答案:

#include  <stdio.h>
void  fun( int  *s, int  n )
{
/**********found**********/int  i,  one=0, zero=0 ;for(i=0; i<n; i++)
/**********found**********/switch( s[i] ){
/**********found**********/case  0  :  zero++;break;case  1  :  one ++;}printf( "one : %d    zero : %d\n", one,  zero);
}
main()
{  int  a[20]={1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0}, n=20;fun( a,  n );getchar();
}

测试:
在这里插入图片描述

54.删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据

给定程序MODI1.C中,fun函数的功能是:删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

MODI1.C:

#include  <stdio.h>
#include  <stdlib.h>
#define   N  20
int  fun( int *b )
{
/**********found**********/int  t[N] ,i, num//由题意可知num是删除数组中小于10的数据后还剩下的数据个数,要初始化为0,且定义变量最后没加分号结尾for(i=0; i<N; i++)if(b[i]>=10)
/**********found**********/t[++num]=b[i];//这里num应该是后自增运算符,不然的话存入数组t的数据就是从下标1开始了
/**********found**********/for(i=0; i<nun; i++)//循环条件应该是小于numb[i]=t[i];return( num );
}
main()
{  int  a[N],i,num;printf("a数组中的数据 :\n");for(i=0;i<N ;i++) {a[i]=rand()%21; printf("%4d",a[i]);}//数组a内数据取随机数,范围为[0,20]printf("\n");num=fun(a);for(i=0;i<num ;i++) printf("%4d",a[i]);printf("\n");getchar();
}

解题思路:
随机数函数:
rand()%(n-m+1)+m //随机数范围为[m,n]

答案:

#include  <stdio.h>
#include  <stdlib.h>
#define   N  20
int  fun( int *b )
{
/**********found**********/int  t[N] ,i, num=0;for(i=0; i<N; i++)if(b[i]>=10)
/**********found**********/t[num++]=b[i];
/**********found**********/for(i=0; i<num; i++)b[i]=t[i];return( num );
}
main()
{  int  a[N],i,num;printf("a数组中的数据 :\n");for(i=0;i<N ;i++) {a[i]=rand()%21; printf("%4d",a[i]);}printf("\n");num=fun(a);for(i=0;i<num ;i++) printf("%4d",a[i]);printf("\n");getchar();
}

测试:
在这里插入图片描述

55.在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出

给定程序MODI1.C中,函数fun的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。例如,有10个正整数如下:

初始数列为:6 5 7 23 18 5 8 21 45 38

第1组数为:6 5 7 中值为:6 替换后的数列为:6 6 7 23 18 5 8 21 45 38

第2组数为:5 7 23 中值为:7 替换后的数列为:6 6 7 23 18 5 8 21 45 38

第3组数为:7 23 18中值为:18替换后的数列为: 6 6 7 18 18 5 8 21 45 38

第4组数为:28 18 5中值为:18替换后的数列为:6 6 7 18 18 5 8 21 45 38

第5组数为: 18 5 8中值为:8 替换后的数列为:6 6 7 18 18 8 8 21 45 38

第6组数为: 5 8 21中值为:8 替换后的数列为:6 6 7 18 18 8 8 21 45 88

第7组数为:8 21 45中值为:21替换后的数列为:6 6 7 18 18 8 8 21 45 38

第8组数为:21 45 38中值为:38替换后的数列为: 6 6 7 18 18 8 8 21 38 38

最终结果为:6 6 7 18 18 8 8 21 38 38

请改正程序中指定部位的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

MODI1.C:

#include  <stdio.h>
#define   N   10
int findmid(int  a, int  b, int  c)
{  int  t;t = (a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));//这个三目运算法看起来挺复杂的,可以自个慢慢推下,就是找出三个数的中值
/**********found**********/return  b;//这里应该是返回中值,也就是返回t
}
void fun(int  x[])
{  int  i,a,b,c,t[N];
/**********found**********/for(i=0;i<N;i++) t[i]=x[i]//语句的结尾应该加分号for(i=0;i<N-2;i++){  a=t[i];b=t[i+1];c=t[i+2];
/**********found**********/t[i+1]=findmid(a,b,c);//如果这里赋给数组t的话,那么就还要把数组t赋给数组x,显然后续没有这么做,所以这里应该直接赋给数组x}
}
main()
{  int  i, x[N]={6,5,7,23,18,5,8,21,45,38};for(i=0; i<N; i++)  printf("%d ",x[i]);printf("\n");fun(x);for(i=0; i<N; i++)  printf("%d ",x[i]);printf("\n");getchar();
}

解题思路:
这题代码复杂的点可能就在那个三目运算符了,这种还是自己去推一遍才有感觉,如果用if估计要挂一大串,用三目运算符还是要简洁很多的

答案:

#include  <stdio.h>
#define   N   10
int findmid(int  a, int  b, int  c)
{  int  t;t = (a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));
/**********found**********/return  t;
}
void fun(int  x[])
{  int  i,a,b,c,t[N];
/**********found**********/for(i=0;i<N;i++) t[i]=x[i];for(i=0;i<N-2;i++){  a=t[i];b=t[i+1];c=t[i+2];
/**********found**********/x[i+1]=findmid(a,b,c);}
}
main()
{  int  i, x[N]={6,5,7,23,18,5,8,21,45,38};for(i=0; i<N; i++)  printf("%d ",x[i]);printf("\n");fun(x);for(i=0; i<N; i++)  printf("%d ",x[i]);printf("\n");getchar();
}

测试:
在这里插入图片描述

56.根据以下公式求值,并作为函数值返回

给定程序MODI1.C中函数fun的功能是:根据以下公式求值,并作为函数值返回。

例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。
请添加图片描述
请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1.C:

#include <math.h>
#include <stdio.h>
double fun(double  eps)
{  double  s,t;     int  n=1;s=0.0;
/************found************/t=0;//通过下面的循环可以看出t就是公式中累加的每一项,可以看到公式中第一项是1,所以t应该初始化为1while( t>eps){  s+=t;t=t * n/(2*n+1);n++;}
/************found************/return(s);//题目中最后公式得到的是Π/2,而我们要求的是Π,所以这里应该还要乘以2
}
main()
{  double  x;printf("\nPlease enter a precision: "); scanf("%lf",&x);printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));getchar();
}

解题思路:
题目真是云里雾里的,其实最后函数要得出的是圆周率,感觉题目说得不够清楚,很容易下意识认为最后求的就是公式得出的值

这个求Π/2的公式道是有意思,我好像没见过

答案:

#include <math.h>
#include <stdio.h>
double fun(double  eps)
{  double  s,t;     int  n=1;s=0.0;
/************found************/t=1;while( t>eps){  s+=t;t=t * n/(2*n+1);n++;}
/************found************/return(s*2);
}
main()
{  double  x;printf("\nPlease enter a precision: "); scanf("%lf",&x);printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));getchar();
}

测试:
在这里插入图片描述

57.读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行

给定程序modi1.c的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的"单词"是指由空格隔开的字符串)。

例如,若输入: I am a student to take the examination.,则应输出:工 Am A Student To Take The Examination.。

请改正程序中的语法错误,使程序能得出正确的结果。

注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <ctype.h>
#include <string.h>
/************found************/
include  <stdio.h>  //调用库的操作都在预处理里,加了#之后就是预处理指令
/************found************/
void upfst ( char  p )//这里主函数传来的是一个字符数组,所以这里参数应该为一个字符数组或指针
{  int  k=0;for ( ; *p; p++ )if ( k ){   if ( *p == ' ' )   k = 0;   }else  if ( *p != ' ' ){   k = 1;   *p = toupper( *p ); }//toupper()是变大写字母函数
}main( )
{   char   chrstr[81];printf( "\nPlease enter an English text line: " );   gets( chrstr );printf( "\n\nBefore changing:\n  %s", chrstr );upfst(  chrstr );printf( "\nAfter changing:\n  %s\n", chrstr );getchar();
}

解题思路:
还是照例讲下题目代码使用的函数:

int toupper(int c);  //把小写字母转化为大写字母

参数c可以是一个表示字符的整数值(通常是字符的 ASCII 码),函数将返回将该字符转换为大写字母形式后的整数值,如果是字母的话就会返回一个大写字母

答案:

#include <ctype.h>
#include <string.h>
/************found************/
#include  <stdio.h>
/************found************/
void upfst ( char  *p )
{  int  k=0;for ( ; *p; p++ )if ( k ){   if ( *p == ' ' )   k = 0;   }else  if ( *p != ' ' ){   k = 1;   *p = toupper( *p ); }
}main( )
{   char   chrstr[81];printf( "\nPlease enter an English text line: " );   gets( chrstr );printf( "\n\nBefore changing:\n  %s", chrstr );upfst(  chrstr );printf( "\nAfter changing:\n  %s\n", chrstr );getchar();
}

测试:
在这里插入图片描述

58.将形参str所指字符串中的数字字符按从前往后出现的次序从左往右拼接成一个整数,返回主函数输出

给定程序MODI1.C中函数fun的功能是:将形参str所指字符串中的数字字符按从前往后出

现的次序从左往右拼接成一个整数,返回主函数输出。若形参str中没有数字,

则函数fun返回0给主函数。

例如:若str的内容为”C3Xyz9D1",则函数返回391,程序输出391。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

MODI1.C:

#include <stdio.h>
#include <string.h>int fun(char* str) 
{  int i, k;i = 0;
/**********************found***********************/for (k=0; k<=strlen(str); k++) //循环条件错了,最大下标应该是strlen(str)-1{
/**********************found***********************/if ( (str[k] >= 0) && (str[k] <= 9) ) //由于是在字符串中筛出数字字符,应该大于等于字符'0'且小于等于字符'9'i = i * 10 + str[k] - '0';}
/**********************found***********************/return k;//k是下标,i才是得出的整数
}int main()
{ char str[100];int l;printf("input string:");scanf("%s", str);l = fun(str);printf("num:%d\n", l);return 0;
}

解题思路:
用字符与整数比较时,其实就是把字符转为ASCII码与整数比较,

这里说几个常见字符的ASCII码:
'\0'是0,'0'是48,'A'是65,'a'是97,
小写字母与对应的大写字母的ASCII码之差为32

答案:

#include <stdio.h>
#include <string.h>int fun(char* str) 
{  int i, k;i = 0;
/**********************found***********************/for (k=0; k<strlen(str); k++) {
/**********************found***********************/if ( (str[k] >= '0') && (str[k] <= '9') ) i = i * 10 + str[k] - '0';}
/**********************found***********************/return i;
}int main()
{ char str[100];int l;printf("input string:");scanf("%s", str);l = fun(str);printf("num:%d\n", l);return 0;
}

测试:
在这里插入图片描述

59.求S的值

给定程序modi1.c中,函数fun的功能是:求S的值。设
请添加图片描述
例如,当k为10时,函数值应为: 1.533852。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
#include <math.h>/************found************/
void fun( int  k )//一眼就可以看到fun函数是有返回值的,返回值类型为double
{  int n; double s,  w, p, q;n = 1;s = 1.0;
/************found************/while ( n < k )//n还可以等于k{ w = 2.0 * n;p = w - 1.0;q = w + 1.0;s = s * w *w/p/q;n++;}
/************found************/return  s//语句要以分号;结尾
}main ( )
{printf("%f\n", fun (10));getchar();
}

解题思路:
这题代码很短,也没有用什么函数,(´ー∀ー`)

答案:

#include <stdio.h>
#include <math.h>/************found************/
double fun( int  k )
{  int n; double s,  w, p, q;n = 1;s = 1.0;
/************found************/while ( n <= k ){ w = 2.0 * n;p = w - 1.0;q = w + 1.0;s = s * w *w/p/q;n++;}
/************found************/return  s;
}main ( )
{printf("%f\n", fun (10));getchar();
}

测试:
在这里插入图片描述

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

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

相关文章

K210基础实验——点亮LED灯

一、目的是点亮K210开发板左下角的LED0和LED1&#xff0c;LED0是红灯&#xff0c;LED1是绿灯&#xff0c;两颗LED灯都是低电平点亮&#xff0c;高电平熄灭。 二、这是原理图上的硬件连接&#xff0c;LED0连接的是IO0&#xff0c;LED1连接的是IO17。 三、在src目录下新建文件夹 …

WSL2配置Linux、Docker、VS Code、zsh、oh my zsh

0. 写在前面 本篇笔记来自于UP主麦兜搞IT的合集视频Windows10开发环境搭建中的部分内容 1. 安装WSL2 按照微软官方文档进行操作&#xff0c;当然也可以直接wsl --install 也可以按照 旧版手动安装的步骤 来进行操作 选择安装的是Ubuntu 20.04 LTS 注&#xff1a;WSL默认安装…

【Vulkan Tutorials 01】【环境搭建】三角形例子

Development Environment&#xff08;开发环境&#xff09; 1. 安装Vulkan SDK 官网 2. 安装cmake和minGW 2.1 cmake 官网 双击可执行文件&#xff0c;然后直接安装&#xff0c;注意环境变量选择设置&#xff0c;否则需要自己操作。 2.2 minGW 官网 下载如下图所示&am…

2.21数据与结构算法学习日记(最小生成树prim算法)

目录 最小生成树prim 最小生成树算法是一种用来在一个加权连通图中找到最小生成树的算法。最小生成树是一个包含图中所有顶点的树&#xff0c;其总权值最小。 prim算法 洛谷题目示例 P3366 【模板】最小生成树 题目描述 输入格式 输出格式 输入输出样例 说明/提示 题…

K8s ingress-nginx根据请求目录不同将请求转发到不同应用

K8s ingress-nginx根据请求目录不同将请求转发到不同应用 1. 起因 有小伙伴做实验想要实现以下需求: 输入www.pana.com/app1访问app1的svc 输入www.pana.com/app2访问app2的svc 2. 实验 2.1 Dockerfile 先准备Dockerfile FROM nginx:1.20ADD index.html /usr/share/ngin…

还迷糊事务的并发问题以及隔离级别?

还迷糊事务的并发问题以及隔离级别&#xff1f; 事务并发问题 MySQL 服务端是允许多个客户端连接的&#xff0c;这意味着 MySQL 会出现同时处理多个事务的情况。 那么在同时处理多个事务的时候&#xff0c;就可能出现脏读&#xff08;dirty read&#xff09;、不可重复读&am…

华清远见作业第四十天——Qt(第二天)

思维导图&#xff1a; 编程&#xff1a; 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为…

碳化硅晶片C面和硅面详解

SiC是一种Si元素和C元素以1:1比例形成的二元化合物&#xff0c;即百分之五十的硅&#xff08;Si&#xff09;和百分之五十的碳&#xff08;C&#xff09;&#xff0c;其基本结构单元为 Si-C 四面体。 举个例子&#xff0c;Si原子直径大&#xff0c;相当于苹果&#xff0c;C原子…

EasyRecovery支持恢复多种类型的文件包括文档、表格、图片、音频、视频等

EasyRecovery易恢复是一款来自美国的数据恢复软件&#xff0c;已有35年&#xff08;或38年&#xff09;的历史。它支持不同存储介质的数据恢复&#xff0c;包括电脑系统硬盘、移动硬盘等&#xff0c;并针对不同的数据丢失原因提供了相应的恢复方案。 EasyRecovery易恢复是一款…

开源模型应用落地-工具使用篇-向量数据库(三)

一、前言 通过学习"开源模型应用落地"系列文章&#xff0c;我们成功地建立了一个完整可实施的AI交付流程。现在&#xff0c;我们要引入向量数据库&#xff0c;作为我们AI服务的二级缓存。本文将详细介绍如何使用Milvus Lite来为我们的AI服务部署一个前置缓存。 二、术…

曝光一下不发年终奖的企业

原文连接&#xff1a; 曝光一下不发年终奖的企业 今日热帖&#xff0c;看到网上发布的一篇帖子&#xff1a;请曝光一下不发年终奖的企业&#xff01; 结果留言上百条&#xff0c;除了私企&#xff0c;还有很多国企&#xff0c;银行等。而且还有一些我们认为应该很赚钱的企业&a…

opengl 学习着色器

一.GLSL 着色器是使用一种叫GLSL的类C语言写成的。GLSL着色器编码顺序&#xff1a;声明版本》定义输入输出》uniform》main函数。每个着色器的入口点是main函数&#xff0c;在main函数中我们处理所有的输入变量&#xff0c;并将结果输出到输出变量中。如下图&#xff1a; #ver…

CVE-2024-24565 CrateDB数据库任意文件读取漏洞

目录 前言 简介 ​编辑 环境搭建 漏洞复现 前言 本次介绍的漏洞不同与以往&#xff0c; 本次洞更多是适用于利用数据库提权。 利用数据库的导入导出数据的功能&#xff0c;我们往往可以将内部的一些敏感文件如/etc/passwd导入到数据库进行查看。也可以将数据导入到一些特…

命令执行讲解和函数

命令执行漏洞简介 命令执行漏洞产生原因 应用未对用户输入做严格得检查过滤&#xff0c;导致用户输入得参数被当成命令来执行 命令执行漏洞的危害 1.继承Web服务程序的权限去执行系统命会或读写文件 2.反弹shell&#xff0c;获得目标服务器的权限 3.进一步内网渗透 远程代…

泛微e-office系统存在敏感信息泄露 附POC软件

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 泛微e-office系统简介 微信公众号搜索:南风漏洞复…

mysql 锁详解

目录 前言 一、全局锁 二、表级锁 三、行锁 前言 为什么要设计锁&#xff0c;锁设计初衷是为了解决多线程下并发问题。出现并发的时候用锁进行数据同步&#xff0c;避免因并发造成了数据错误(数据覆盖)。可见锁的重要性&#xff0c;并不是所有的数据库都有锁。比如Redis&a…

什么是CODESYS开发系统

CODESYS是一种用于工业自动化领域的开发系统软件&#xff0c;提供了一个完整集成的开发环境。该软件由德国CODESYS GmbH&#xff08;原 3S-Smart Software Solutions GmbH&#xff09;公司开发&#xff0c;其最新版本为CODESYS V3。 CODESYS开发系统具有多种特性和优点。首先&a…

⭐北邮复试刷题105. 从前序与中序遍历序列构造二叉树__递归分治 (力扣每日一题)

105. 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,…

Rocky 8.9 Kubespray v2.24.0 在线部署 kubernetes v1.28.6 集群

文章目录 1. 简介2. 预备条件3. 基础配置3.1 配置hostname3.2 配置互信 4. 配置部署环境4.1 在线安装docker4.2 启动容器 kubespray4.3 编写 inventory.ini4.4 关闭防火墙、swap、selinux4.5 配置内核模块 5. 部署6. 集群检查 1. 简介 kubespray​ 是一个用于部署和管理 Kuber…

CF1468J Road Reform 题解

CF1468J Road Reform 题解 link CF1468J Road Reform 题面翻译 给定一个有 n n n 个节点&#xff0c; m m m 条无向带权边的图&#xff0c;和一个参数 k k k&#xff0c;第 i i i 条边权值为 s i s_i si​。 现在你要保留这个图中的 n − 1 n-1 n−1 条边使得这个图变…