学习c语言第24天(练习)

编程题

第一题 最大公约数最小公倍数求和

cs 复制代码
//求最大公约数和最小公倍数之和
//暴力求解
//int main()
//{
//	int n = 0;
//	int m = 0;
//	while (scanf("%d %d", &n, &m)==2)
//	{
//		int min = n < m ? n : m;
//		int max = n > m ? n : m;
//		int i = min;
//		int j = max;
//		while (1)
//		{
//			if (n % i == 0 && m % i == 0)
//			{
//				break;
//			}
//			i--;
//		}
//		//i是最大公约数
//		while (1)
//		{
//			if (j % n == 0 && j % m == 0)
//			{
//				break;
//			}
//			j++;
//		}
//		//j最小公倍数
//		printf("%d",i+j);
//	}
//	return 0;
//}

//辗转相除法
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d",&n,&m);
	int i = n;
	int j = m;
	int r = 0;
	while (r = i % j)
	{
		i = j;
		j = r;
	}
	//j为最大公约数
	printf("%d", m * n / j+j);
	return 0;
}

第二题 空心正方形

cs 复制代码
//空心正方形
int main()
{
	int n = 0;
	scanf("%d",&n);
	int i = 0;
	int j = 0;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			if (i == 0 || i == n - 1 || j == 0 || j == n - 1)
				printf("* ");
			else
				printf("  ");
		}
		printf("\n");
	}
	return 0;
}

第三题 offsetof

cs 复制代码
offsetof
offsetof(type,member )
该函数求结构体变量相对于首地址的偏移量
struct S
{
	char c1;
	int i;
	char c2;
};
int main()
{
	struct S s = { 0 };
	printf("%d\n",offsetof(struct S ,c1));
	return 0;
}
cs 复制代码
struct S
{
	char c1;
	int i;
	char c2;
};
#define OFFSETOF(type,m_name) (int)&(((type *)0)->m_name)//把0强制转换成结构体地址
int main()
{
	struct S s = { 0 };
	printf("%d\n", OFFSETOF(struct S, c1));
	printf("%d\n", OFFSETOF(struct S, i));
	printf("%d\n", OFFSETOF(struct S, c2));
	return 0;
}

第四题 箭形图案

cs 复制代码
int main()
{
	int n = 0;
	scanf("%d",&n);
	//上n行
	int i = 0;
	for (i = 0; i < n; i++)
	{
		int j = 0;
		for (j = 0; j < n-i; j++)
		{
			printf("  ");
		}
		for (j = 0; j <= i; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	for (i = 0; i < n+1; i++)
	{
		int j = 0;
		for (j = 0; j < i; j++)
		{
			printf("  ");
		}
		for (j = 0; j <n+1-i; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	//上n+1行
	return 0;
}

第五题 公务员面试

cs 复制代码
int main()
{
	int score = 0;
	int n = 0;
	int max = 0;
	int min = 100;
	int sum = 0;
	while (scanf("%d", &score) == 1)
	{
		n++;
		if (score > max)
			max = score;
		if (score < min)
			min = score;
		sum += score;
		if (n == 7)
		{
			printf("%.2lf\n",(sum - max - min) / 5.0);
			max = 0;
			min = 100;
			sum = 0;
		}
	}
	return 0;
}

第六题 改造通讯录2

cs 复制代码
//通讯录相关的测试
//动态版本
//通讯录默认存放三个人信息
//不够的话 每次增加两个人信息
#include "contact.h"
void menu()
{
	printf("**************************\n");
	printf("*****1.add****************\n");
	printf("*****2.del****************\n");
	printf("*****3.search*************\n");
	printf("*****4.modify*************\n");
	printf("*****5.show***************\n");
	printf("*****6.sort***************\n");
	printf("*****0.exit***************\n");
	printf("**************************\n");
}
int main()
{
	int input = 0;
	contact con;//通讯录
	//初始化通讯录
	initcontact(&con);
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			addcontact(&con);
			break;
		case 2:
			delcontact(&con);
			break;
		case 3:
			searchcontact(&con);
			break;
		case 4:
			modifycontact(&con);
			break;
		case 5:
			showcontact(&con);
			break;
		case 6:
			sortcontact(&con);
			break;
		case 0:
			destroycontact(&con);
			printf("退出通讯录\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);
	return 0;
}
cs 复制代码
//通讯录相关声明
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
#define DEFAULT_SZ 3
#define INC_SZ 2
#define MAX 100
#define	MAX_NAME 20
#define MAX_SEX 10
#define MAX_TELE 12
#define MAX_ADDR 30
//类型的声明
//人的信息
typedef struct people
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
}people;

//通讯录
//静态版本
//typedef struct contact
//{
//	people data[MAX];
//	int count;
//}contact;


//动态版本
typedef struct contact
{
	people * data;
	int count;
	int capacity;//当前通讯录的容量
}contact;




//初始化通讯录
void initcontact(contact* pc);
//销毁通讯录
void destroycontact(contact*pc);
//添加联系人
void addcontact(contact* pc);
//删除联系人
void delcontact(contact* pc);
//查找联系人
void searchcontact(const contact* pc);
//修改联系人
void modifycontact(contact* pc);
//打印通讯录的信息
void showcontact(const contact* pc);
//排序通讯录得内容
void sortcontact(contact* pc);
cs 复制代码
//通讯录相关的实现
#include "contact.h"

//通讯录初始化 
//静态版本
//void initcontact(contact* pc)
//{
//	assert(pc);
//	pc->count = 0;
//	memset(pc->data, 0, sizeof(pc->data));
//}

//动态版本
 void initcontact(contact* pc)
{
	assert(pc);
	pc->count = 0;
	pc->data = (people*)calloc(DEFAULT_SZ,sizeof(people));
	if (pc->data == NULL)
	{
		printf("initcontact:%s\n",strerror(errno));
	}
	pc->capacity = DEFAULT_SZ;
}
 //销毁通讯录
 void destroycontact(contact* pc)
 {
	 assert(pc);
	 free(pc->data);
	 pc->data = NULL;
 }


//增加联系人
 //静态版本
//void addcontact(contact* pc)
//{
//	assert(pc);
//	if (pc->count == MAX)
//	{
//		printf("通讯录已满,无法添加");
//		return;
//	}
//	//
//	printf("请输入名字");
//	scanf("%s", pc->data[pc->count].name);
//	printf("请输入年龄");
//	scanf("%d", &(pc->data[pc->count].age));
//	printf("请输入性别");
//	scanf("%s", pc->data[pc->count].sex);
//	printf("请输入电话");
//	scanf("%s", pc->data[pc->count].tele);
//	printf("请输入地址");
//	scanf("%s", pc->data[pc->count].addr);
//	pc->count++;
//	printf("增加成功\n");
//}

 //动态版本
 void checkcapacity(contact* pc)
 {
	 if (pc->count == pc->capacity)
	 {
		 people* ptr = (people*)realloc(pc->data, (pc->capacity + INC_SZ) * sizeof(people));
		 if (ptr == NULL)
		 {
			 printf("addcontact:%s\n", strerror(errno));
		 }
		 else
		 {
			 pc->data = ptr;
			 pc->capacity += INC_SZ;
			 printf("增容成功\n");
		 }
	 }
 }
 void addcontact(contact* pc)
 {
	 assert(pc);
	 //增容
	 checkcapacity(pc);
	 //
	 printf("请输入名字");
	 scanf("%s", pc->data[pc->count].name);
	 printf("请输入年龄");
	 scanf("%d", &(pc->data[pc->count].age));
	 printf("请输入性别");
	 scanf("%s", pc->data[pc->count].sex);
	 printf("请输入电话");
	 scanf("%s", pc->data[pc->count].tele);
	 printf("请输入地址");
	 scanf("%s", pc->data[pc->count].addr);
	 pc->count++;
	 printf("增加成功\n");
 }

//删除联系人
static int findbyname(contact* pc, char name[])
{
	assert(pc);
	int i = 0;
	for (i = 0; i < pc->count; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0)
			return i;
	}
	return -1;
}
void delcontact(contact* pc)
{
	assert(pc);
	int i = 0;
	if (pc->count == 0)
	{
		printf("通讯录为空,没有信息可以删除\n");
		return;
	}
	char name[MAX_NAME] = { 0 };
	printf("请输入要删除人的名字");
	scanf("%s", name);
	//删除
	//1.查找
	int pos = findbyname(pc, name);
	if (pos == -1)
	{
		printf("要删除的人不存在");
		return;
	}
	//2.删除
	for (i = pos; i < pc->count - 1; i++)
	{
		pc->data[i] = pc->data[i + 1];
	}
	pc->count--;
	printf("删除成功");
}

//查找联系人
void searchcontact(const contact* pc)
{
	assert(pc);
	char name[MAX_NAME] = { 0 };
	printf("请输入要查找人的名字");
	scanf("%s", name);
	//1.查找
	int pos = findbyname(pc, name);
	if (pos == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	else
	{
		printf("%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
		printf("%-20s\t%-5d\t%-5s\t%-12s\t%-30s\n",
			pc->data[pos].name,
			pc->data[pos].age,
			pc->data[pos].sex,
			pc->data[pos].tele,
			pc->data[pos].addr);
	}
}

//修改联系人
void modifycontact(contact* pc)
{
	assert(pc);
	char name[MAX_NAME] = { 0 };
	printf("请输入要修改人的名字");
	scanf("%s", name);
	//1.查找
	int pos = findbyname(pc, name);
	if (pos == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	//修改
	printf("请输入名字");
	scanf("%s", pc->data[pos].name);
	printf("请输入年龄");
	scanf("%d", &(pc->data[pos].age));
	printf("请输入性别");
	scanf("%s", pc->data[pos].sex);
	printf("请输入电话");
	scanf("%s", pc->data[pos].tele);
	printf("请输入地址");
	scanf("%s", pc->data[pos].addr);
	printf("修改成功\n");
}

//显示通讯录
void showcontact(const contact* pc)
{
	assert(pc);
	int i = 0;
	printf("%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
	for (i = 0; i < pc->count; i++)
	{
		printf("%-20s\t%-5d\t%-5s\t%-12s\t%-30s\n",
			pc->data[i].name,
			pc->data[i].age,
			pc->data[i].sex,
			pc->data[i].tele,
			pc->data[i].addr);
	}
}

//排序
int cmp_peo_by_name(const void* e1, const void* e2)
{
	return strcmp(((people*)e1)->name, ((people*)e2)->name);
}
void sortcontact(contact* pc)
{
	assert(pc);
	qsort(pc->data, pc->count, sizeof(people), cmp_peo_by_name);
	printf("排序成功\n");
}

第七题 找单身狗

cs 复制代码
//找单身狗
int find_single_num(int arr[], int sz, int* pd1, int* pd2)
{
	int i = 0;
	int ret = 0;
	//1.异或
	for (i = 0; i < sz; i++)
	{
		ret ^= arr[i];
	}
	//2.计算ret中最右边第几位是1
	int pos = 0;
	for (pos; pos < 32; pos++)
	{
		if (((ret >> pos) & 1) == 1)
		{
			break;
		}
	}
	for (i = 0; i < sz; i++)
	{
		if (((arr[i] >> pos) & 1) == 1)
		{
			*pd1 ^= arr[i];
		}
		else
		{
			*pd2 ^= arr[i];
		}
	}
}
int main()
{
	int arr[] = {1,2,3,4,5,1,2,3,4,6};
	int sz = sizeof(arr) / sizeof(arr[0]);
	int dog1 = 0;
	int dog2 = 0;
	find_single_num(arr, sz, &dog1, &dog2);
	printf("%d %d\n",dog1,dog2);
	return 0;
	//5^6  101 110-->011 把最低位为0的分成一组,把最低位为1的分成一组
	//分组
	//1.所有数字异或
	//2.找出异或的结果数字中哪一位为1--n
	//3.以第n位为0放一组,以第n位为1放一组
}

第八题 模拟实现atoi

cs 复制代码
atoi
int atoi (const char*str);
cs 复制代码
//模拟实现atoi
//1.空指针
//2.空字符串
//3.空格
//4.+-
//5.越界
//6.非数字字符
enum	Status
{
	VALID,//0
	INVALID//1
}sta=INVALID;
int my_atoi(const char* str)
{
	int flag = 1;
	assert(str);
	if (*str == '\n')
	{
		return  0;
	}
	//跳过空白字符
	while (isspace(*str))
	{
		str++;
	}
	//+-
	if (*str == '+')
	{
		flag = 1;
		str++;
	}
	else if (*str == '-')
	{
		flag = -1;
		str++;
	}
	//

	long long ret = 0;
	while (*str)
	{
		if (isdigit(*str))
		{
			ret = ret * 10 + flag * (*str - '0');
			if (ret > INT_MAX || ret < INT_MIN)
			{
				return 0;
			}
		}
		else
		{
			return ret;
		}
		str++;
	}
	if (*str == '\0')
	{
		sta = VALID;
	}
	return (int)ret;
}
int main()
{
	char arr[20] = "-123abc";
	int ret =my_atoi(arr);
	if (sta == INVALID)
	{
		printf("非法返回:%d\n",ret);
	}
	else if (sta == VALID)
	{
		printf("合法转换:%d\n",ret);
	}
	return 0;
}

第九题 改造通讯录3

cs 复制代码
//通讯录相关的测试
//动态版本
//通讯录默认存放三个人信息
//不够的话 每次增加两个人信息
#include "contact.h"
void menu()
{
	printf("**************************\n");
	printf("*****1.add****************\n");
	printf("*****2.del****************\n");
	printf("*****3.search*************\n");
	printf("*****4.modify*************\n");
	printf("*****5.show***************\n");
	printf("*****6.sort***************\n");
	printf("*****0.exit***************\n");
	printf("**************************\n");
}
int main()
{
	int input = 0;
	contact con;//通讯录
	//初始化通讯录
	initcontact(&con);
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			addcontact(&con);
			break;
		case 2:
			delcontact(&con);
			break;
		case 3:
			searchcontact(&con);
			break;
		case 4:
			modifycontact(&con);
			break;
		case 5:
			showcontact(&con);
			break;
		case 6:
			sortcontact(&con);
			break;
		case 0:
			savecontact( &con);
			destroycontact(&con);
			printf("退出通讯录\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);
	return 0;
}
cs 复制代码
//通讯录相关声明
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
#define DEFAULT_SZ 3
#define INC_SZ 2
#define MAX 100
#define	MAX_NAME 20
#define MAX_SEX 10
#define MAX_TELE 12
#define MAX_ADDR 30
//类型的声明
//人的信息
typedef struct people
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
}people;

//通讯录
//静态版本
//typedef struct contact
//{
//	people data[MAX];
//	int count;
//}contact;


//动态版本
typedef struct contact
{
	people* data;
	int count;
	int capacity;//当前通讯录的容量
}contact;




//初始化通讯录
void initcontact(contact* pc);
//销毁通讯录
void destroycontact(contact* pc);
//添加联系人
void addcontact(contact* pc);
//删除联系人
void delcontact(contact* pc);
//查找联系人
void searchcontact(const contact* pc);
//修改联系人
void modifycontact(contact* pc);
//打印通讯录的信息
void showcontact(const contact* pc);
//排序通讯录得内容
void sortcontact(contact* pc);
//保存通讯录的信息到文件
void savecontact(const contact* pc);
//加载文件信息到通讯录
void loadcontact(contact*pc);
cs 复制代码
//通讯录相关的实现
#include "contact.h"

//通讯录初始化 
//静态版本
//void initcontact(contact* pc)
//{
//	assert(pc);
//	pc->count = 0;
//	memset(pc->data, 0, sizeof(pc->data));
//}
void checkcapacity(contact* pc)
{
	if (pc->count == pc->capacity)
	{
		people* ptr = (people*)realloc(pc->data, (pc->capacity + INC_SZ) * sizeof(people));
		if (ptr == NULL)
		{
			printf("addcontact:%s\n", strerror(errno));
		}
		else
		{
			pc->data = ptr;
			pc->capacity += INC_SZ;
			printf("增容成功\n");
		}
	}
}

void loadcontact(contact* pc)
{
	FILE* pfread = fopen("contact.txt","rb");
	if (pfread == NULL)
	{
		perror("loadcontact");
		return;
	}
	people tmp = { 0 };
	while (fread(&tmp, sizeof(people), 1, pfread))
	{
		checkcapacity(pc);
		pc->data[pc->count] = tmp;
		pc->count++;
	}
	fclose(pfread);
	pfread = NULL;
}
//动态版本
void initcontact(contact* pc)
{
	assert(pc);
	pc->count = 0;
	pc->data = (people*)calloc(DEFAULT_SZ, sizeof(people));
	if (pc->data == NULL)
	{
		printf("initcontact:%s\n", strerror(errno));
	}
	pc->capacity = DEFAULT_SZ;
	//加载文件的信息到通讯录中
	loadcontact(pc);
}
//销毁通讯录
void destroycontact(contact* pc)
{
	assert(pc);
	free(pc->data);
	pc->data = NULL;
}


//增加联系人
 //静态版本
//void addcontact(contact* pc)
//{
//	assert(pc);
//	if (pc->count == MAX)
//	{
//		printf("通讯录已满,无法添加");
//		return;
//	}
//	//
//	printf("请输入名字");
//	scanf("%s", pc->data[pc->count].name);
//	printf("请输入年龄");
//	scanf("%d", &(pc->data[pc->count].age));
//	printf("请输入性别");
//	scanf("%s", pc->data[pc->count].sex);
//	printf("请输入电话");
//	scanf("%s", pc->data[pc->count].tele);
//	printf("请输入地址");
//	scanf("%s", pc->data[pc->count].addr);
//	pc->count++;
//	printf("增加成功\n");
//}

 //动态版本

void addcontact(contact* pc)
{
	assert(pc);
	//增容
	checkcapacity(pc);
	//
	printf("请输入名字");
	scanf("%s", pc->data[pc->count].name);
	printf("请输入年龄");
	scanf("%d", &(pc->data[pc->count].age));
	printf("请输入性别");
	scanf("%s", pc->data[pc->count].sex);
	printf("请输入电话");
	scanf("%s", pc->data[pc->count].tele);
	printf("请输入地址");
	scanf("%s", pc->data[pc->count].addr);
	pc->count++;
	printf("增加成功\n");
}

//删除联系人
static int findbyname(contact* pc, char name[])
{
	assert(pc);
	int i = 0;
	for (i = 0; i < pc->count; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0)
			return i;
	}
	return -1;
}
void delcontact(contact* pc)
{
	assert(pc);
	int i = 0;
	if (pc->count == 0)
	{
		printf("通讯录为空,没有信息可以删除\n");
		return;
	}
	char name[MAX_NAME] = { 0 };
	printf("请输入要删除人的名字");
	scanf("%s", name);
	//删除
	//1.查找
	int pos = findbyname(pc, name);
	if (pos == -1)
	{
		printf("要删除的人不存在");
		return;
	}
	//2.删除
	for (i = pos; i < pc->count - 1; i++)
	{
		pc->data[i] = pc->data[i + 1];
	}
	pc->count--;
	printf("删除成功");
}

//查找联系人
void searchcontact(const contact* pc)
{
	assert(pc);
	char name[MAX_NAME] = { 0 };
	printf("请输入要查找人的名字");
	scanf("%s", name);
	//1.查找
	int pos = findbyname(pc, name);
	if (pos == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	else
	{
		printf("%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
		printf("%-20s\t%-5d\t%-5s\t%-12s\t%-30s\n",
			pc->data[pos].name,
			pc->data[pos].age,
			pc->data[pos].sex,
			pc->data[pos].tele,
			pc->data[pos].addr);
	}
}

//修改联系人
void modifycontact(contact* pc)
{
	assert(pc);
	char name[MAX_NAME] = { 0 };
	printf("请输入要修改人的名字");
	scanf("%s", name);
	//1.查找
	int pos = findbyname(pc, name);
	if (pos == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	//修改
	printf("请输入名字");
	scanf("%s", pc->data[pos].name);
	printf("请输入年龄");
	scanf("%d", &(pc->data[pos].age));
	printf("请输入性别");
	scanf("%s", pc->data[pos].sex);
	printf("请输入电话");
	scanf("%s", pc->data[pos].tele);
	printf("请输入地址");
	scanf("%s", pc->data[pos].addr);
	printf("修改成功\n");
}

//显示通讯录
void showcontact(const contact* pc)
{
	assert(pc);
	int i = 0;
	printf("%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
	for (i = 0; i < pc->count; i++)
	{
		printf("%-20s\t%-5d\t%-5s\t%-12s\t%-30s\n",
			pc->data[i].name,
			pc->data[i].age,
			pc->data[i].sex,
			pc->data[i].tele,
			pc->data[i].addr);
	}
}

//排序
int cmp_peo_by_name(const void* e1, const void* e2)
{
	return strcmp(((people*)e1)->name, ((people*)e2)->name);
}
void sortcontact(contact* pc)
{
	assert(pc);
	qsort(pc->data, pc->count, sizeof(people), cmp_peo_by_name);
	printf("排序成功\n");
}

//保存通讯录到文件
void savecontact(const contact* pc)
{
	assert(pc);
	FILE* pfwrite = fopen("contact.txt", "wb");
	if (pfwrite==NULL)
	{
		perror("savecontact");
		return;
	}

	//写文件-二进制形式
	int i = 0;
	for (i = 0; i < pc->count; i++)
	{
		fwrite(pc->data+i,sizeof(people),1,pfwrite);
	}
	fclose(pfwrite);
	pfwrite = NULL;
}

第十题 交换奇偶位

cs 复制代码
//写一个宏,将整数二进制位的奇数位和偶数位交换
把所有偶数位提出来(&10101010101010101010101010101010,就是0xaaaaaaaa)
然后右移1,就到了偶数位
奇数位换到偶数位,也一样

#define SWAP_BIT(n) (((n&0x55555555)<<1)+((n&0xaaaaaaaa)>>1))
int main()
{
	int a = 0;
	scanf("%d",&a);
	SWAP_BIT(a);
	printf("%d", SWAP_BIT(a));
	return 0;
}

选择题

第一题 16 12

第二题 12 12 16

第三题 D

第四题 02 29 00 00

第五题 C

第六题 16

第七题 38 39

第八题 D

第九题 1 257

第十题 D

第十一题 B

第十二题 A

第十三题 A

第十四题 C

第十五题 C

第十六题 C

第十七题 B

第十八题 B

第十九题 B

第二十题 D

第二十一题 D

第二十二题 D

第二十三题 A

第二十四题 C

第二十五题 b

第二十六题 A

第二十七题 A

第二十八题 D

第二十九题 B

第三十题 C

第三十一题 B

第三十二题 D

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms6 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下6 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。6 天前
2026.2.25监控学习
学习
im_AMBER6 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J6 天前
从“Hello World“ 开始 C++
c语言·c++·学习