学习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

相关推荐
知识分享小能手6 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
茯苓gao9 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾9 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT9 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa10 小时前
HTML和CSS学习
前端·css·学习·html
看海天一色听风起雨落11 小时前
Python学习之装饰器
开发语言·python·学习
speop12 小时前
llm的一点学习笔记
笔记·学习
非凡ghost12 小时前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求
ue星空12 小时前
月2期学习笔记
学习·游戏·ue5
萧邀人12 小时前
第二课、熟悉Cocos Creator 编辑器界面
学习