练习(杨辉三角、字符串旋转)
一、
以下程序执行的结果:
int main()
{//0~255unsigned char a = 200;//00000000000000000000000011001000//11001000 - a 截断unsigned char b = 100;//00000000000000000000000001100100//01100100 - b unsigned char c = 0;c = a + b;//11001000 - a//01100100 - b//提升//00000000000000000000000011001000 - a(无符号类型) //00000000000000000000000001100100 - b//00000000000000000000000100101100 - a+b 300(正数 原码、补码、反码相同)//00101100 - c 44 (c是无符号字符类型,高位默认补0,原码、反码、补码相同)printf("%d %d",a+b,c);//300 44return 0;
}
二、猜名次
题目内容 :
5位运动员参加了代米台跳水比赛,有人让他们预测比赛结果
A选手说 : B第二,我第三;
B选手说:我第二,E第四:
C选手说:我第一,D第二
D选手说 : C最后,我第三
E选手说 : 我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
思路:a,b,c,d,e都假设一遍(每一个人都假设为第 1 2 3 4 5 名)
至少有一个为真:1+0=1 0+1=1;例如A选手 (b == 2)+(a == 3) == 1
int main()
{int a = 0;int b = 0;int c = 0;int d = 0;int e = 0;for(a=1;a<=5;a++){for(b=1;b<=5;b++){for(c=1;c<=5;c++){for(d=1;d<=5;d++){for(e=1;e<=5;e++){if((b==2)+(a==3)==1 && (b==2)+(e==4)==1 && (c==1)+(d==2)==1 && (c==5)+(d==3)==1 && (e==4)+(a==1)==1){printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);}}}}}}return 0;
}
如果我们按以上程序打印,会出现许多种可能,其中还会出现重复现象,例如,出现a和e同时是第一名的情况,其中只有一个正确的答案没有重复
由于1*2*3*4*5==120,我们可以利用这条式子来输出正确的答案
int main()
{int a = 0;int b = 0;int c = 0;int d = 0;int e = 0;for(a=1;a<=5;a++){for(b=1;b<=5;b++){for(c=1;c<=5;c++){for(d=1;d<=5;d++){for(e=1;e<=5;e++){if((b==2)+(a==3)==1 && (b==2)+(e==4)==1 && (c==1)+(d==2)==1 && (c==5)+(d==3)==1 && (e==4)+(a==1)==1){if(a*b*c*d*e == 120)printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);}}}}}}return 0;
}
三、猜凶手
题目内容 :
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以輸下为4个嫌疑犯的供词 :
A说:不是我。
B说 : 是C。
C说 : 是D。
D说 : C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
思路:每个人都假设一遍(假设为凶手,看看是否能符合描述)
() + () + () + () == 3 (有三个说的为真,1)
int main()
{char killer = 0;for(killer= a';killer<='d';killer++){if((killer != 'a')+(killer == 'c')+(killer == 'd')+(killer != 'd') == 3){printf("凶手是%c\n",killer);//c}}return 0;
}
四、杨辉三角
在屏幕上打印杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
………………
int main()
{int arr[10][10] = {0};printf("请输入杨辉三角的行数:>");int n = 0;scanf("%d",&n);int i = 0;for(i=0;i<n;i++){int j = 0;for(j=0;j<=i;j++)//只需要打印对角线及以下的部分{if(j==0)arr[i][j] = 1;if(i==j)arr[i][j] = 1;if(i>=2 && j>=1)//从第三行开始,每个中间元素等于上一行相邻两个元素之和arr[i][j] = arr[i-1][j-1] + arr[i-1][j];}}for(i=0;i<n;i++){int j = 0;int space = 0;for(space=0;space<(n-i-1)*2;space++){printf(" ");}for(j=0;j<=i;j++){printf("%4d ",arr[i][j]);}printf("\n");}return 0;
}
每行前导空格数采用(n-i-1)*2的计算方式,是为了确保杨辉三角在输出时能居中对齐,形成美观的金字塔形状。
1.居中对齐
杨辉三角的每一行需要逐层缩进,使得所有行的中心线与最后一行的中心对齐。
假设:·总行数为 n,最后一行的元素最多(共n 个元素)。
每个元素占4字符宽度(通过 %4d 格式实现),因此最后一行的总宽度为 4n。
最后一行的中心位置在 2n处(总宽度4n 的一半)。
为了让当前行 i 的中心位置与最后一行的中心对齐,需要动态计算前导空格数。
2.公式推导
当前行 i 的元素数量: i+1个。
当前行的总宽度: 4*(i+1)字符。
当前行的中心位置: 2*(i+1)(当前行总宽度的一半)。
为使当前行中心与最后一行的中心2n对齐:
前导空格数 + 当前行中心位置 = 最后一行中心位置
即:
前导空格数 + (i+1)*2 = 2n
则:
前导空格数 = 2n - 2*(i+1) = (n-i-1)*2
元素之间的空格由 %4d 控制
代码中使用 printf("%4d",arr[i][j])打印每个元素,其中 %4d 表示:。每个数字占用4个字符宽度,右对齐。不足4位的数字:左侧用空格填充,例如数字 1会输出为…1(·表示空格)。·相邻元素:两个 %4d格式符连写时,元素之间的间隔为3个空格(前一个数字的末尾空格和后一个数字的起始空格叠加),例如1 1会输出 ...1...1
前导空格的计算与元素间隔无关
前导空格公式(n-i-1)*2 仅用于整体居中对齐,与元素之间的间隔无关
例如:
当n=5,i=1(第二行):
前导空格数: (5-1-1)*2=6 ,即打印6个空格。
元素间隔:由%4d自动生成3个空格。
6空格 +"…1…1”,即最终输出: .........1...1(视觉上对齐为......1...1)。
五、
根据以下的代码判断:
int main()
{int* p = NULL;int arr[10] = {0};return 0;
}
A.p = arr B.int (*ptr)[10] = &arr C.p = &arr[0]
D.p = &arr 【错误】 - p是int*类型的指针变量,而&arr对应的是一个数组指针int (*)[10]类型
例如我们前面学习的二维数组传参:
void test(int* arr)
{int i = 0;for(i = 0;i < 15; i++){printf("%d ",arr[i]);}
}
int main()
{int arr[3][5] = {{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};test(arr);//arr作为二维数组的数组名,表示的是首元素的地址,是第一行的地址,是一个一维数组的地址,类型是数组指针,而给函数传参时用一个整型指针来接收就不太恰当return 0;
}
//如果就是想要用整型指针来接收,那么应该将二维数组的首元素传进去:
test(&arr[0][0])
六、杨氏矩阵
题目内容:
有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在
以下的矩阵就是一个杨氏矩阵:
x为横坐标,y为纵坐标;这个数组的右上角和左下角(3和7)是特殊的,3是一列的最大数也是一行的最小数,而7与3反过来,以3为例:假如我们要查找的数字是7,此时3<7,去掉一行,此时右上角的数字变成了6,6<7,在去掉一行,此时9>7,去掉一列,8>7,再去掉一列,然后就查找到了7
void find_k(int arr[3][3],int r,int c,int k)
{int x = 0;int y = c - 1;int flag = 0;while(x<=r-1 && y>=0){if(arr[x][y] < k){x++;}else if(arr[x][y] > k){y++;}else{printf("找到了,下标是:(%d,%d)",x,y);flag = 1;break;}}if(flag == 0)printf("找不到\n");
}int main()
{int arr[3][3] = {1,2,3,4,5,6,7,8,9};int k = 0;printf("请输入要查找数:>");scanf("%d",&k);find_k(arr,3,3,k);return 0;
}
方法二:
void find_k(int arr[3][3],int* px,int* py,int k)
{int x = 0;int y = *py - 1;while(x<=*px-1 && y>=0){if(arr[x][y] < k){x++;}else if(arr[x][y] > k){y++;}else{*px = x;*py = y;return 1;}}return 0;
}int main()
{int arr[3][3] = {1,2,3,4,5,6,7,8,9};int k = 0;printf("请输入要查找数:>");scanf("%d",&k);int x = 3;int y = 3;int ret = find_k(arr,&x,&y,k);if(ret == 0)printf("找不到\n");elseprintf("找到了,下标是:(%d,%d)",x,y);return 0;
}
七、字符串左旋
题目内容:
实现一个函数,可以左旋字符串中的k个字符
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
思路:创建一个临时变量,每一次实现一个字符的交换
#include <stdio.h>
#include <string.h>
void left_move(int arr[],int k)
{int i = 0;int len = strlen(arr);k %= len;//旋转k位等价于k%len位,例如,字符串长度为5,旋转7位等价于旋转2位for(i = 0;i < k; i++){//旋转一个字符//1char tmp = arr[0];//2int j = 0;for(j = 0;j < len - 1; j++){arr[j] = arr[j+1];}//3arr[len-1] = tmp;}
}
int main()
{int arr[] = "abcdef";int k = 0;printf("左旋字符串的个数:>");scanf("%d",&k);left_move(arr,k);printf("%s\n",arr);return 0;
}
方法二:1 - 逆序前部分
2 - 逆序后部分
3 - 逆序整体
#include <stdio.h>
#include <string.h>
#include <assert.h>
void reverse(char* left,char* right)
{assert(left && right);while(left<right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
void left_move(char arr[],int k)
{int len = strlen(arr);k %= len;//逆序前部分reverse(arr,arr+k-1);//逆序后部分reverse(arr+k,arr+len-1);//整体逆序reverse(arr,arr+len-1);
}
int main()
{int arr[] = "abcdef";int k = 0;printf("左旋字符串个数:>");scanf("%d",&k);left_move(arr,k);printf("%s\n",arr);return 0;
}
八、字符串旋转结果
题目内容:
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串,
例如:给定S1=AABCD和s2=BCDAA,返回1
给定s1=abcd和S2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
左旋转:
#include <string.h>
void reverse(char* left, char* right)
{assert(left && right);while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
void left_move(char arr[],int k)
{int len = strlen(arr);k %= len;//逆序左reverse(arr, arr + k - 1);//逆序右reverse(arr + k, arr + len - 1);//逆序整体reverse(arr, arr + len - 1);
}
int is_left_move(int arr1[],int arr2[])
{int len1 = strlen(arr1);int len2 = strlen(arr2);if(len1 != len2)return 0;int i = 0;for(i = 0;i < len1; i++){left_move(arr1,1);if(strcmp(arr1,arr2) == 0)return 1;}return 0;
}
int main()
{char arr1[] = "AABCD";char arr2[] = "BCDAA";int ret = is_left_move(arr1,arr2);if(ret == 1)printf("YES\n");elseprintf("NO\n");return 0;
}
通过调试可观察其变化:
右旋转:
#include <string.h>
void reverse(char* left, char* right)
{assert(left && right);while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
void right_move(char arr[],int k)
{int len = strlen(arr);k %= len;//逆序左reverse(arr, arr+len-1-k);//逆序右reverse(arr+len-k,arr+len-1);//逆序整体reverse(arr, arr + len - 1);
}
int is_right_move(int arr1[],int arr3[])
{int len1 = strlen(arr1);int len3 = strlen(arr3);if(len1 != len3)return 0;int i = 0;for(i = 0;i < len1; i++){left_move(arr1,1);if(strcmp(arr1,arr3) == 0)return 1;}return 0;
}
int main()
{char arr1[] = "AABCD";char arr2[] = "DAABC";int ret = is_right_move(arr1,arr3);if(ret == 1)printf("YES\n");elseprintf("NO\n");return 0;
}
方法二:AABCD -> AABCDAABCD 给要与arr2比较的arr1再叠加整个字符串,看看arr2是否是arr1的子字符串
首先认识一下strcat、strncat、strstr(头文件都是 #include <string.h>)
strcat
int main()
{char arr[20] = "hello ";strcat(arr, "world");//在arr的基础上追加一个"world"字符串printf("%s\n", arr);//打印结果:hello worldreturn 0;
}
strncat - 可以设定要打印一个字符串中的几个字符
int main()
{char arr[20] = "hello ";strncat(arr, "world", 3);printf("%s\n", arr);//打印结果:hello worreturn 0;
}
strstr
int main()
{//是在arr1字符串中查找arr2是否存在//如果存在则返回arr2在arr1中的地址(位置);如果不存在返回NULLchar arr1[] = "abcdefabcdef";char arr2[] = "def";//如果arr1中有两个arr2,只返回第一个开始的地址char* ret = strstr(arr1, arr2);if (ret == NULL)printf("NO\n");elseprintf("%s\n",ret);//打印(%s)结果:defabcdef (从返回的地址开始向后打印)return 0;
}
左右旋转:
//右旋
int is_right_move(int arr1[],int arr3[])
{int len1 = strlen(arr1);int len3 = strlen(arr3);if(len1 != len3)return 0;strncat(arr1,arr1,len1);if(strstr(arr1,arr3) != NULL)return 1;elsereturn 0;
}
//左旋
int is_left_move(int arr1[],int arr2[])
{int len1 = strlen(arr1);int len2 = strlen(arr2);if(len1 != len2)return 0;strncat(arr1,arr1,len1);if(strstr(arr1,arr2) != NULL)return 1;elsereturn 0;
}
int main()
{char arr1[20] = "AABCD";char arr2[] = "BCDAA";char arr3[] = "DAABC";//int ret = is_left_move(arr1,arr2);int ret = is_right_move(arr1,arr3);if(ret == 1)printf("YES\n");elseprintf("NO\n");return 0;
}
九、
以下程序的输出结果是:1 6
int main()
{int aa[2][5] = { 10,9,8,7,6,5,4,3,2,1 };int* ptr1 = (int*)(&aa + 1);//&arr取出整个数组的地址,+1跳过了这个地址,然后强制转化为int*类型int* ptr2 = (int*)(*(aa + 1));//aa是二维数组数组名,即数组名为首行的地址(arr[0]),aa+1跳到第二行地址(arr[1]),然后解引用,强制转化为int*类型printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));//*(ptr1-1) - 减1又回到了数组的最后一个元素的地址上,即1//*(ptr2-1) - 减1回到第一行最后一个元素的地址上,即6return 0;
}
相关文章:
练习(杨辉三角、字符串旋转)
一、 以下程序执行的结果: int main() {//0~255unsigned char a 200;//00000000000000000000000011001000//11001000 - a 截断unsigned char b 100;//00000000000000000000000001100100//01100100 - b unsigned char c 0;c a b;//11001000 - a//0110010…...
L1-7 矩阵列平移
题目 给定一个 nn 的整数矩阵。对任一给定的正整数 k<n,我们将矩阵的偶数列的元素整体向下依次平移 1、……、k、1、……、k、…… 个位置,平移空出的位置用整数 x 补。你需要计算出结果矩阵的每一行元素的和。 输入格式: 输入第一行给出…...
webgl入门实例-11模型矩阵 (Model Matrix)基本概念
WebGL 模型矩阵 (Model Matrix) 在WebGL和3D图形编程中,模型矩阵(Model Matrix)是将物体从局部坐标系(模型空间)转换到世界坐标系的关键变换矩阵。 什么是模型矩阵? 模型矩阵是一个4x4的矩阵,用于表示物体在世界空间中的位置、旋转和缩放。…...
【漫话机器学习系列】209.均值的标准误差(Standard Error of the Mean)
均值的标准误差(Standard Error of the Mean)详解 在统计学中,我们经常会遇到“均值的标准误差”这个概念,英文称为 Standard Error of the Mean(简称 SEM)。它是对样本均值作为总体均值估计的可靠程度的一…...
Multi Agents Collaboration OS:文档合规性及质量检测助手设计及实践
文档审查及质量检测背景 随着企业运营和知识管理的日益复杂,文档的合规性与质量成为确保信息准确、流程顺畅及风险控制的关键环节。传统上,人工进行文档的合规性和质量检测不仅耗时耗力,且易受主观因素影响,难以保证检测的全面性…...
Vue Teleport 及其在 SSR 中的潜在问题
Vue 3 的 Teleport 特性为开发者提供了更灵活的 DOM 结构控制能力,但在服务端渲染(SSR)场景中,它可能引发一些需要注意的问题。本文将深入探讨 Teleport 的核心机制及其在 SSR 中的使用陷阱。 一、Teleport 核心机制解析 1. 基本…...
Fastapi 日志处理
uvicorn 日志处理总结: 一、日志的结构 日志结构如下: {"version": 1,"disable_existing_loggers": false,"formatters": {},"handlers": {},"loggers": {} }loggers 用于定义日志处理最顶层的标识…...
FME实现矢量建筑面shp拉伸并贴纹理
文章目录 效果2、数据准备3、整理流程图4、操作步骤4.1 打开软件4.2 添加shp数据4.3 添加Extruder转换器4.4 添加AppearanceSetter转换器4.5 添加png纹理数据4.6 添加输出节点4.7 添加Logger节点4.8 执行5、执行结果效果 2、数据准备 (1)建筑面shp (2)纹理 test.png 其中s…...
仿腾讯会议项目实现——设置配置文件
目录 1、初始化配置 2、实现初始化配置的函数 3、修改配置文件内的ip地址 1、初始化配置 Ckernel.h 2、实现初始化配置的函数 3、修改配置文件内的ip地址 首先修改IP 运行出现设置的IP, 找到运行的配置文件,修改成自己当前的ip 将函数运行条件改成非…...
1187. 【动态规划】竞赛总分
题目描述 学生在我们USACO的竞赛中的得分越多我们越高兴。我们试着设计我们的竞赛以便人们能尽可能的多得分。 现在要进行一次竞赛,总时间T固定,有若干类型可选择的题目,每种类型题目可选入的数量不限,每种类型题目有一个si(解答…...
从零开始学Python游戏编程31-类3
2.6 run()方法 run()方法的作用是在while循环中调用以上方法,运行游戏。代码如图11所示。 图11 run()方法代码 其中,第43行控制while循环的是实例属性running,在图7所示的__init__()方法中定义;第44-46行代码分别调用了processI…...
Transformer 架构 - 解码器 (Transformer Architecture - Decoder)
一、解码器整体结构:多层堆叠设计 Transformer解码器由N个相同结构的解码器层堆叠而成(通常N=6),每层包含三个核心子模块(图1) 1 5 12 : 带掩码的多头自注意力层(Masked Multi-Head Self-Attention)编码器-解码器注意力层(Encoder-Deco…...
解锁健康生活:养生新主张
在生活节奏日益加快的当下,健康养生不再是中老年人的专属话题,越来越多的人开始意识到,它是维持生命活力、抵御疾病的重要保障。 中医养生讲究 “药食同源”,在饮食上,我们可以根据季节变化调整食谱。春天气候多变&…...
__call__ 方法
__call__ 是 Python 中的一个魔法方法,也称为类方法。 它的作用是将类的实例变成可调用对象,类似于像函数一样被调用。 __call__ 使用举例 class MyClass:def __call__(self, x, y):return x yobj MyClass() print(obj(1, 2)) 对比其他类/对象的使用…...
济南通过首个备案生活服务大模型,打造行业新标杆
近日,一则振奋人心的消息在人工智能领域传开:济南本土企业丽阳神州智能科技有限公司自主研发的 “丽阳雨露” 大模型成功通过国家网信办的备案。这一成果不仅是济南企业在科技创新道路上的重大突破,更标志着我国在生活服务领域的人工智能应用…...
UE5有些场景的导航生成失败解决方法
如果导航丢失,就在项目设置下将: 即可解决问题: 看了半个小时的导航生成代码发现,NavDataSet这个数组为空,导致异步构建导航失败。 解决 NavDataSet 空 无法生成如下: 当 NavDataSet 为空的化 如果 bAut…...
STM32使用rand()生成随机数并显示波形
一、随机数生成 1、加入头文件:#include "stdlib.h" 2、定义一个用作生成随机数种子的变量并加入到滴答定时器中不断自增:uint32_t run_times 0; 3、设置种子:srand(run_times);//每次生成随机数前调用一次为佳 4、生成一个随…...
继承的了解与学习
目录 1. 继承的概念及定义 1.1 继承的概念 1.2继承的名称 1.3继承方式 1.4继承类模板 2.基类和派生类之间的转化 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6.继承与静态函数 7.多继承与其菱形继承问题 8.虚继承 9.继承和组合 1. 继承的概念及定义 …...
如何精通C++编程?
如果从学生时代算起的话,我学习和使用C已经差不多快十年了,仍然不敢说自己已经掌握了C的全部特性,但或许能够给出一些有用的建议吧。 我学习C全靠自学,花费了不少的功夫,在这里分享一些学习心得,希望对大家…...
【科研绘图系列】R语言绘制多个气泡图组合图(bubble plot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图函数画图系统信息介绍 【科研绘图系列】R语言绘制多个气泡图组合图(bubble plot) 加载R包 library(dplyr) library(tidyr) library(ggp…...
利用大模型实现地理领域文档中英文自动化翻译
一、 背景描述 在跨国性企业日常经营过程中,经常会遇到专业性较强的文档翻译的需求,例如法律文书、商务合同、技术文档等;以往遇到此类场景,企业内部往往需要指派专人投入数小时甚至数天来整理和翻译,效率低下&#x…...
Oracle 19c部署之手工建库(四)
#Oracle #19c #手工建库 手工创建Oracle数据库(也称为手工建库)是指在已经安装了Oracle数据库软件的基础上,通过手动执行一系列命令和步骤来创建一个新的数据库实例。这种方法与使用Database Configuration Assistant (DBCA)等工具自动创建数…...
Leetcode 2158. 每天绘制新区域的数量【Plus题】
1.题目基本信息 1.1.题目描述 有一幅细长的画,可以用数轴来表示。 给你一个长度为 n 、下标从 0 开始的二维整数数组 paint ,其中 paint[i] [starti, endi] 表示在第 i 天你需要绘制 starti 和 endi 之间的区域。 多次绘制同一区域会导致不均匀&…...
使用最新threejs复刻经典贪吃蛇游戏的3D版,附完整源码
基类Entity 建立基类Entity,实现投影能力、动画入场效果(从小变大的弹性动画)、计算自己在地图格位置的方法。 // 导入gsap动画库(用于创建补间动画) import gsap from gsap// 定义Entity基类 export default class …...
Google优化搜索体验:全新动态摘要功能(Beta)为欧洲用户带来更丰富的结果
Google持续推动搜索体验的创新,最新推出的动态摘要(Dynamic Snippets)功能(Beta版)为欧洲经济区(EEA)的用户和企业带来了全新的交互方式。2025年4月,Google更新了动态摘要的文档&…...
[苍穹外卖 | 项目日记] 第三天
前言 实现了新增菜品接口实现了菜品分页查询接口实现了删除菜品接口实现了根据id查询菜品接口实现了修改菜品接口 今日收获: 今日的这几个接口其实和之前写的对员工的操作是一样的,都是一整套Curd操作,所以今天在技术层面上并没有…...
【Python爬虫基础篇】--2.模块解析
目录 1.urllib库 1.1.request模块 1.1.1、urllib.request.urlopen() 函数 1.1.2.urllib.request.urlretrieve() 函数 1.2. error模块 1.3. parse 模块 2. BeautifulSoup4库 2.1.对象种类 2.2.对象属性 2.2.1.子节点 2.2.2.父节点 2.2.3.兄弟节点 2.2.4.回退和前进 …...
LabVIEW技巧——获取文件版本信息
获取可执行文件(exe)版本信息的几种方法 方法1. LabVIEW自带函数 labview自带了获取文件版本号的VI,但是没有开放到程序框图的函数选板中,在该目录下可以找到:...\LabVIEW 20xx\vi.lib\Platform\fileVersionInfo.llb…...
【软件工程】用飞书画各种图(流程图,架构图···)
笔者在做服务外包大赛的时候被文档内容的编写反复折磨,网上的工程图绘画工具要么是展示效果不佳,要么要收大几百的VIP费,最后发现飞书竟然可以直接绘画并插入示意图。 一、为什么选择飞书文档画流程图? 完全免费,无广…...
RFID图书管理系统如何重构数字化仓储管理新生态
引言 在图书馆与出版行业数字化转型进程中,RFID图书管理系统正打破传统人工管理的效率瓶颈,通过与数字化仓储管理系统的深度融合,实现从图书采购、入库到借阅的全链路智能化。本文结合RFID固定资产管理软件的应用逻辑,解析这一技…...
如何校验一个字符串是否是可以正确序列化的JSON字符串呢?
方法1:先给一个比较暴力的方法 try {JSONObject o new JSONObject(yourString); } catch (JSONException e) {LOGGER.error("No valid json"); } 方法2: Object json new cn.hutool.json.JSONTokener("[{\"name\":\"t…...
操作系统-PV
🧠 背景:为什么会有 PV? 类比:内存(生产者) 和 CPU(消费者) 内存 / IO / 磁盘 / 网络下载 → 不断“生产数据” 例如:读取文件、下载视频、从数据库加载信息 CPU → 负…...
工厂方法模式详解及c++代码实现(以自动驾驶感知模块中的应用为例)
模式定义 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,通过定义抽象工厂接口将对象创建过程延迟到子类实现,实现对象创建与使用的解耦。该模式特别适合需要动态扩展产品类型的场景。 自动驾驶感知场景分析 自动驾…...
Jsp技术入门指南【五】详细讲解jsp结构页面
Jsp技术入门指南【五】详细讲解jsp结构页面 前言一、JSP页面的结构二、JSP页面的部件1. 指令(核心控制部件)2. 动作(页面交互部件,了解即可)3. 脚本(Java逻辑嵌入部件) 三、JSP指令详解1.1 JSP指…...
游戏APP如何抵御DDoS攻击与黑客勒索?实战防护全攻略
一、游戏行业安全挑战与攻击危害 游戏APP因高实时性、高并发及虚拟资产交易特性,成为DDoS攻击和勒索的重灾区,典型威胁包括: DDoS攻击瘫痪服务: UDP Flood:针对游戏服务器端口(如UDP 7777)发起…...
Mac 选择下载安装工具 x86 还是 arm64 ?
要确定你的 Mac 电脑应该选择下载安装工具的 x86 还是 arm64 版本,关键是判断你的 Mac 使用的是 Intel 处理器(x86 架构)还是 Apple Silicon(如 M1、M2 等,arm64 架构)。具体方法如下: 方法 1&…...
string函数的应用
字符串查找 find 方法 实例 string s "Hello World,C is awesome!";//查找子串 size_t pos1 s.find("World"); //pos16 size_t pos2 s.find("Python"); //pos2string::npos//查找字符 size_tpos3s.find(c); //pos313//从指定位置开始查找 size…...
使用Trae CN分析项目架构
架构分析后的截图 A区是打开的项目、B区是源码区、C区是AI给出当前项目的架构分析结果。 如何用 Trae CN 快速学习 STM32 嵌入式项目架构 在嵌入式开发领域,快速理解现有项目的架构是一项关键技能。Trae CN 作为一款强大的分析工具,能帮助开发者高效剖…...
每日一题(小白)暴力娱乐篇33
由题意可知我们今天要解决的问题是在1~2025中去找合适的数字,这里要找出一些特殊的数字,这些数字要满足以下条件,是三的倍数,是8的倍数,是38的倍数,老板就给要多给一个红包,我们循环然后相应条件…...
MyBatis框架
前言: MyBatis框架相比JDBC来说大大提升了我们写代码的效率,但是对初学者来说框架还是有点难以理解,所以本篇博客会十分详细的讲解MyBatis框架 目录 一.MyBatis概述 1.什么是映射? 2.什么是XML? 二.MyBatis框架搭建 1.创建一张表和表对…...
基于SpringBoot的新闻小程序开发与设计
概述 在信息爆炸的时代,高效获取新闻资讯成为现代人的刚需。幽络源平台今日分享一款基于SpringBoot框架开发的微信小程序新闻资讯系统,该系统采用前后端分离架构,实现了新闻分类管理、个性化推荐、用户收藏等功能,为新闻传播提供…...
IE之路专题12.BGP专题
BGP协议有哪些特点 BGP时边界网关协议(EGP),是一种用在自治系统之间传递路由信息的路由协议; 提供了丰富的路由属性以及强大的路由过滤和路由策略,实现灵活选路和路由控制; 策略方式更改属性或根据更新信息中属性实现过滤和策略 BGP是工作在传输层TCP之上的,使用TCP的端口号…...
文件包含(详解)
文件包含漏洞是一种常见的Web安全漏洞,其核心在于应用程序未对用户控制的文件路径或文件名进行严格过滤,导致攻击者能够包含并执行任意文件(包括本地或远程恶意文件)。 1. 文件包含原理 动态文件包含机制 开发者使用动态包含函数…...
智慧养老照护实训室:推动养老服务数字化转型实践
在人口老龄化加速与数字化浪潮席卷的当下,传统养老服务模式在效率、精准度及个性化服务上的局限日益明显。智慧养老成为行业转型的必然方向,但专业人才短缺与技术应用落地困难制约着发展。智慧养老照护实训室通过整合虚拟仿真等前沿技术,构建…...
NOIP2015提高组.信息传递
目录 题目算法标签: 并查集, T a r j a n Tarjan Tarjan算法, s c c scc scc强连通分量思路 T a r j a n Tarjan Tarjan算法求解代码 题目 517. 信息传递 算法标签: 并查集, T a r j a n Tarjan Tarjan算法, s c c scc scc强连通分量 思路 使用强连通分量算法求环上点…...
Wireshark 搜索组合速查表
文章目录 Wirshark使用记录基本语法规则搜索条件符号速查表捕获过滤器组合指令速查表筛选过滤器组合命令速查表Wireshark Frame 协议字段解析 Wirshark使用记录 官网地址:https://www.wireshark.org/ 基本语法规则 字段描述示例说明type用于指定数据包的类型&…...
AI当前状态:有哪些新技术
一、到目前为址AI领域出现的新技术 到目前为止,AI领域涌现了许多令人兴奋的新技术。以下是一些关键的进展,涵盖了从基础模型到实际应用的多个方面: 1. 更强大的大型语言模型 (LLMs): 性能提升: 新一代LLM,例如OpenAI的GPT-4o和…...
我的gittee仓库
日常代码: 日常代码提交https://gitee.com/xinxin-pingping/daily-code 有需要的宝子们可自行读取。...
RT-Thread开发文档合集
瑞萨VisionBoard开发实践指南 RT-Thread 文档中心 RT-Thread-【RA8D1-Vision Board】 RA8D1 Vision Board上的USB实践RT-Thread问答社区 - RT-Thread 【开发板】环境篇:05烧录工具介绍_哔哩哔哩_bilibili 【RA8D1-Vision Board】基于OpenMV 实现图像分类_哔哩哔哩_…...
SPWM-H桥逆变器工作原理
SPWM-H桥逆变器(Sinusoidal Pulse Width Modulation H-Bridge Inverter)是一种基于正弦脉宽调制(SPWM)技术的电力电子装置,用于将直流(DC)转换为交流(AC)。它广泛应用于光…...