通讯录的实现(详解)

个人硬件测试用例入门设计 📑打牌 :🌤️个人专栏 :☁️宝剑锋从磨砺出,梅花香自苦寒来。 阅读详情

本篇博客将为大家带来通讯录的实现!!!

目录

通讯录的基本介绍:

 通讯录的实现过程:

1.设计通讯录的目录

2.基础菜单的实现:

3.定义人的信息

4.定义通讯录的信息

5.创建通讯录并且初始化

6.添加联系人的信息

7.显示通讯录的信息

8.删除联系人的信息

9.查找联系人的信息

10.修改联系人的信息

11.排序联系人的信息—按名字排序

完整代码展现:

test.c:

contact.c:

contact.h:

结语:


通讯录的基本介绍:

记录一个人的基本信息,并且需要它可以实现增删查改等功能;

可以保存100个人的信息                                    人的信息:

        1.添加联系人信息;                                    名字

        2.删除联系人信息;                                    年龄

        3.查找联系人信息;                                    性别

        4.修改联系人信息;                                    电话

        5.显示联系人信息;                                    地址

        6.排序联系人信息;

        0.退出程序 

     


 通讯录的实现过程:

建议:实现之前我们可以分成三个模块

test.c用于专门测试通讯录功能

contact.c用于实现通讯录具体功能

contact.h用于实现接口的声明

1.设计通讯录的目录

void menu()
{
	printf("******************************************\n");
	printf("*****      1.add          2.del       ****\n");
	printf("*****      3.search       4.modify    ****\n");
	printf("*****      5.show         6.sort      ****\n");
	printf("*****            0.  exit             ****\n");
	printf("******************************************\n");

}

2.基础菜单的实现:

#include <stdio.h>
void menu()
{
	printf("******************************************\n");
	printf("*****      1.add          2.del       ****\n");
	printf("*****      3.search       4.modify    ****\n");
	printf("*****      5.show         6.sort      ****\n");
	printf("*****            0.  exit             ****\n");
	printf("******************************************\n");

}
enum
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	SORT
};
int main()
{
	int input = 0;
	do
	{
		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			break;
		case DEL:
			break;
		case SEARCH:
			break;
		case MODIFY:
			break;
		case SHOW:
			break;
		case SORT:
			break;
		case EXIT:
			printf("退出通讯录\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
	} while (input);
	return 0;
}

3.定义人的信息

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30



//定义人的信息
typedef struct PeoInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char tele[TELE_MAX];
	char addr[ADDR_MAX];
}PeoInfo;

4.定义通讯录的信息

#define MAX 100
typedef struct Contact
{
	PeoInfo data[MAX];//存放数据
	int sz;//记录的时当前通讯录中存放的人的信息个数
}Contact;

5.创建通讯录并且初始化

通讯录的信息已经在contact.h定义好,我们需要在test.c创建并且给它初始化

void InitContact(Contact* con)
{
    assert(con);
	con->sz = 0;
	memset(con->data, 0, sizeof(con->data));

}

 现在已经全部初始化为0 如果不初始化将会是随机值

注:实现过程都是在contact.c中的文件实现

6.添加联系人的信息

void ADDContact(Contact* con)
{
	assert(con);
	//判断一下通讯录是否满了
	if (con->sz == MAX)
	{
		printf("通讯录已满,无法添加\n");
		return ;
	}
	printf("请输入联系人名字\n");
	scanf("%s", con->data->name);
	printf("请输入联系人年龄\n");
	scanf("%d", &(con->data->age));
	printf("请输入联系人性别\n");
	scanf("%s", con->data->sex);
	printf("请输入联系人电话\n");
	scanf("%s", con->data->tele);
	printf("请输入联系人地址\n");
	scanf("%s", con->data->addr);
	
	con->sz++;
	printf("添加完成\n");

}

7.显示通讯录的信息

既然已经完成了添加联系人的信息了,我们可以显示一下到底输入了什么

void SHOWContact(Contact* con)
{
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录无内容\n");
		return;
	}
	printf("%-20s%-5s%-5s%-12s%-30s\n", "姓名", "年龄", "性别", "电话", "地址");
	int i;
	for (i = 0; i < con->sz; i++)
	{
		printf("%-20s%-5d%-5s%-12s%-30s\n",con->data[i].name, 
			                      con->data[i].age,
			                      con->data[i].sex, 
			                      con->data[i].tele,
			                      con->data[i].addr);
	}

}

8.删除联系人的信息

int Fing_by_name(Contact* con, char* name)
{
	assert(con);
	int i;
	for (i = 0; i < con->sz; i++)
	{
		if (strcmp(con->data[i].name, name) == 0)
		{
			return i;

		}
	}
	return -1;
}

void DELContact(Contact* con)
{
	char name[NAME_MAX];
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录为空,无法删除\n");
		return ;
	}
	printf("请输入你想删除联系人的名字:\n");
	scanf("%s", name);
	// 查找通讯录里有没有该名字
	int ret=Fing_by_name(con, name);
	if (ret == -1)
	{
		printf("要删除的人不存在\n");
		return ;
	}
	//否则返回他的下标  
	//思路: 因为要删除这一行信息 所以直接让后面的信息往前挪一个信息即可
	int i;
	for (i = ret; i < con->sz - 1; i++)
	{
		con->data[i] = con->data[i + 1];
	}
	con->sz--;
	printf("删除成功\n");
}

不懂的可以看里面的注释,这个先要写一个查找函数,在删除

9.查找联系人的信息

void SEARCHContact(Contact* con)
{

	char name[NAME_MAX];
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录为空,无法查找\n");
		return;
	}
	printf("请输入你想查找联系人的名字:\n");
	scanf("%s", name);
	int ret = Fing_by_name(con, name);
	if (ret == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	printf("%-20s%-5d%-5s%-12s%-30s\n", con->data[ret].name,
		con->data[ret].age,
		con->data[ret].sex,
		con->data[ret].tele,
		con->data[ret].addr);
}

思路很简单了 ,先查找出来 再打印出来

10.修改联系人的信息

void MODIFYContact(Contact* con)
{
	char name[NAME_MAX];
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录为空,无法修改\n");
		return;
	}
	printf("请输入你想修改联系人的名字:\n");
	scanf("%s", name);
	int ret = Fing_by_name(con, name);
	if (ret == -1)
	{
		printf("要修改的人不存在\n");
		return;
	}
	printf("请输入联系人名字:");
	scanf("%s", con->data[ret].name);
	printf("请输入联系人年龄:");
	scanf("%d", &(con->data[ret].age));
	printf("请输入联系人性别:");
	scanf("%s", con->data[ret].sex);
	printf("请输入联系人电话:");
	scanf("%s", con->data[ret].tele);
	printf("请输入联系人地址:");
	scanf("%s", con->data[ret].addr);
	printf("修改完成\n");
}

先查找到改信息 在重新输入

11.排序联系人的信息—按名字排序

int cmp_by_name(const void* e1, const void* e2)
{
	return strcmp(   ((PeoInfo*)e1)->name  , ((PeoInfo*)e2)->name);
}
void SORTContact(Contact* con)
{
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录为空,无法排序\n");
		return;
	}
	qsort(con->data, con->sz, sizeof(con->data[0]), cmp_by_name);
	printf("排序完成\n");
}

 这里要运用的qosrt函数,不会的可以看我之前的文章有介绍,很好实现的


完整代码展现:

test.c:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include "contact.h"
void menu()
{
	printf("******************************************\n");
	printf("*****      1.add          2.del       ****\n");
	printf("*****      3.search       4.modify    ****\n");
	printf("*****      5.show         6.sort      ****\n");
	printf("*****            0.  exit             ****\n");
	printf("******************************************\n");

}
enum
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	SORT
};
int main()
{
	int input = 0;
	
	//创建通讯录
	Contact con;
	//初始化通讯录
	InitContact(&con);

	do
	{

		menu();
		printf("请输入:>");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			ADDContact(&con);
			break;
		case DEL:
			DELContact(&con);
			break;
		case SEARCH:
			SEARCHContact(&con);
			break;
		case MODIFY:
			MODIFYContact(&con);
			break;
		case SHOW:
			SHOWContact(&con);
			break;
		case SORT:
			SORTContact(&con);
			break;
		case EXIT:
			printf("退出通讯录\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
	} while (input);
	return 0;
}

contact.c:

#include "contact.h"
void InitContact(Contact* con)
{
	assert(con);
	con->sz = 0;
	memset(con->data, 0, sizeof(con->data));

}


void ADDContact(Contact* con)
{
	assert(con);
	//判断一下通讯录是否满了
	if (con->sz == MAX)
	{
		printf("通讯录已满,无法添加\n");
		return ;
	}
	printf("请输入联系人名字:");
	scanf("%s", con->data[con->sz].name);
	printf("请输入联系人年龄:");
	scanf("%d", &(con->data[con->sz].age));
	printf("请输入联系人性别:");
	scanf("%s", con->data[con->sz].sex);
	printf("请输入联系人电话:");
	scanf("%s", con->data[con->sz].tele);
	printf("请输入联系人地址:");
	scanf("%s", con->data[con->sz].addr);
	
	con->sz++;
	printf("添加完成\n");

}



void SHOWContact(Contact* con)
{
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录无内容\n");
		return;
	}
	printf("%-20s%-5s%-5s%-12s%-30s\n", "姓名", "年龄", "性别", "电话", "地址");
	int i;
	for (i = 0; i < con->sz; i++)
	{
		printf("%-20s%-5d%-5s%-12s%-30s\n",con->data[i].name, 
			                      con->data[i].age,
			                      con->data[i].sex, 
			                      con->data[i].tele,
			                      con->data[i].addr);
	}

}

int  Fing_by_name(Contact* con, char* name)
{
	assert(con);
	int i;
	for (i = 0; i < con->sz; i++)
	{
		if (strcmp(con->data[i].name, name) == 0)
		{
			return i;

		}
	}
	return -1;
}

void DELContact(Contact* con)
{
	char name[NAME_MAX];
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录为空,无法删除\n");
		return ;
	}
	printf("请输入你想删除联系人的名字:\n");
	scanf("%s", name);
	// 查找通讯录里有没有该名字
	int ret=Fing_by_name(con, name);
	if (ret == -1)
	{
		printf("要删除的人不存在\n");
		return ;
	}
	//否则返回他的下标  
	//思路: 因为要删除这一行信息 所以直接让后面的信息往前挪一个信息即可
	int i;
	for (i = ret; i < con->sz - 1; i++)
	{
		con->data[i] = con->data[i + 1];
	}
	con->sz--;
	printf("删除成功\n");
}



void SEARCHContact(Contact* con)
{

	char name[NAME_MAX];
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录为空,无法查找\n");
		return;
	}
	printf("请输入你想查找联系人的名字:\n");
	scanf("%s", name);
	int ret = Fing_by_name(con, name);
	if (ret == -1)
	{
		printf("要查找的人不存在\n");
		return;
	}
	printf("%-20s%-5d%-5s%-12s%-30s\n", con->data[ret].name,
		con->data[ret].age,
		con->data[ret].sex,
		con->data[ret].tele,
		con->data[ret].addr);
	printf("查找完成");
}



void MODIFYContact(Contact* con)
{
	char name[NAME_MAX];
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录为空,无法修改\n");
		return;
	}
	printf("请输入你想修改联系人的名字:\n");
	scanf("%s", name);
	int ret = Fing_by_name(con, name);
	if (ret == -1)
	{
		printf("要修改的人不存在\n");
		return;
	}
	printf("请输入联系人名字:");
	scanf("%s", con->data[ret].name);
	printf("请输入联系人年龄:");
	scanf("%d", &(con->data[ret].age));
	printf("请输入联系人性别:");
	scanf("%s", con->data[ret].sex);
	printf("请输入联系人电话:");
	scanf("%s", con->data[ret].tele);
	printf("请输入联系人地址:");
	scanf("%s", con->data[ret].addr);
	printf("修改完成\n");
}

int cmp_by_name(const void* e1, const void* e2)
{
	return strcmp(   ((PeoInfo*)e1)->name  , ((PeoInfo*)e2)->name);
}
void SORTContact(Contact* con)
{
	assert(con);
	if (con->sz == 0)
	{
		printf("通讯录为空,无法排序\n");
		return;
	}
	qsort(con->data, con->sz, sizeof(con->data[0]), cmp_by_name);
	printf("排序完成\n");
}

contact.h:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <stdlib.h>

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30
#define MAX 100



//定义人的信息
typedef struct PeoInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char tele[TELE_MAX];
	char addr[ADDR_MAX];
}PeoInfo;

typedef struct Contact
{
	PeoInfo data[MAX];//存放数据
	int sz;//记录的时当前通讯录中存放的人的信息个数
}Contact;


//初始化通讯录
void InitContact(Contact* con);

//添加联系人的信息
void ADDContact(Contact* con);

//显示通讯录的信息
void SHOWContact(Contact* con);


//删除联系人的信息
void DELContact(Contact* con);


//查找联系人的信息
void SEARCHContact(Contact* con);


//修改联系人的信息
void MODIFYContact(Contact* con);


//排序联系人的信息-按名字
void SORTContact(Contact* con);

结语:

首先非常感谢大家的观看,这只是一个初步的通讯录,它还可以进阶实现

这个通讯录还存在很多缺陷:

1.它不能保存完成,一旦退出就消失了

2.它至少固定的大小,我们只开创了100个联系人,万一少于联系人,这个就浪费了很多的空间

所以下次我们会使用动态内存管理,可以自由开辟内存,就不会有浪费或不够。

Android 通讯录功能详解与实现 是 Android 中用于装饰的组件,可以用来添加分割线、间隔、分类标题等。它的工作原理是通过在的项目之间绘制自定义的图形。开发者通常通过重写onDraw和方法来自定义装饰效果。onDraw方法允许开发者在的内容上绘制任何东西,而方法允许我们为每个item提供额外的间隔。要实现自定义的,首先需要创建一个继承自的类。然后重写onDraw方法来绘制装饰元素,例如分类标题。重写方法以提供布局偏移量,确保装饰不会遮挡内容。此外,还可以用来绘制间隔线。 阅读详情

相关推荐

面试题目_手机通讯录测试

有关测试方面的面试题,手机测试经常是软件测试方面经常提到的问题。

手机测试用例-电话本测试用例

Software Test Case ID 功能描述 操作步骤 预期结果 备注 PB主屏和菜单功能测试: PB-001 “返回”键的使用 1、在电话簿主界面直接点击“返回”键 1、返回到进入PB之前的界面 PB-002 菜单键及其功能列表的测试 1、在电话簿主界面直接菜单键 2、弹出菜单列表“查找、新增、删除、复制、修改、设置、检查容量” 1、...

diaoyan8751的博客 2602

手机通讯录测试点

详细描述了手机通讯录的各种测试方法和测试点。

通讯录(详解)

通讯录 功能: 1、保存1000个联系人的信息 2、增加新的联系人 3、删除联系人的信息 4、修改联系人的信息 5、查找一个联系人 6、对联系人进行一个排序 7、打印联系人信息 联系人信息包含 姓名 性别 年龄 电话 地址 实现 在这里实现通讯录用三个模块 test.c--------------------测试通讯录的功能 contact.h---------------通讯录的实现(接口的声明) contact.c---------------通讯录的实现(接口的实现)

liar________的博客 1625

STM32 移植LwIP 实现网线插拔自动恢复

STM32 移植LwIP 之后,能正常联网通讯,但是发现2个问题, 1、上电初始化前,未插入网线,之后就无法获取到IP地址(DHCP) 2、正常通讯过程中,拔掉网线,然后插回去,不知道如何复位 先看一下LWIP初始化代码 /** * LwIP initialization function */ int MX_LWIP_Init() { /* Initilialize the LwIP stack with RTOS */ tcpip_init( NULL, NULL );

tiantangmoke的博客 8073

408——计算机组成原理(持续更新)

小数点前的0代表正数,1代表负数。

qq_55202378的博客 1720

软件测试--详细判断电话号码

软件测试--详细判断电话号码个人编写整理笔记

忆~遂愿的博客 4107

论文笔记:基于对比学习的半监督分类学习方法

论文阅读笔记_CCSSL

weixin_46224126的博客 3312

软件测试(二)--测试用例

测试用例就是为测试项目设计的执行文档。测试按照文档走。测试用例的作用:1、防止漏测;2、实施测试的标准。1、判定表中贯穿条件项和动作项的一列就是一条规则2、假设有n个条件,每个条件的取值有两个(0,1)全组合有2的n次方种规则。是一种以表格形式表达多条件逻辑判断的工具;组成:1、条件桩:列出问题中所有条件,次序无关紧要;2、动作桩:列出问题中可能采取的操作,操作的排列顺序没有约束;3、条件项:列出条件对应的取值,所有可能情况下的真假;

m0_57297999的博客 1462

Kerberos基础及KDC服务(理论知识)

kerberos基础理论讲解+KDC服务

Siobhan_Mxin的博客 9710

死磕GMSSL通信-java/Netty系列(二)

Netty-tcnative再linux编译比较好编译,但是再window编译,我尝试了各种办法,总是编译失败,所以我采用半自动的方式进行编译,Netty-tcnative会生成临时文件,直接用vs打开,设置openssl的头文件和静态库路径,然后生成静态库,静态库改个名字放到jar包里边,其实自动编译也是这个原理哈哈O(∩_∩)O。直接传输五个证书的路径吗,之前有的是说要转成x509之类的,转来转去的有点麻烦,这个是直接传输证书路径,由底层gmssl去解析,格式必须是pem格式。然而,若项目已依赖于。

qq_36577699的博客 3024

《通讯录》思路及代码实现详解

打印一个菜单,提供用户选择功能;添加联系人信息;删除联系人信息;查询联系人信息;修改联系人信息;显示所有联系人信息;对所有联系人信息进行排序整理;删除所有联系人信息;操作完毕可选择退出。这些就是实现的通讯录的整体细节与模板,具体每个功能的具体实现思路及细节我们我会给大家一一实现与讲解。思路及代码均有。

weixin_67596609的博客 3251

手把手教你解决COLMAP编译中的Ceres CUDA支持问题(附详细配置步骤)

本文详细解析了COLMAP编译中Ceres CUDA支持问题的完整解决方案,包括环境准备、Ceres Solver的CUDA编译配置、COLMAP的CUDA集成配置等关键步骤。通过优化CMake参数和解决常见错误,帮助技术人员充分利用GPU加速优势,提升三维重建效率。

vodka的博客 858

【C语言】- 通讯录实现详解

今天向大家介绍一个利用C语言实现通讯录的过程。 通讯录相信大家都听说过,存放一个人的信息,用来方便联系。下图为我们即将实现通讯录的功能: 图中已经描述的很清楚了,这个通讯录的容量为1000,所录入的信息包括名字、电话、地址、QQ、性别和年龄这五个部分。该通讯录有7个功能,增加、删除、查找、修改、排序、展示和退出。下面就来介绍用C语言来实现的过程。 首先我们还是在一个项目中创建三个文件,两个源文件,一个文件存放主函数,一个文件来存放通讯录的实现函数,还有一个头文件来声明函数。 声明模块 接下来我们来看头文件

折木的博客 3957

Unreal5从入门到精通之一文搞懂Unreal的C++代码编译之谜

我们在开发Unreal项目时,如果时蓝图模板的项目,一般问题不大,因为当你修改完蓝图,点击编译Compile+保存Save,就可以继续开发了。这对于开发者来说也非常友好。但是,如果你使用的C++模板开发项目,代码编译一切都变得魔幻起来,IDE(VS/Rider)里面有编译,编辑器里面也有编译,有什么区别呢?我们来列举几个新手常碰到的问题。1.代码我明明新建了,编辑器里怎么看不到?2.昨天我新家的功能运行的好好的,今天怎么感觉还是老逻辑。或者昨天加的新代码,新蓝图不见了。

TxNet 1601

飞牛NAS系统盘占用过高排查与解决全记录(已有效解决)

📢NAS弹出系统盘占用过高预警?别慌!亲测解决全流程来啦~ 精准定位根源+安全迁移数据,附详细实操步骤,帮同款困扰的你高效释空间、少走弯路!

XiaoqiangClub的博客 3097

C语言实现简单的通讯录 (详解)

有三个文件,分别是Contact.h, Contact.c, test.c,Contact.h用写函数的声明Contact.c用来写函数的定义test.c用来测试代码模块的实现首先我的得分析通讯录的结构:有一个数组可以存放1000的人的信息说明这个数组是一个结构体类型的数组。我们先实现静态版本的通讯录。然后在做优化。

m0_63207201的博客 2756

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

超详解通讯录,保姆式教学 ,轻松学会实现通讯录的功能【c语言】

关于通讯录的实现 ,可扩容式通讯录

qq_2972806103的博客 2102

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【C语言】实现通讯录(详解)

通讯录的各大功能,详细图解

qq_27183803的博客 5594

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c语言实现通讯录(详解)

通讯录的信息有了,接下来我们就需要的告诉用户使用我们通讯录的时候是怎样操作的,我们这里给上一个menu的菜单莱提示用户怎样进行操作,然后就是根据菜单的提升输入内容,然后我们就可以根据用户输入的内容来实现我们对应的功能。接下来我们要确定通过什么方式来找到结构体中对应的这个元素,假如我们就用名字的方法来删除所对应的元素,我们可以定义一个name变量,然后通过遍历这个结构体来找,如果找到了我们就把后面的数依次往前拿,如果遍历完都没有找到这个名字,那么就说明这个联系人不存在我们的通讯录。...

Trustmeican的博客 9116

【C语言】通讯录的实现(详解)

主要用到的知识:1.结构体相关知识2.枚举3.多文件在学习完结构体和枚举后就可以利用学过的知识去实现一个通讯录了。

2301_80151382的博客 3099

C语言详解【通讯录的实现】

通讯录的实现-C语言详解

m0_56069910的博客 628

动态顺序表实现通讯录代码(详解)

基于动态顺序表实现通讯录项目顺序表的每个数据都是一个结构体也就是每个联系人信息。

的博客 995

C语言简单实现通讯录(详解)

保姆级c语言实现通讯录

weixin_63246738的博客 899

数据结构:通讯录(顺序表的应用)的实现详解

,然后在这个顺序表结构体中我们就可以很明显的看到我们将这个顺序表结构体类型作用为一个已知的类型并且定义了一个数组arr作为顺序表结构体的一个组员,由此可知,一个。

2403_87691282的博客 1404
上一篇: 指针和数组笔试题深度解析
下一篇: 动态内存管理
评论 70
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值