指针结构体题

news2024/11/23 19:35:11

目录

初阶指针_指针的概念

1.使用指针打印数组内容

2.字符串逆序

3.整形数组和字符串数组 

4.打印菱形

5.打印水仙花数

6.计算求和

结构体

7.喝汽水问题

8.程序死循环解释

9.选择题总结tips 


今天是重点是指针&结构体题题目。🆗🆗🆗

初阶指针_指针的概念

1.使用指针打印数组内容

题目1
使用指针打印数组内容
写一个函数打印arr数组的内容,不使用数组下标,使用指针。
arr是一个整形一维数组。
//方法1
#include<stdio.h>
void print(int arr[],int sz)
{
	int* p = arr;
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		//❌printf("%d ", *p + i);万一数组不是+1增长
		printf("%d ", *(p + i));
        //数组在内存中连续存放,所以产生连续的地址
	}

}
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr,sz);
	return 0;
}
//方法2
#include<stdio.h>
void print(int arr[], int sz)
{
	int* p = arr;
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", *p);
		p++;
	}

}
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr, sz);
	return 0;
}
//或者
#include <stdio.h>
int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    //在这里完成代码
    // 分析:因为数组中存储的元素类型是int类型的,因此只要给一个int的指针,
    // 依次取索引数组中的每个元素即可
    int* p = arr;  // 数组名代表数组首元素的地址
    for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i)
    {
        printf("%d ", *p);   // *p: 取到p所指向位置的元素
        ++p;                 // 获取p的下一个位置
    }
    
   	return 0;
}

2.字符串逆序

题目2
字符串逆序
写一个函数,可以逆序一个字符串的内容
//前面博文我们讲解过思想,这里我们回顾一下以及其他方法
//方法1_指针
#include<stdio.h>
#include<string.h>
void Reverse(char arr[],int sz)
{
	char* left = arr;
	char* right = arr+(sz-1);//sz-2(sizeof)
	while(left<right)
	{
		int tmp = 0;
		tmp = *left;
		*left =*right;//交换元素
		//left=right交换地址是❌不可以
		*right = tmp;
		left++;
		right--;//地址++
	}
}
int main()
{
	char arr[] = "abcdef";
	int sz = strlen(arr);
	//int sz=sizeof(arr)/sizeof(arr[0]);
	Reverse(arr,sz);//逆置函数
	//打印逆置数组
	printf("%s", arr);
	return 0;
}
//方法2_数组下标
#include<stdio.h>
#include<string.h>
void Reverse(char arr[], int sz)
{
	int left = 0;
	int right = sz - 1;//sz-2(sizeof)
	while (left < right)
	{
		int tmp = 0;
		tmp = arr[left];//元素——指针
		arr[left]= arr[right];
		arr[right] = tmp;
		left++;
		right--;//元素下标++
	}
}
int main()
{
	char arr[] = "abcdef";
	int sz = strlen(arr);
	//int sz=sizeof(arr)/sizeof(arr[0]);
	Reverse(arr, sz);//逆置函数
	//打印逆置数组
	int i = 0;
	for (i = 0; i <= sz; i++)
	{
		printf("%c", arr[i]);
	}
	//printf("%s", arr);
	return 0;
}
why???????????????????????????????????????
///_数组下标_无论在不在函数都不能产生逆置的效果
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char arr[] = "abcdef";
//	int sz = strlen(arr);
//	//int sz=sizeof(arr)/sizeof(arr[0]);
//	char left = arr[0];
//	char right =arr[sz - 1];//sz-2(sizeof)
//	while (left < right)
//	{
//		int tmp = 0;
//		tmp = left;//元素——指针
//		left = right;
//		right = tmp;
//		left++;
//		right--;//元素下标++
//	}
//	printf("%s", arr);
//	return 0;
//}

//void reverse(int arr[], int sz)
//{
//	int left =arr[0];//1
//	int right = arr[sz - 1];//5
//	while (left < right)
//	{
//		int tmp = 0;
//		tmp = left;
//		left = right;
//		right= tmp;
//		left++;
//		right--;
//	}
//}
//因为一艘进行逆置的时数组里面的元素,两两进行交换实现逆置
//这里的right和left是新的变量,新在栈区创建的空间,交换的是这两个变量。(或许试试指针)
//并不会对数组元素产生什么影响

 

3.整形数组和字符串数组 

分别写出
整形数组和字符串数组的输入和逆置和打印

整形 数组

//整形输入
#include<stdio.h>
int main()
{
	int m = 0;
	scanf("%d", &m);//输入整形数组的个数
	int arr[1000];
	int i = 0;
	for (i = 0; i < m; i++)
	{
		scanf("%d", &arr[i]);
	}
	return 0;
}
//或者
#include<stdio.h>
int main()
{
	int m = 0;
	scanf("%d", &m);//输入整形数组的个数
	int arr[1000];
	int i = 0;
	for (i = 0; i < m; i++)
	{
		scanf("%d", arr+i);
	}
	return 0;
}
//逆置_数组
#include<stdio.h>
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	//逆置
	int sz = sizeof(arr)/sizeof(arr[0]);
	//strlen不能计算整形
	int left = 0;
	int right = sz - 1;
	while (left < right)
	{
		int tmp = 0;
		tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
	//打印
	int i=0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}


//逆置_指针
#include<stdio.h>
void reverse(int arr[],int sz)
{
	int* left = arr;
	int* right = arr+(sz - 1);
	while (left < right)
	{
		int tmp = 0;
		tmp = *left;
		*left=*right;
		*right= tmp;
		left++;
		right--;
	}
}
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	//逆置
	int sz = sizeof(arr) / sizeof(arr[0]);
	//strlen不能计算整形
	reverse(arr, sz);
	//打印
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
//打印
#include<stdio.h>
int main()
{
	int arr[] = { 1,2,3,4,5 };
	int i = 0;
	int* p = arr;
	for (i = 0; i < 5; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	int j = 0;
	for (j = 0; j < 5; j++)
	{
		printf("%d ", *(arr + j));
		//printf("%d ", *(p + j));
	}
}

 字符串数组

//输入
#include<stdio.h>
int main()
{
	char arr[1000] = { 0 };
	gets(arr);
	printf("%s", arr);
}
关于字符串数组逆置上文有也是下标和指针同时可用。
注意一定是char 
//打印
#include<stdio.h>
int main()
{
	char arr[] = "tsqxgd";
	printf("%s ", arr);
	printf("\n");
	int i = 0;
	for (i = 0; i < (sizeof(arr) / sizeof(arr[0]) - 1); i++)
	{
		printf("%c", arr[i]);
	}
	return 0;
}

4.打印菱形

题目3
用C语言在屏幕上输出以下图案
//找规律" "和'*"
/*
思路:
仔细观察图形,可以发现,此图形中是由空格和*按照不同个数的输出组成的。
上三角:先输出空格,后输出*,每行中
  空格:从上往下,一行减少一个
  *:2*i+1的方式递增
  
下三角:先输出空格,后输出*,每行中
  空格:从上往下,每行多一个空格
  *: 从上往下,按照2*(line-1-i)-1的方式减少,其中:line表示总共有多少行
按照上述方式,将上三角和下三角中的空格和*分别输出即可。 
*/

#include<stdio.h>
int main()
{
	int line = 0;
	scanf("%d", &line);//输入想要的行数
	int i = 0;
	//注意从0开始到line-1行
	//上半行
	for (i = 0; i < line; i++)//上半行数循环
	{
		//每一行的打印
		int j = 0;
		//line-1是第一行-i循环第二三等行
		for (j = 0; j < line - 1 - i; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	//下半行
	for (i = 0; i < line-1; i++)
	{
		int j = 0;
		for (j = 0; j <= i; j++)
		{
			printf(" ");
		}
		for (j = 0; j < 2 * (line - 1 - i) - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

5.打印水仙花数

题目4
打印水仙花数
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,
如:153=1^3+5^3+3^3,则153是一个“水仙花数”。

/*
思路:
此题的关键在于只要知道判断一个数据是否为水仙花数的方式,
问题就迎刃而解。假定给定一个数据data,具体检测方式如下:
1. 求取data是几位数
2. 获取data中每个位置上的数据,并对其进行立方求和
3. 对data中每个位上的数据立方求和完成后,在检测其结果是否与data相等即可,
相等:则为水仙花数
否则:不是
具体实现参考以下代码。
*/

易错:
特别注意循环进入是否要/10
必须有tmp把i的值存起来防止发生变化

字幂数:如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。

自幂数_百度百科 (baidu.com) 

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 0;
	for (i = 0; i <= 999999; i++)
	{
		//判断几位数_字幂数
		int count = 1;
		int tmp = i;
		int sum = 0;
		while (tmp/=10)//易错//进入就要判断/10
		{
			count++;
		}
		//求字幂数的和
		//易错计算和一定要初始化为原来i进入的数字
		tmp = i;
		while(tmp)//循环条件易错
		{
			sum += pow(tmp% 10, count);
			tmp /= 10;
		}
		if (sum == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

 

6.计算求和

题目5
计算求和
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222

/*
思路:
通过观察可以发现,该表达式的第i项中有i个a数字,因此:
假设第i项为temp,则第i+1项为temp*10+a
具体参考以下代码
*/
//数字a的前n项之和
#include<stdio.h>
#include<math.h>
int main()
{
	int n = 0;
	int a = 0;
	scanf("%d %d",&a,&n);
	int count = 0;
	int i = 0;
	int k = 0;
	for (i = 0; i < n; i++)
	{
		 k = k * 10 + a;
		count += k;
	}
	printf("%d", count);
	return 0;
}

结构体

7.喝汽水问题

题目6
喝汽水问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。
/*
方法1:
1. 20元首先可以喝20瓶,此时手中有20个空瓶子
2. 两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余:
    empty/2(两个空瓶子换的喝完后产生的瓶子) + empty%2(不够换的瓶子)
3. 如果瓶子个数超过1个,可以继续换,即重复2
*/

// 方法2:
//按照上述喝水和用瓶子换的规则的话,
//可以发现,其实就是个等差数列:money*2-1
//方法1
#include<stdio.h>
int main()
{
	int money = 0;
	scanf("%d", &money);
	//喝的汽水的总个数
	int total = money;
	//空瓶
	int empty = money;
	while (empty > 1)
	{
		total = total + empty / 2;//总的=起始+空瓶个数
		empty = empty / 2+empty%2;//空瓶=起始/2+空瓶余数(易错)
	}
	printf("%d", total);
	return 0;
}
//方法2
#include<stdio.h>
int main()
{
	int money = 0;
	scanf("%d", &money);
	if(money>0)
	printf("%d", 2 * money - 1);//找规律
	return 0;
}

 

8.程序死循环解释

题目7
程序死循环解释
VS开发环境调试下面的代码,画图解释下面代码的问题

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    for(i=0; i<=12; i++)
    {
        arr[i] = 0;
        printf("hello bit\n");
    }
    return 0;
}

9.选择题总结tips 

指针

  • 在32位系统: int类型占4个字节,指针占4个字节,操作系统可以使用的最大内存空间是2^32
  • 在64位系统: int类型占4个字节,指针占8个字节,操作系统可以使用的最大内存空间是2^64
  • 32位系统下:int占4个字节,指针表示地址空间个数,总共有2^32个,故占4个字节

  • 64位系统下:int占4个字节,指针表示地址空间个数,总共有2^64个,故占8个字节

  • 指针+1等的计算,和指针类型有关。(arr+1/&arr[i])
  • 整型在内存存储,指针+1是以字节为单位,还需看大小端
  • (int a=0x11223344 \ int arr[]={1,2,3,4,5}指的是数组中每个整型元素,数组的存放仍是连续)
  • 一定要特别注意循环条件数组下标从0开始循环变量之间临界条件

下面代码的结果:

#include <stdio.h>
int main()
{
  int arr[] = {1,2,3,4,5};
  short *p = (short*)arr;
  int i = 0;
  for(i=0; i<4; i++)
  {
    *(p+i) = 0;
  }
   
  for(i=0; i<5; i++)
  {
    printf("%d ", arr[i]);
  }
  return 0;
}
//arr数组在内存中的存储格式为:
0x00ECFBF4:  01 00 00 00
0x00ECFBF8:  02 00 00 00
0x00ECFBFC:  03 00 00 00
0x00ECFC00:  04 00 00 00
0x00ECFC04:  05 00 00 00
指针p的类型为short*类型的,因此p每次只能所有两个字节,for循环对数组中内容进行修改时,一次访问的是:
arr[0]的低两个字节,arr[0]的高两个字节,arr[1]的低两个字节,arr[1]的高两个字节,故改变之后,数组中内容如下:
0x00ECFBF4:  00 00 00 00
0x00ECFBF8:  00 00 00 00
0x00ECFBFC:  03 00 00 00
0x00ECFC00:  04 00 00 00
0x00ECFC04:  05 00 00 00
故最后打印:0   0   3   4   5

下面程序段的输出结果为:

unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d,%d\n",*pulPtr, *(pulPtr + 3));
unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
 // 数组名代表数组首元素地址,因此pulptr指向的是数组中第一个元素的位置
*(pulPtr + 3) += 3;
 // pulptr+3访问的是数组中第三个元素(数组下标从0开始),故将9改为9+3=12
printf("%d,%d\n",*pulPtr, *(pulPtr + 3));
 // 打印第一个和第三个元素,因此:打印6和12

 

 在小端机器中,下面代码输出的结果是:

#include <stdio.h>
int main()
{
    int a = 0x11223344;
    char *pc = (char*)&a;
    *pc = 0;
    printf("%x\n", a);
    return 0;
}
//假设,a变量的地址为0x64,则a变量在内存中的模型为:
0x64| 44 |
0x65| 33 |
0x66| 22 |
0x67| 11 |

char*类型的指针变量pc指向只能指向字符类型的空间,
如果是非char类型的空间,必须要将该空间的地址强转为char*类型。
char *pc = (char*)&a; pc实际指向的是整形变量a的空间,
即pc的内容为0x64,即44,*pc=0,即将44位置中内容改为0,
修改完成之后,a中内容为:0x11223300

上面三道题的不同处就是:指针类型+1/+3等,根据指针类型来决定的。 

 数组中的元素是整形,一个整形元素的存放是由大小端存放 

 数组中的元素存放是连续。(见上图)

  • 二级指针指向的空间中存储的也是一个地址
  • 二级指针也是指针变量,是用来保存一级指针的地址
  • 数组的地址一般用一级指针存储,或者用数组指针接收
  •  二级指针是指针,二级指针的大小看系统32/64(4/8)
  • 整型指针+1,向后偏移一个整形类型的大小,即4个字节(指针+1看指针类型再决定偏移量)
  • 两个指针相减,指针必须指向一段连续空间,减完之后结构代表两个指针之间相差元素的个数
  • 整形指针指向一个整形空间,解引用操作访问4个字节
  • 指针中存储的是地址,地址可以看成一个数据,可以比较大小
  • 指针数组是一个数组,是存放指针的数组,该数组的每个元素是一个指针
  • 数组[ ]不写两种情况:数组必须初始化(根据初始化说明数组大小),函数传参(本质是指针)
  • 指针变量是用来存放地址的变量,存储一个地址,指向同类型的一块内存空间
  • 指针变量中存的有效地址可以唯一指向内存中的一块区域,一个指针变量中只能储存一个地址
  • 局部指针变量不初始化就是野指针,野指针不可以正常使用
  • 局部变量没有初始化里面就是随机值
  • 全局变量没有初始化里面就是0
  • 关于编程题_找规律
  • 注意临界条件
  • 注意不要是循环变量在循环体中发生变化
  • 进入while循环的条件

结构体

struct student
{
  int num;
  char name[32];
  float score;
}stu;
  • 在C语言中需要自定义类型时,要用到struct关键字(struct是结构体类型的关键字)
  • 在C语言中,用struct定义的结构体,定义结构体类型变量时,需要用struct student(是用户定义的结构体类型)
  •  结构体中变量的名称,称之为结构体的成员(num,score)
  • stu是定义的结构体类型变量,不是名称,如果想要让stu为结构体类型名称时,必须在结构体定义时添加   typedef 关键字(见结构体篇)

C语言之结构体篇_唐棣棣的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_74841364/article/details/132133064?spm=1001.2014.3001.5502

  • 结构体访问成员的操作符有: . 操作符 ->操作符 * 操作符
  • 结构体类型变量访问结构体中成员时,使用 . 操作符

  • 指向结构体类型变量的指针访问结构体中成员时,使用->操作符

  • 指向结构体类型变量的指针也可以通过 . 方式访问成员,只不过要先通过 * 对该指针解引用

  • 结构体指针

  • 结构体数组

 下面程序横线处填入:

#include < stdio.h >
struct S
{ 
  int a;
  int b; 
};
int main( )
{ 
  struct S a, *p=&a;
//struct S a;
//struct S*p=&a;结构体指针
  a.a = 99;
  printf( "%d\n", __________);
  return 0;
}
结构体类型变量需要访问其成员时,用.运算符,
如果是指向结构体变量的指针访问时,需要用->,
或者先对指针解引用,取到指向的结构体类型的变量,再通过.访问,
特别提醒:要注意优先级
//. 的优先级高于 *
  printf( "%d\n", a.a);
  printf( "%d\n", p->a);
  printf( "%d\n", (*p).a);

 下面程序的输出结果是:

struct stu
{
    int num;
    char name[10];
    int age;
};

void fun(struct stu *p)
{
	printf("%s\n",(*p).name);
	return;
}

int main()
{
	struct stu students[3] = 
{{9801,"zhang",20}, {9802,"wang",19},{9803,"zhao",18} };
   fun(students + 1);
	return 0;
}
在main函数中先定义了一个stu结构体类型的数组students,
students指向结构体的起始位置,
students+1 表示该数组中下标为 1 的元素,
因此fun的形参实际指向的是students数组中的第二个元素,
故打印的是wang

 

关于以上练习题,大家可以动手写一写。

新学期,少说话多做事。🙂🙂🙂不要忘记敲代码哦。

✔✔✔✔最后,感谢大家的阅读,若有错误和不足,欢迎指正!!

代码----------→【gitee:https://gitee.com/TSQXG】

联系----------→【邮箱:2784139418@qq.com】

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

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

相关文章

(超简单)将图片转换为ASCII字符图像

将一张图片转换为ASCII字符图像 原图&#xff1a; 效果图&#xff1a; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileWriter; import java.io.IOException;public class ImageToASCII {/*** 将图片转换为A…

dlopen “libnvcuvid.so“ failed!

在使用NVIDIA DALI库进行视频数据处理时&#xff0c;出现了以上打开libnvcuvid.so动态库错误的问题&#xff0c;如下图所示&#xff1a; libnvcuvid.so是使用CUDA进行硬编解码需要的一个库&#xff0c;使用NVIDIA DALI进行视频处理时会依赖它。 本人是在Docker容器中运行的程序…

Flink实时计算中台Kubernates功能改造点

背景 平台为数据开发人员提供基本的实时作业的管理功能,其中包括jar、sql等作业的在线开发;因此中台需要提供一个统一的SDK支持平台能够实现flink jar作业的发布;绝大多数情况下企业可能会考虑Flink On Yarn的这个发布模式,但是伴随云原生的呼声越来越大,一些企业不希望部…

肖sir__linux详解__002(系统命令)

linux系统命令 1、df 查看磁盘使用情况 &#xff08;1&#xff09;df 查看磁盘使用情况&#xff08;按kb单位显示&#xff09; &#xff08;2&#xff09;df -h 按单位显示磁盘使用情况 2、top 实时查看动态进程 &#xff08;1&#xff09;top 详解&#xff1a; 第一行&…

股票贷款行业,给你一个低成本有效的获客渠道

我们比市场上的同行公司具有更多的质量优势。我们的推广部门不断使用大数据引导和定位技术以及促销策略的迭代升级&#xff0c;具有足够强大的硬实力&#xff0c;可以引导客户提供更优质的投资者。为金融公司带来更好的资源。现在的股票加粉主要是&#xff1a;微信加粉/Q组/留电…

C语言:三子棋小游戏

简介&#xff1a; 目标很简单&#xff1a;实现一个 三子棋小游戏。三子棋大家都玩过&#xff0c;规则就不提及了。本博文中实现的三子棋在对局中&#xff0c;电脑落子是随机的&#xff0c;不具有智能性&#xff0c;玩家的落子位置使用键盘输入坐标。下面开始详细介绍如何实现一…

2023年王炸面试题每日一练--为什么会有精度的损失

基本数据类型中为什么会出现精度损失&#xff0c;怎么样会避免出现精度损失 loat 32位 出现精度损失的原因&#xff1a; 输入的值为十进制&#xff0c;而在计算的过程中&#xff0c;是要把十进制的小数位值在有限位的情况下转变为二进制的小数&#xff0c;就会出现精度的损失…

十一、MySQL(DQL)聚合函数

1、聚合函数 注意&#xff1a;在使用聚合函数时&#xff0c;所有的NULL是不参与运算的。 2、实际操作&#xff1a; &#xff08;1&#xff09;初始化表格 &#xff08;2&#xff09;统计该列数据的个数 基础语法&#xff1a; select count(字段名) from 表名; &#xff1b;统…

绿色光伏代步工具

太阳能是可再生能源&#xff0c;光线的来源是太阳&#xff0c;几乎不会枯竭。相比化石燃料等非可再生能源&#xff0c;太阳能的利用不会对资源造成耗竭和短缺问题&#xff0c;在现今社会中的文化&#xff0c;旅游层面&#xff0c;也已经得到充分的发展和拓展出多方面的应用模式…

JAVA 求最小公因数

JAVA 求最小公因数 文章目录 JAVA 求最小公因数方法一&#xff1a;枚举法的第一种方法一&#xff1a;枚举法的第二种方法二&#xff1a;展转相除法(欧几里德算法)方法三&#xff1a;递归拓展 求最小公倍数公式为 题目&#xff1a;任意输入两个整数&#xff0c;如何求他们的最大…

使用VisualStudio制作上位机(六)

文章目录 使用VisualStudio制作上位机&#xff08;六&#xff09;第五部分&#xff1a;应用程序打包第一步&#xff1a;勾选为Release模式第二步&#xff1a;生成解决方案第三步&#xff1a;将我们额外添加的文件放入到Release这个文件夹里 使用VisualStudio制作上位机&#xf…

400. 第 N 位数字

链接&#xff1a; ​​​​​​400. 第 N 位数字 题解&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 class Solution { public:int findNthDigit(int n) {int len1;//初始数字长度为1int base1;//初始范围为1~9while(n>(long)len…

ROS机器人编程ROS机器人编程---------(三)创建工作空间和功能包

创建工作空间和功能包 创建工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace编译工作空间 cd ~/catkin_ws/ catkin_make设置环境变量 source devel/setup.bash检查环境变量 echo $ROS_PACKAGE_PATH创建功能包 cd ~/catkin_ws/src catkin_crea…

【word密码】如何限制word文件中部分内容?

Word文件中有一部分内容不想他人编辑&#xff0c;我们可以设置限制编辑&#xff0c;可以对一部分内容设置限制编辑&#xff0c;具体方法如下&#xff1a; 我们将需要将可以编辑的地方选中&#xff0c;然后打开限制编辑功能 然后勾选限制编辑设置界面中的【限制编辑】和【每个人…

RT-Thread 中断管理学习(一)

中断管理 什么是中断&#xff1f;简单的解释就是系统正在处理某一个正常事件&#xff0c;忽然被另一个需要马上处理的紧急事件打断&#xff0c;系统转而处理这个紧急事件&#xff0c;待处理完毕&#xff0c;再恢复运行刚才被打断的事件。生活中&#xff0c;我们经常会遇到这样…

LDAP服务器如何重启

1、find / -name ldap 该命令只会从根路径下查看ldap文件夹 find / -name ldap2、该命令会从根路径/查看所有包含ldap路径的文件夹&#xff0c;会查询出所有&#xff0c;相当于全局查询 find / -name *ldap*2、启动OpenLADP 找到LDAP安装目录后&#xff0c;执行以下命令 #直…

Mysql主从服务安装配置

1.下载地址 MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/ 2.安装配置 1.下载解压后&#xff0c;拷贝一份作为slave的安装目录 3.配置my.ini 由于下载mysql8版本&#xff0c;解压后&#xff0c;没有相关的my…

每日一题-动态规划(从不同类型的物品中各挑选一个,使得最后花费总和等于1000)

四种类型的物品&#xff0c;每一种类型物品数量都是n&#xff0c;先要从每种类型的物品中挑选一件&#xff0c;使得最后花费总和等于1000 暴力做法10000^4 看到花费总和是1000&#xff0c;很小且固定的数字&#xff0c;肯定有玄机&#xff0c;从这里想应该是用dp&#xff0c;不…

数据库-DQL

DQL&#xff1a;用来查询数据库表中的记录 关键字&#xff1a;SELECT 语法&#xff1a; select&#xff1a;字段列表 from&#xff1a;表名列表 where&#xff1a;条件列表 group by&#xff1a;分组列表 having&#xff1a;分组后条件列表 order by&#xff1a;排序字段列表…

解决windows下安装python并终端运行python弹出windows商店的最终解决方案

最近在windows下安装了python&#xff0c;在终端中运行python命令的时候总是会弹出windows商店 为了解决这个问题&#xff0c;我修改系统的环境变量也一直不起作用&#xff0c;只有指定绝对路径时才能正常启动&#xff0c;这个问题困扰了我很长一段时间&#xff0c;后来了解到…